MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Fragment MongoDB par date sur une seule machine

Techniquement, vous n'avez pas besoin de partitionner votre contenu et vous avez juste besoin d'indexer votre champ. Oui, vous pouvez créer un index sur le champ de date et il serait respecté, ce que vous pouvez voir en visitant le plan de requête db.collection.explain("executionStats")

Cependant, le choix d'une clé de partition est très important. il y a peu de choses à considérer lors du choix de la clé de partition

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

le choix du champ de date donne en fait une cardinalité très élevée, mais il ne parvient pas à effectuer la randomisation et, par conséquent, tous les documents sont stockés dans un seul fragment, ce qui limite la capacité d'écriture du système. Pour la même raison, il est déconseillé d'utiliser ObjectId comme clé de partition.

http://docs.mongodb.org/manual/core/sharding- shard-key/ Contenu du lien ci-dessus.."MongoDB génère des valeurs ObjectId lors de la création du document pour produire un identifiant unique pour l'objet. Cependant, les bits de données les plus significatifs dans cette valeur représentent un horodatage, ce qui signifie qu'ils incrémentent dans un modèle régulier et prévisible. Même si cette valeur a une cardinalité élevée, lors de l'utilisation de this, n'importe quelle date ou un autre nombre croissant de manière monotone comme clé de partition, toutes les opérations d'insertion stockeront des données dans un seul bloc, et donc, une seule partition. par conséquent, la capacité d'écriture de ce fragment définira la capacité d'écriture effective du cluster."