sql >> Base de Datos >  >> NoSQL >> MongoDB

Fragmento de MongoDB por fecha en una sola máquina

Técnicamente, no necesita fragmentar su contenido y solo necesita indexar su campo. Sí, puede crear un índice en el campo de fecha y se respetaría lo que puede ver visitando el plan de consulta db.collection.explain("executionStats")

Sin embargo, elegir una clave de fragmento es muy importante. hay algunas cosas a considerar al elegir la clave de fragmento

- Write scaling (high cardinality, Randomization)
- Query Isolation. (read)

elegir el campo de fecha en realidad da una cardinalidad muy alta, sin embargo, falla al realizar la aleatorización y, como resultado, todos los documentos se almacenan en un solo fragmento y, por lo tanto, limita la capacidad de escritura del sistema. Por la misma razón, no se recomienda utilizar ObjectId como clave de partición.

http://docs.mongodb.org/manual/core/sharding- clave de fragmento/ Contenido del enlace anterior.."MongoDB genera valores ObjectId al crear el documento para producir un identificador único para el objeto. Sin embargo, los bits de datos más significativos en este valor representan una marca de tiempo, lo que significa que se incrementan en un patrón regular y predecible.Aunque este valor tiene una alta cardinalidad, cuando se usa este, cualquier fecha u otro número que aumenta monótonamente como clave de fragmento, todas las operaciones de inserción almacenarán datos en un solo fragmento y, por lo tanto, en un solo fragmento. como resultado, la capacidad de escritura de este fragmento definirá la capacidad de escritura efectiva del clúster".