Реализация эффективной истории данных/управления версиями в django + postgres
Я пытаюсь отслеживать изменения в сохраняемых данных в стеке django + postgresql, сохраняя операции над строками и "воспроизводя" события с самого начала (или с меньшим количеством моментальных снимков), чтобы восстановить произвольную прошлую версию. После некоторых исследований я почти уверен, что хочу, чтобы это было сделано с помощью триггеров postgresql, и что нужно сохранить значение pg_current_xact_id(), чтобы получить логический порядок транзакций (правильно ли последнее?).
Если поискать библиотеки, которые делают это, то django-pghistory кажется идеальной для этого, но при проверке структур данных эта библиотека хранит только UUID и временные метки. Первый из них не упорядочен, а второй, по-видимому, подвержен перегрузкам, поскольку две параллельные транзакции могут запускаться одновременно (с точностью до часов). Я что-то упустил?
Кроме того, я считаю важным для повышения производительности сохранять полный снимок объекта/ таблицы после большого количества изменений, чтобы время выполнения перехода к определенной версии не уменьшалось из-за большого количества изменений. Однако ни одно из доступных решений, которые я нашел, похоже, не делает этого. Я что-то упустил? Действительно ли производительность большинства приложений незначительна? Начинают ли люди запускать свою собственную версию, когда это действительно важно?