Можете ли вы поделиться своими мыслями о том, как реализовать внедрение версий данных в PostgreSQL. (Я задал аналогичный вопрос относительно Cassandra и MongoDB. Если у вас есть мысли, которые db лучше для этого, пожалуйста, поделитесь)
Предположим, что мне нужно записывать записи в простую адресную книгу. Записи адресной книги хранятся в одной таблице без связей для простоты. Я ожидаю, что история:
- будет использоваться нечасто
- будет использоваться все сразу, чтобы представить его в режиме "машины времени".
- не будет больше версий, чем несколько сотен в одной записи.
- история не истечет.
Я рассматриваю следующие подходы:
-
Создайте новую таблицу объектов для хранения истории записей с копией схемы таблицы адресной книги и добавьте временную метку и внешний ключ в таблицу адресной книги.
-
Создайте таблицу с меньшим количеством схем, чтобы сохранить изменения в записи адресной книги. Такая таблица будет состоять из: AddressBookId, TimeStamp, FieldName, Value. Таким образом, я бы сохранил только изменения в записях, и мне не пришлось бы синхронизировать таблицу таблицы истории и таблицы адресов.
-
Создайте таблицу для хранения записей в адресной книге Seralized (JSON) или изменений в записи адресной книги. Такая таблица выглядит следующим образом: AddressBookId, TimeStamp, Object (varchar). Опять же, это схема меньше, поэтому мне не нужно синхронизировать таблицу истории с таблицей адресной книги. (Это моделируется после Simple Document Versioning с CouchDB)