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

Je špatné změnit typ _id v MongoDB na celé číslo?

Ne, není to vůbec špatné a ve skutečnosti je to vestavěné ObjectId je v rámci indexu poměrně velký, takže pokud věříte, že máte něco lepšího, můžete změnit výchozí hodnotu _id pole k čemukoli.

Ale, a to je velké ale , při rozhodování o přechodu od výchozího formulovaného ObjectId je třeba zvážit , zejména při použití automatického zvyšování _id, jak je uvedeno zde:https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field

Vícevláknové zpracování není tak velký problém, protože findAndModify a atomové zámky se o to skutečně postarají, ale pak teprve narazíte na svůj první problém. findAndModify není nejrychlejší ani nejlehčí funkcí a při pravidelném používání došlo k výraznému poklesu výkonu.

Stejně tak musíte zvážit režii, kterou byste museli udělat sami, a to i bez findAndModify . Pro každou přílohu budete potřebovat další dotaz. Představte si, že máte jedinečné ID, které musíte pokaždé, když chcete vložit, dotazovat na jedinečnost. Nakonec vaše rychlost vkládání klesne na procházení a čas uzamčení se zvýší.

Samozřejmě ObjectId je opravdu dobrý v tom, že je jedinečný, aniž by musel kontrolovat nebo formulovat svou vlastní jedinečnost dotykem databáze před vložením, a proto nemá tuto režii.

Pokud se stále domníváte, že celé číslo _id vyhovuje vašemu scénáři, jděte do toho, ale mějte na paměti výše popsanou režii.



  1. Jsou aktualizace Redis synchronní?

  2. Nejlepší způsob, jak uložit klíče Redis

  3. HBase a Hive – lepší společně

  4. Jak se připojit k instanci clusteru Docker Redis pomocí jedis pro Javu?