sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB skärpa efter datum på en enda maskin

Tekniskt sett behöver du inte klippa ditt innehåll utan behöver bara indexera ditt fält. Ja, du kan skapa index på datumfältet och det skulle respekteras vilket du kan se genom att besöka frågeplanen db.collection.explain("executionStats")

Men att välja en skärvnyckel är mycket viktigt. det finns några saker att tänka på när du väljer shard-nyckeln

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

att välja datumfältet ger faktiskt en mycket hög kardinalitet, men det misslyckas med att göra randomiseringen och som ett resultat av detta lagras alla dokument i den enda skärvan och därför begränsar det systemets skrivkapacitet. Av samma anledning rekommenderas ObjectId inte att använda som shard-nyckel.

http://docs.mongodb.org/manual/core/sharding- shard-key/ Innehåll från länken ovan."MongoDB genererar ObjectId-värden när dokument skapas för att producera en unik identifierare för objektet. De mest signifikanta databitarna i detta värde representerar dock en tidsstämpel, vilket betyder att de ökar i en regelbundet och förutsägbart mönster. Även om detta värde har hög kardinalitet, när du använder detta, vilket datum som helst eller annat monotont ökande nummer som skärvnyckel, kommer alla infogningsoperationer att lagra data i en enda bit och därför en enda skärva. ett resultat kommer skrivkapaciteten för denna shard att definiera den effektiva skrivkapaciteten för klustret."



  1. $lookup på ObjectIds i en array

  2. Ruby/skenor:mongoid med mongo(gem); en bson konflikt? Hur hanterar man olika versioner?

  3. Spring Data Mongo - Perform Distinct, men vill inte dra inbäddade dokument i resultat

  4. Med säkerhetskopieringskryptering för MySQL, MongoDB och PostgreSQL - ClusterControl 1.5.1