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

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

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

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

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

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

  • Создать своего рода таблицу без схемы для хранения изменений в записях адресной книги. Такая таблица будет состоять из: AddressBookId, TimeStamp, FieldName, Value. Таким образом, я буду хранить только изменения в записях, и мне не придется синхронизировать таблицу истории и таблицу адресной книги.

  • Создайте таблицу для хранения записей адресной книги серализованным (JSON) или изменений в записях адресной книги. Такая таблица будет выглядеть следующим образом: AddressBookId, TimeStamp, Object (varchar). Таким образом, я буду хранить только изменения в записях, и мне не придется синхронизировать таблицу истории и таблицу адресной книги.

  • Создайте таблицу для хранения записей адресной книги серализованным (JSON) или изменений в записях адресной книги. Такая таблица будет выглядеть следующим образом: AddressBookId, TimeStamp, Object (varchar). Таким образом, я буду хранить только изменения в записях, и мне не придется синхронизировать таблицу истории и таблицу адресной книги.

  • Создайте таблицу для хранения записей адресной книги серализованным (JSON) или изменений в записях адресной книги. Такая таблица будет выглядеть следующим образом: AddressBookId, TimeStamp, Object (varchar). Опять же, это меньше схемы, поэтому мне не пришлось бы синхронизировать таблицу истории с таблицей адресной книги. ( Это смоделировано на основе простого управления версиями документов с помощью CouchDB )

13
задан Community 23 May 2017 в 11:47
поделиться