К сожалению, это очень общий вопрос ...
Представьте себе приложение для создания, например. электрические схемы. Инженеры рисуют схемы до тех пор, пока они не удовлетворены своим продуктом, и он не готов к производству.
В этот момент будет начата «Ревизия» (скажем, Ревизия «# 1»). Отныне все данные / документы этой редакции больше не могут быть изменены. Это только для чтения.
Со временем у инженеров появляются умные идеи, и они начинают обновлять существующие схемы на основе Revision # 1. Они добавляют новые функции, удаляют функции, заменяют некоторые компоненты новыми версиями и т. Д. До тех пор, пока у них не будет редакции № 2.
Общее требование следующее: что изменилось между Rev.1 и 2? Требуются некоторые дельта-отчеты.
Что бы это могло / могло бы означать с RavenDB?
Если инженеры начнут новую редакцию, это будет означать
скопируйте все документы и вставьте их с новым идентификатором
"/ Рго-1 / об-2 / компонент-1000"? Как бы я обновил мои отношения между документами
затем? Отрегулировать все отношения "вручную"?
Снимок БД? Можно ли сравнить базу данных моментальных снимков с текущей базой данных?
- Как мне найти все дельты между этими ревизиями?
- Если я не копирую все документы и не делаю их снимок, нужно ли мне хранить все изменения в отдельных документах (стиль журнала событий), т. Е. DocX был удален, DocY был обновлен с помощью Value1, DocZ был добавлен и т. Д.
- Я знаю, что у RavenDb есть своя ревизионная система. Он основан на единичных изменениях документа. Может ли это быть использовано здесь для выгоды?
Любые советы о том, как смоделировать такую систему, будут высоко оценены.