Управление версиями содержимого базы данных

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

Я использую Postgres, и мне кажется, что этот MVCC можно использовать для этой цели, но я не могу найти никакой документации, подтверждающей это. Могу ли я это сделать? Есть ли способ лучше?

Любой ввод приветствуется!

UPD

Я пометил ответ Дениса как ответ, потому что он действительно ответил, действительно ли MVCC - это то, что я хочу, о чем был вопрос. Однако стратегия, которую я выбрал, подробно описана ниже на тот случай, если кто-то сочтет ее полезной:

Функция Postgres, которая делает то, что я хочу: оперативное резервное копирование / восстановление на определенный момент времени.

http://www.postgresql.org /docs/8.1/static/backup-online.html объясняет, как использовать эту функцию, но, по сути, вы можете установить этот «журнал упреждающей записи» в режим архивирования, сделать снимок базы данных (скажем, до того, как он будет запущен), а затем постоянно архивировать WAL. Затем вы можете использовать воспроизведение журнала для восстановления состояния базы данных в любое время, с дополнительным преимуществом наличия горячего резервирования, если вы выберете (путем постоянного воспроизведения новых WAL на резервном сервере).

Возможно, этот метод не подходит. так же элегантен, как и другие способы ведения журнала, поскольку вам нужно фактически создать базу данных для каждого момента времени, который вы хотите запросить, однако он выглядит чрезвычайно простым в настройке и теряет нулевую информацию. Это означает, что когда у меня будет время улучшить мою обработку исторических данных, у меня будет все, и поэтому я смогу преобразовать мою неуклюжую систему в более элегантную.

Одним из ключевых фактов, делающих это настолько совершенным, является то, что мои «действительное время» совпадает с моим «временем транзакции» для конкретного приложения - если бы это было не так, я бы фиксировал только «время транзакции».

Прежде чем я узнал о WAL, я рассматривал возможность просто взять ежедневные снимки или что-то в этом роде, но требование большого размера и связанная с этим потеря данных меня не устраивали.

Для быстрого способа начать работу без ущерба для хранения данных с самого начала это кажется идеальным решением.

16
задан Eugen Konkov 12 May 2018 в 18:11
поделиться