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

Měli bychom použít dbref nebo vložený dokument v aplikaci náročné na čtení

DBref není nic jako cizí klíč v tradičních relačních systémech. Je to pouze konvence, která snadno řekne řidiči (který je schopen), aby automaticky načetl uvedené dokumenty. Viz DBRef pro více informací o tomto.

V závislosti na použitém ovladači můžete být schopni načíst tyto odkazy automaticky, pouze když je potřebujete (líný), takže režie výkonu by měla být opravdu malá. Ale režie úložiště je o něco vyšší než jednoduché odkazované _id jiného dokumentu. V podstatě bych řekl, že byste měli používat tyto DBrefs pouze v případě, že propojený dokument může být proměnného typu. Pokud je statický, pak jste uvízli u referencí _id a možná u vaší vlastní funkce líného zavaděče, takže se nebudete opakovat.

Neopakujte se (nebo duplikace dat v databázových podmínkách) platí i ve vašem kontextu, jak doporučuje MongoDB (takže já bych také), je pouze propojte své dokumenty . V opačném případě byste měli vyšší využití úložiště a poněkud dlouho běžící aktualizace, abyste aktualizovali pouze jednu logickou entitu (velmi často se fyzicky duplikují).

S dříve zmíněným vlastním líným zavaděčem můžete přidat nějaké ukládání do mezipaměti, takže ne každé vyhledávání ve skutečnosti vede k vyhledávání mongodb. S největší pravděpodobností byste se pak museli postarat o konzistenci dat mezi mezipamětí a db.




  1. Jak implementovat oAuth2 spolu s ověřováním JWT v jarním bootování?

  2. MongoDB java driver 3.0 nemůže zachytit výjimku při ověřování

  3. V MongoShell:Nelze se připojit k mé sbírce, db.collection_name vrací NaN

  4. Mongoose - pomocí Populate na poli ObjectId