V zásadě existují dva scénáře:čerstvé a zastaralé .
Nová data
Ukládání duplicitních dat je snadné. Udržování duplicitních dat je obtížná část. Nejjednodušší je tedy vyhnout se údržbě tím, že pro začátek jednoduše nebudete ukládat žádná duplicitní data. To je užitečné hlavně v případě, že potřebujete čerstvá data . Ukládejte pouze odkazy a dotazujte se na kolekce, když potřebujete získat informace.
V tomto scénáři budete mít určitou režii kvůli dalším dotazům. Alternativou je sledovat všechna umístění duplicitních dat a aktualizovat všechny instance při každé aktualizaci. To také zahrnuje režii, zejména ve vztazích N-to-M, jako je ten, který jste zmínil. Takže v každém případě budete mít nějakou režii, pokud požadujete čerstvá data. Nemůžete mít to nejlepší z obou světů.
Zastaralá data
Pokud si můžete dovolit mít zastaralá data, věci jsou mnohem jednodušší. Chcete-li se vyhnout režii dotazů, můžete ukládat duplicitní data. Abyste nemuseli udržovat duplicitní data, nebudete ukládat duplicitní data. Alespoň ne aktivně .
V tomto scénáři budete také chtít ukládat pouze odkazy mezi dokumenty. Potom použijte periodickou úlohu map-reduce k vygenerování duplicitních dat. Potom se můžete dotazovat na jeden výsledek map-reduce, spíše než na samostatné kolekce. Tímto způsobem se vyhnete režii dotazů, ale také nemusíte lovit změny dat.
Shrnutí
Ukládejte pouze odkazy na jiné dokumenty. Pokud si můžete dovolit zastaralá data, používejte k generování pravidelné úlohy redukce map duplicitní údaje. Vyhněte se údržbě duplicitní údaje; je složitý a náchylný k chybám.