Parece que el fragmentación de la base de datos es excelente si tengo grandes colecciones. ¿Qué pasa si tengo muchas colecciones de tamaño considerable? Digamos que para 1 colección de 100 000 000 de documentos (comentarios no muy grandes) el fragmentación es efectivo. ¿También es efectivo para 10 000 colecciones con 10 000 documentos cada una?
(Creo que esta pregunta sigue siendo válida para bases de datos orientadas a tablas si reemplaza colecciones con tablas y documentos con filas. Si es posible, me gustaría saber la respuesta teórica, así como la respuesta en el escenario específico de MongoDB, si es diferente de la teórica responder.)
foo
ybar
con la misma estructura de datos, puede combinarlos en labaz
recogida y anular el_ids
(en código):{ _id: "foo123" }, { _id: "bar123" }
. Tiene un índice más grande, pero solo tiene un índice que incluye el tipo. No es un requisito, solo "alimento para el pensamiento".El fragmentación de MongoDB funciona al dividir una colección en "fragmentos" más pequeños y distribuirlos uniformemente en varias máquinas. El tamaño de fragmento predeterminado, que generalmente es el más eficiente, es de 200 MB. Entonces, a menos que una colección crezca mucho más de 200 MB, no se dividirá en trozos y, por lo tanto, no será elegible para fragmentación, por lo que no habrá beneficios.
En el caso general, compartir datos en varias máquinas es una forma muy efectiva de escalar lecturas, escrituras y consultas. Obtiene los beneficios de múltiples CPU, discos duros y almacenamiento de memoria, trabajando en paralelo para leer, escribir y procesar datos. Escalar la memoria es particularmente importante para MongoDB, donde el alto rendimiento es muy sensible al ajuste de datos en la memoria.
fuente