Способы реализации управления версиями данных в MongoDB

Не могли бы вы поделиться своими мыслями о том, как бы вы реализовали управление версиями данных в MongoDB. (Я задал аналогичный вопрос относительно Cassandra . Если у вас есть какие-либо мысли о том, какой db лучше для этого, поделитесь)

Предположим, мне нужно записать версии в простой адресной книге. (Записи адресной книги хранятся как плоские объекты json). Я ожидаю, что история:

  • будет использоваться нечасто
  • будет использоваться сразу, чтобы представить ее в виде "машины времени"
  • история не истекает.

Я рассматриваю следующие подходы:

  • Создайте новую коллекцию объектов для хранения истории записей или изменений в записях. Он будет хранить один объект для каждой версии со ссылкой на запись адресной книги. Такие записи будут выглядеть следующим образом:

     {
     '_id': 'новый идентификатор',
     'пользователь': user_id,
     'timestamp': отметка времени,
     'address_book_id': 'идентификатор записи адресной книги' 
     'old_record': {'first_name': 'Jon', 'last_name': 'Doe' ...}
    }
    

    Этот подход можно изменить для хранения массива версий для каждого документа. Но это кажется более медленным подходом без каких-либо преимуществ.

  • Хранить версии как сериализованный (JSON) объект, прикрепленный к записям адресной книги. Я не уверен, как прикрепить такие объекты к документам MongoDB. Возможно, как массив строк. ( Смоделировано на основе простого управления версиями документа с помощью CouchDB )

289
задан Community 23 May 2017 в 02:18
поделиться