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

Nejlepší model pro reprezentaci vztahů Many to Many s atributy v MongoDB

V mnoha ohledech API meteoru podporuje ploché relační dokumenty, nicméně MongoDB je nerelační úložiště dat. Tento konflikt je bohužel ponechán jako cvičení, které musí vývojář vyřešit.

Pojem struktura schématu a spojení je obrovské téma, které je třeba pokrýt jedinou odpovědí, takže se pokusím být co nejstručnější.

Důvody, proč byste si měli vybrat relační model

Předpokládejme, že máte data komentářů a příspěvků. Zvažte, co by se stalo, kdybyste do svých příspěvků vložili komentáře.

  • DDP funguje na dokumentech. Všechny komentáře budou odeslány pokaždé, když bude přidán nový komentář ke stejnému příspěvku.

  • allow a deny pravidla fungují na dokumentech. Může být nerozumné očekávat, že stejná pravidla platí současně pro příspěvky i komentáře.

  • Publikace mívají větší smysl z hlediska sbírek. Ve výše uvedeném scénáři jsme nemohli snadno zveřejnit seznam komentářů nezávislých na jejich příspěvcích.

  • Relační databáze existují z dobrých důvodů. Jedním z nich je vyhnout se problému vícenásobných úprav, který je vlastní vašemu druhému řešení.

Důvody, proč byste si měli vybrat vestavěný model

  • Joins nejsou nativně podporovány MongoDB a neexistuje žádný základní balíček pro vytvoření reaktivního spojení.

Doporučení

Použijte své třetí řešení. Podle mých zkušeností důvody pro výběr relačního modelu výrazně převažují nad omezeními uloženými úložištěm dat. Překonání nedostatku spojení samozřejmě není snadné, ale bolest se pravděpodobně týká pouze hrstky funkcí publikování. Zde jsou některé zdroje, které bych velmi doporučil:

  • Jak publikovat vztah many-to-many na EventedMind. Chris podrobně popisuje váš přesný případ použití, ale reaktivní spojení provádí ručně pomocí zpětných volání, což nedoporučuji.

  • Reactive se připojuje k meteoru z encyklopedie Discover Meteor Encyclopedia. To pokrývá základy toho, jak a proč byste měli provést reaktivní připojení.

  • Kapitola denormalizace z Discover Meteor. To pokrývá mnoho bodů, které jsem uvedl výše, a také hovoří o tom, kdy a jak denormalizovat některá vaše data.

  • Ke spojení dat můžete použít Publikovat s vztahy. Mezi alternativní balíčky patří:chytré publikování, složené publikování a jednoduché publikování.

Pokud potřebujete další informace nad rámec tohoto, napište komentář níže a já svou odpověď aktualizuji.



  1. vyhledávání v agregaci mongodb

  2. Stručná referenční příručka k různým databázím NoSQL

  3. Upozornění na ukončení podpory MongoDB mongoose

  4. Co je Hadoop Cluster? Osvědčené postupy pro vytváření klastrů Hadoop