Что было бы хорошим решением для хранения истории изменений объектов?

Необходимо отслеживать изменения, внесенные в объекты в базе данных.

Тривиальная реализация могла бы иметь зеркальную таблицу, в которую вставляются записи с помощью триггеров, либо внутри базы данных, либо в приложении, но это влияет на производительность, и со временем зеркальная база данных становится огромной и существенно удваивает время обслуживания, когда исходная таблица должна быть изменена. (зеркальная таблица должна отражать это изменение).

Поскольку мое самое большое требование здесь - минимальное влияние на производительность базы данных и приложений, я сейчас предпочитаю сбрасывать изменения в syslog-ng через udp и сохранять их в текстовых файлах.

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

Думаю, мой вопрос - существует ли уже система, которая хотя бы частично удовлетворяет мои потребности? Идеально подходит для этого система базы данных, доступная по протоколу UDP, без схемы, с возможностью автоматического архивирования данных (или, по крайней мере, с минимальным объемом конфигурации, необходимой для этого) или с очень медленным снижением производительности вставки. MongoDB? CouchDB? YourDB?

5
задан Community 22 September 2017 в 18:01
поделиться