RavenDB Управление версиями на уровне приложений - PullRequest
0 голосов
/ 11 января 2019

К сожалению, это очень общий вопрос ...

Представьте себе приложение для создания, например. электрические схемы. Инженеры рисуют схемы до тех пор, пока они не удовлетворены своим продуктом, и он не готов к производству.

В этот момент будет начата «Ревизия» (скажем, Ревизия «# 1»). Отныне все данные / документы этой редакции больше не могут быть изменены. Это только для чтения.

Со временем у инженеров появляются умные идеи, и они начинают обновлять существующие схемы на основе Revision # 1. Они добавляют новые функции, удаляют функции, заменяют некоторые компоненты новыми версиями и т. Д. До тех пор, пока у них не будет редакции № 2.

Общее требование следующее: что изменилось между Rev.1 и 2? Требуются некоторые дельта-отчеты.

Что бы это могло / могло бы означать с RavenDB?

  1. Если инженеры начнут новую редакцию, это будет означать скопируйте все документы и вставьте их с новым идентификатором "/ Рго-1 / об-2 / компонент-1000"? Как бы я обновил мои отношения между документами затем? Отрегулировать все отношения "вручную"?

  2. Снимок БД? Можно ли сравнить базу данных моментальных снимков с текущей базой данных?

  3. Как мне найти все дельты между этими ревизиями?
  4. Если я не копирую все документы и не делаю их снимок, нужно ли мне хранить все изменения в отдельных документах (стиль журнала событий), т. Е. DocX был удален, DocY был обновлен с помощью Value1, DocZ был добавлен и т. Д.
  5. Я знаю, что у RavenDb есть своя ревизионная система. Он основан на единичных изменениях документа. Может ли это быть использовано здесь для выгоды?

Любые советы о том, как смоделировать такую ​​систему, будут высоко оценены.

1 Ответ

0 голосов
/ 13 января 2019

RavenDB имеет понятие ревизий для документов, которые создают снимок документа только для чтения. Они создаются всякий раз, когда вы изменяете документ.

Для ваших нужд я бы порекомендовал создать: plans/1238-A в качестве самого документа. Всякий раз, когда вам нужно пометить ревизию только для чтения, используйте: plans/1238-A/revisions/1 или что-то в этом роде.

Я бы порекомендовал не изменять какие-либо ссылки, указывать на то же место, но при чтении ревизии спросить ссылку revision .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...