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

mongo db design sledování a kanálů, kam bych měl vložit?

Obecně je špatný nápad vkládat následující/následované vztahy do uživatelských dokumentů, a to z několika důvodů:

(1) maximální velikost dokumentu je 16 MB a je pravděpodobné, že oblíbený uživatel webu s dobrým odběrem může skončit se stovkami tisíc sledujících, kteří se přiblíží maximální velikosti dokumentu,

(2) vztahy mezi sledujícími se často mění, a tak případ, kdy uživatel získá mnoho sledujících, se promítá do opakovaného růstu dokumentu, pokud vkládáte sledující. Častý růst dokumentů výrazně zpomalí výkon MongoDB, a proto je třeba se mu vyvarovat (občasné narůstání dokumentů, zejména pokud dokumenty mají tendenci dosahovat stabilní konečné velikosti, je menší ztráta výkonu).

Takže ano, je nejlepší rozdělit vztah sledování/následování do samostatné kolekce záznamů, z nichž každý má dvě pole, např. { _id :, oid :}, s indexy na _id (pro „koho sleduji? " dotaz) a oid (pro dotaz "kdo mě sleduje?"). Každá jednotlivá změna stavu je modelována přidáním nebo odebráním jednoho dokumentu, i když pokud zobrazujete také věci, jako je počet sledujících, měli byste pravděpodobně uchovávat samostatné čítače, které aktualizujete po každém vložení/smazání okraje.

(Samozřejmě to předpokládá, že vaše obchodní požadavky vám umožňují určitou flexibilitu v podrobnostech konzistence:obecně platí, že pokud váš zobrazovaný kód uživateli sdělí, že má 304 sledujících, a poté je pokračuje ve výčtu, pouze ten nejnáročnější uživatel zkontroluje, že sledující byli uvedeni. sčítají se až 304. Pokud obchodní požadavky vyžadují absolutní konzistenci, budete buď potřebovat databázi, která za vás izoluje transakce, nebo budete muset provést počítání sami jako součást zobrazení všech uživatelských identit.)




  1. MongoDB na zařízení s dockerem nezbývá místo

  2. Připojení k MongoDB 3.0 pomocí Java Spring

  3. GenericJackson2JsonRedisSerializer Ignorovat třídu a atribut

  4. První MongoDB hosting DBaaS pro podporu Azure Government pro veřejný sektor