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

Databáze dokumentů:Redundantní data, reference atd. (konkrétně MongoDB)

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.



  1. Proč je SQLite v tomto jednoduchém benchmarku rychlejší než Redis?

  2. redis-server v ubuntu14.04:Vázaná adresa se již používá

  3. Úložiště Kubernetes NFS využívající PV a PVC

  4. Upozornění na ukončení:Poslech událostí ve třídě Db byl zastaralý a bude odstraněn v příští hlavní verzi