type storing library images imagenes data bsontype mongodb sharding gridfs

library - storing images in mongodb



Sharding GridFS en MongoDB (3)

Actualmente, MongoDB a partir de la versión 1.8.1 solo admite fragmentación en el campo "file_id", debido a que usa md5 para verificar la carga, pero aún no funciona en todos los fragmentos. Entonces no puedes dividir un solo archivo en fragmentos. Respuesta en google group 7

Estoy documentando sobre GridFS y la posibilidad de fragmentarlo entre diferentes máquinas.

Al leer la documentación aquí , la clave de fragmento sugerida es chunks.files_id. Esta clave se vinculará a _id de la colección de archivos, por lo tanto, este _id es incremental. Cada nuevo archivo que guarde en la Grilla tendrá un nuevo _id incremental.

En el libro "Scaling MongoDB" de O''Reilly, se desaconseja el uso de una clave de fragmento incremental para evitar HotSpots (el último fragmento recibirá toda la escritura y la lectura).

¿Cuál es su sugerencia para fragmentar la colección GridFS?
¿Alguien ha experimentado el problema HotSpot?

gracias.


Deberías hacer files_id en files_id para mantener juntos los fragmentos de archivos, pero estás en lo correcto de que eso creará un punto de acceso. Si puede, use algo que no sea ObjectId para _id s en la colección fs.files (probablemente MD5 sería mejor que ObjectIds).

Vamos a agregar hashing para sharding, lo que resolverá esto, pero no hasta al menos 2.0.


Puede fragmentar los datos de gridfs porque gridfs solo dos recopilaciones: fragmentos y archivos. Y la fusión de gridfs es algo muy útil y grandioso. Acerca de la clave de fragmento de gridfs, siempre es malo elegir la clave de fragmento aleatorio o incremental, porque los datos no se distribuyen uniformemente entre los fragmentos. En el caso de la clave de fragmento incremental, todas las escrituras van al último fragmento y su crecimiento, y una vez que la diferencia se convierta en 10 o más fragmentos, el equilibrador moverá los datos a otros fragmentos. Mover los datos a otro fragmento siempre es una tarea difícil que debe evitarse en la medida de lo posible.
Entonces, cuando eliges la clave shard, debes preocuparte por la distribución uniforme de los datos.
Además, si obtienes la suerte, el autor de mb '' Scaling MongoDB '' kristina (gran especialista en llaves shard) responderá a tu pregunta.
La documentación dice que, en casos comunes, debe elegir el índice de fileId:1,n:1 predeterminado fileId:1,n:1 como clave de fragmento:

Hay diferentes formas en que GridFS puede ser fragmentado, dependiendo de la necesidad. Una forma común de fragmentar, basada en índices preexistentes, es:

La colección de "archivos" no está fragmentada. Todos los registros de archivos vivirán en 1 fragmento. Se recomienda encarecidamente hacer que la colección de "fragmentos" muy flexible (al menos 3 conjuntos de réplicas de nodos) se fragmente utilizando el índice existente "files_id: 1, n: 1". Algunos archivos al final de los rangos pueden tener sus fragmentos divididos en fragmentos, pero la mayoría de los archivos estarán totalmente contenidos dentro del mismo fragmento.