MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Fragmento do MongoDB por data em uma única máquina


Tecnicamente, você não precisa fragmentar seu conteúdo e apenas indexar seu campo. Sim, você pode criar um índice no campo de data e isso será respeitado, o que você pode ver visitando o plano de consulta db.collection.explain("executionStats")

No entanto, escolher uma chave de fragmento é muito importante. há poucas coisas a considerar ao escolher a chave de fragmentação
- Write scaling (high cardinality, Randomization)
- Query Isolation. (read)

escolher o campo de data na verdade fornece uma cardinalidade muito alta, mas falha ao fazer a randomização e, como resultado, todos os documentos são armazenados no único fragmento e, portanto, limita a capacidade de gravação do sistema. Pela mesma razão, o ObjectId é desencorajado a usar como chave de fragmentação.

http://docs.mongodb.org/manual/core/sharding- chave de fragmentação/ Conteúdo do link acima.."O MongoDB gera valores ObjectId na criação do documento para produzir um identificador exclusivo para o objeto. No entanto, os bits de dados mais significativos nesse valor representam um carimbo de hora, o que significa que eles são incrementados padrão regular e previsível. Mesmo que esse valor tenha alta cardinalidade, ao usar isso, qualquer data ou outro número monotonicamente crescente como a chave de fragmento, todas as operações de inserção estarão armazenando dados em um único fragmento e, portanto, em um único fragmento. Como como resultado, a capacidade de gravação deste fragmento definirá a capacidade de gravação efetiva do cluster."