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

MongoDB normalizace, cizí klíč a spojování

MongoDB nepodporuje vztahy cizích klíčů na straně serveru, normalizace se také nedoporučuje. Pokud je to možné, měli byste svůj podřízený objekt vložit do nadřazených objektů, zvýší se tím výkon a cizí klíče budou zcela zbytečné. To však není vždy možné, takže existuje speciální konstrukce nazvaná DBRef, která umožňuje odkazovat na objekty v jiné kolekci. To pak nemusí být tak rychlé, protože DB musí provádět další dotazy pro čtení objektů, ale umožňuje druh odkazu na cizí klíč.

Přesto budete muset své reference zpracovávat ručně. Pouze při vyhledávání vašeho DBRef uvidíte, zda existuje, DB nebude procházet všechny dokumenty, aby hledala reference a odstranila je, pokud cíl reference již neexistuje. Ale myslím, že odstranění všech odkazů po smazání knihy by vyžadovalo jeden dotaz na sbírku, nic víc, takže to ve skutečnosti není tak obtížné.

Pokud je vaše schéma složitější, pak byste pravděpodobně měli zvolit relační databázi a ne nosql.

Existuje také kniha o navrhování databází MongoDB:Document Design for MongoDB

AKTUALIZACE Výše uvedená kniha již není k dispozici, ale kvůli popularitě MongoDB existuje poměrně mnoho dalších. Nebudu je všechny spojovat, protože takové odkazy se pravděpodobně změní, jednoduché vyhledávání na Amazonu zobrazí více stránek, takže by neměl být problém nějaké najít.

Další podrobnosti a příklady naleznete na manuálové stránce MongoDB pro 'Manuální reference' a DBRefs



  1. Dotaz MongoDB s výrazem regulárního výrazu proti ObjectId

  2. Průměr pole dílčího dokumentu napříč dokumenty v Mongo

  3. Celer error:result.get timeout

  4. Určení nejlepší architektury pro nasazení klastru MongoDB