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

Kam bych měl umístit časovou osu aktivit v mongodb, vloženou do uživatele nebo samostatně?

Oba tyto články jsou správné a oba jsou špatné.

Vložit či nevložit? Toto je vždy klíčová otázka a záleží na vašich potřebách, dotazování a ukládání a dokonce i na vaší pracovní sadě.

Na konci dne vám můžeme poskytnout pouze ukazatele, které vám ve skutečnosti neřeknou, která je nejlepší.

Nicméně s ohledem na velikost zdroje aktivit bych jej osobně nevkládal, protože by mohl snadno přesáhnout 16meg (na uživatele), ale pro rychlost a sílu dotazování byste mohli agregovat například posledních 20 aktivit uživatele a poté vložit to do řádku uživatelů (protože posledních 20 je obvykle to, na co se dotazuje nejvíce).

Ale pak závisí vkládání agregátu, sharding se může postarat o dotazování obrovských horizontálně škálovaných kolekcí a použití správných dotazů znamená, že z vkládání nezískáte žádné skutečné výhody a mohlo by vám to potenciálně ztížit život tím, že budete muset udržovat indexy, úložiště a dotazy potřebné k údržbě tohoto vnořeného dokumentu.

Co se týče vnoření až k smrti. Mnoho dotazování MongoDB v současné době spoléhá většinou na jedno nebo dvouúrovňové vkládání, takže může být obtížné udržovat řekněme 12 vnořených tabulek, v tu chvíli se zde a ve skupině Google začínají objevovat otázky, jak takové obrovský dokument (odpověď je na straně klienta, pokud opravdu chcete).

Vzhledem k tomu bych na uživatele umístil souhrn, což znamená, že uživatel může vidět svou vlastní aktivitu nebo aktivitu jiných uživatelů jednotlivě během jedné zpáteční cesty.

Nicméně vzhledem k tomu, že učitel by s největší pravděpodobností musel mít výsledky stránek od všech uživatelů, umístil bych samostatnou kolekci aktivit a dotazoval bych se na ně. Stránkování souhrnu vnořených dokumentů vyžaduje několik dotazů a v tomto případě by bylo lepší to udělat tímto způsobem.

Doufejme, že by vás to mělo nastartovat.



  1. Pomalý dotaz MongoDB

  2. Odebrat pole nalezené v libovolném poli mongodb

  3. MongoDB select count(distinct x) na indexovaném sloupci – počítání jedinečných výsledků pro velké datové sady

  4. Mongodb odpovídá znakům s diakritikou jako základnímu znaku