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