Основно има два сценария:пресен изастояло .
Свежи данни
Съхраняването на дублирани данни е лесно. Поддържането на дублирани данни е трудната част. Така че най-лесното нещо е да избягвате поддръжката, като просто не съхранявате дублиращи се данни като начало. Това е полезно главно, ако имате нужда от свежи данни . Съхранявайте препратките и правете заявки за колекциите, когато трябва да извлечете информация.
В този сценарий ще имате някои режийни разходи поради допълнителните заявки. Алтернативата е да проследявате всички местоположения на дублирани данни и да актуализирате всички екземпляри при всяка актуализация. Това също включва режийни разходи, особено в отношенията N-to-M като тази, която споменахте. Така че така или иначе, вие ще има малко режийни разходи, ако се нуждаете от свежи данни. Не можете да имате най-доброто от двата свята.
Застарели данни
Ако можете да си позволите да имате остарели данни, нещата стават много по-лесни. За да избегнете излишните разходи за заявка, можете да съхранявате дублиращи се данни. За да избегнете необходимостта от поддържане на дублиращи се данни, няма да съхранявате дублирани данни. Поне не активно .
В този сценарий вие също ще искате да съхранявате само препратките между документи. След това използвайте периодично задание за намаляване на картата, за да генерирате дублирани данни. След това можете да заявите единичния резултат за намаляване на картата, вместо отделни колекции. По този начин избягвате излишните разходи на заявката, но също така не е нужно да следите промени в данните.
Резюме
Съхранявайте само препратки към други документи. Ако можете да си позволите остарели данни, използвайте периодични задачи за намаляване на картата, за да генерирате дублирани данни. Избягвайте поддържането дублирани данни; това е сложно и податливо на грешки.