в проекте, поделитесь как делали ? На одном из прошлых проектов вели ведение версий через триггеры в БД, при insert или update брали новые данные, переводили в xml и сохраняли в таблицу версий/логов, для удаления отдельно в коде прописано было добавление в логи инфы об удалении объекта. Но не хочется мне триггеры использовать. )
а какая цель для истории измений?
можно ивентсоурсинг использовать
На триггерах — самое крутое решение, потому что будет работать даже для данных, которые меняют ручными запросами. Недостаток: сложно может быть реализовать для хитрых структур (если, например, для частей данных хочется иметь copy-on-write). У меня был проект, в котором делали своё решение на клиенте, и структура БД получалась очень запутанной. Я считаю, что, если есть возможность сделать просто и триггерами, то так и нужно поступить.
тут упоминали евентсорсинг, потому добавлю. в случае ES оно не предназначено для отката назад. тоесть ты можешь получить состояние из прошлого, но поменять текущее состояние объекта можно будет либо через компенсирующие комиты (как в гите) или через костыли типа удаление комитов (но оно не для этого придумано). а так, в плане аудита ES очень прикольный подход.
Обсуждают сегодня