MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB shard per data su una singola macchina

Tecnicamente non è necessario frammentare il contenuto e basta indicizzare il campo. Sì, puoi creare il campo dell'indice sulla data e sarebbe rispettato che puoi vedere visitando il piano di query db.collection.explain("executionStats")

Tuttavia, la scelta di una chiave shard è molto importante. ci sono alcune cose da considerare durante la scelta della chiave shard

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

la scelta del campo della data in realtà dà una cardinalità molto alta, tuttavia non riesce a eseguire la randomizzazione e di conseguenza tutti i documenti vengono archiviati nel singolo shard e quindi limita la capacità di scrittura del sistema. Per lo stesso motivo si sconsiglia di utilizzare ObjectId come chiave shard.

http://docs.mongodb.org/manual/core/sharding- shard-key/ Contenuto dal link sopra.."MongoDB genera valori ObjectId al momento della creazione del documento per produrre un identificatore univoco per l'oggetto. Tuttavia, i bit di dati più significativi in ​​questo valore rappresentano un timestamp, il che significa che aumentano in un modello regolare e prevedibile. Anche se questo valore ha una cardinalità elevata, quando si utilizza questa, qualsiasi data o un altro numero monotonicamente crescente come chiave shard, tutte le operazioni di inserimento memorizzeranno i dati in un unico blocco e, quindi, in un singolo shard. di conseguenza, la capacità di scrittura di questo shard definirà la capacità di scrittura effettiva del cluster."