Можете ли вы поделиться своими мыслями о том, как бы вы реализовали управление версиями данных в MongoDB. (Я задал похожий вопрос относительно Кассандры . Если у вас есть какие-либо мысли, какой БД лучше для этого, поделитесь)
Предположим, мне нужно записать записи в простой адресной книге. (Записи адресной книги хранятся в виде плоских объектов JSON). Я ожидаю, что история
- будет использоваться нечасто
- будет использоваться сразу, чтобы представить его в стиле «машины времени»
- не будет больше версий, чем несколько сотен на одну запись. история не закончится.
Я рассматриваю следующие подходы:
Создайте новую коллекцию объектов для хранения истории записей или изменений в записях. Он будет хранить один объект на версию со ссылкой на запись адресной книги. Такие записи выглядят следующим образом:
{ '_id': 'новый идентификатор', 'user': user_id, «отметка времени»: отметка времени, 'address_book_id': 'идентификатор записи адресной книги' 'old_record': {'first_name': 'Jon', 'last_name': 'Doe' ...} }
Этот подход может быть изменен для хранения массива версий для каждого документа. Но это, кажется, медленный подход без каких-либо преимуществ.
Хранить версии как сериализованный (JSON) объект, прикрепленный к записям адресной книги. Я не уверен, как прикрепить такие объекты к документам MongoDB. Возможно, как массив строк. ( Смоделировано после простого управления версиями документов с помощью CouchDB )