sql >> Databáze >  >> NoSQL >> MongoDB

Výčet obchodu MongoDB

TL;DR:Řetězce jsou pravděpodobně bezpečnější výběr a rozdíl ve výkonu by měl být zanedbatelný. Celá čísla mají smysl pro velké kolekce, kde musí být enum indexován. YMMV.

Pravda.

To je podle mého názoru klíčová výhoda celých čísel. Vyžaduje však také, abyste se ujistili, že přidružené hodnoty enum neměnit. Pokud to pokazíte, téměř jistě způsobíte zmatek , což je obrovská nevýhoda.

Pokud ve skutečnosti používáte datový typ enum, je to pravděpodobně interně nějaký druh celého čísla, takže celé číslo by mělo vyžadovat méně zpracování. V každém případě by tato režie měla být zanedbatelná.

Opakuji mnoho z toho, co bylo řečeno, ale možná to pomůže dalším čtenářům. Shrnutí:

  • Smíchání mapy hodnot enum způsobí zkázu. Představte si, že jste Declined stavy jsou náhle interpretovány jako Accepted , protože Declined měl hodnotu '2' a nyní je Accepted protože jste změnili pořadí výčtu a zapomněli jste hodnoty přiřadit ručně... (chvěje se )
  • Řetězce jsou výraznější
  • Celá čísla zabírají méně místa. Místo na disku obvykle nehraje roli, ale indexový prostor zabere RAM, což je drahé.
  • Integer aktualizace nemění velikost objektu. Řetězce, pokud se jejich délky výrazně liší, mohou vyžadovat přerozdělení. String padding a padding faktor by to však měly zmírnit.
  • Celá čísla mohou být příznaky (zatím nelze dotazovat (zatím), bohužel, viz SERVER-3518 )
  • Na celá čísla lze zadat dotaz pomocí $gt / $lt takže můžete efektivně implementovat komplexní $or dotazy, i když to je poněkud tajemný požadavek a na $or není nic špatného dotazy...



  1. Hromadná operace MongoDb získat id

  2. Mongodb Snaží se získat vybraná pole pro návrat z agregace

  3. Průsečík indexu vs. složený index?

  4. Získejte hodnoty podle vzoru klíče v StackExchange.Redis