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

Délka ID kolekce v MongoDB

Proč je výchozí _id 24znakový hexadecimální řetězec?

Výchozí jedinečný identifikátor vygenerovaný jako primární klíč (_id ) pro dokument MongoDB je ObjectId . Toto je 12bajtová binární hodnota, která je často reprezentována jako 24znakový hexadecimální řetězec a jeden ze standardních typů polí podporovaných MongoDB Specifikace BSON .

12 bajtů ObjectId je vytvořeno pomocí:

  • 4bajtová hodnota představující sekundy od epochy Unixu
  • 3bajtový identifikátor stroje
  • 2bajtové ID procesu
  • 3bajtový čítač (začínající náhodnou hodnotou)

Jaká je důležitost ObjectId?

ObjectIds (nebo podobné identifikátory generované podle GUID vzorec) umožňují nezávislé generování jedinečných identifikátorů v distribuovaném systému.

Schopnost nezávisle generovat jedinečné ID se stává velmi důležitou při škálování na více aplikačních serverů (nebo možná více databázových uzlů v sharded cluster ). Nechcete mít centrální koordinační úzké hrdlo, jako je počítadlo sekvencí (např. jako byste mohli mít u automaticky se zvyšujícího primárního klíče), a budete chtít vkládat nové dokumenty bez rizika, že se nový identifikátor ukáže jako duplikát.

ObjectId obvykle generuje váš MongoDB klientský ovladač , ale lze je také vygenerovat na serveru MongoDB, pokud váš klientský ovladač nebo kód aplikace nebo ještě nepřidali _id pole.

Musím použít výchozí ObjectId?

Ne. Pokud máte k použití vhodnější jedinečný identifikátor, můžete vždy zadat svou vlastní hodnotu pro _id . Může to být buď jedna hodnota, nebo složená hodnota pomocí více polí.

Hlavní omezení _id hodnoty jsou takové, že musí být jedinečné pro kolekci a nemůžete aktualizovat ani odebrat _id pro existující dokument.



  1. Souhrnný/projektový dílčí dokument jako dokument nejvyšší úrovně v mongo

  2. Projekt s Match v souhrnu nefunguje v mongodb

  3. nasazení redis na heroku, který se nemůže připojit

  4. MongoDB/PyMongo:Dotazování na více kritérií – neočekávané výsledky