В настоящее время у нас есть требование для создания генерации аудиторских трейлов для некоторых наших основных бизнес-объектов, как обычно в этих случаях нам необходимо сохранить старое и новое значение каждого поля, был изменен, а также некоторые данные заголовка, такие как отметка времени, идентификатор объекта и пользователь, выполнивший сохранение.Возможные способы создания контрольного журнала для каждого сохранения бизнес-объектов
Я понимаю, что есть разные способы сделать это, такие как: стороны
- .NET кода, с помощью Reflection сторона
- SQL Server запускает
- SQL Server CDC (Change Data Capture)
Метод, основанный на .NET Reflection, может занять немного больше времени, чтобы быть написанным, но если правильно сделано, он будет достаточно умным, чтобы включать новые свойства, добавленные в будущем без изменения кода, и i t также может расширять и сравнивать все дочерние объекты (например, коллекции других сущностей, добавленных в наш основной объект .NET).
На самом деле у нас есть устаревшее приложение, использующее такое построение аудита аудита .NET. Мы сохраняем весь контрольный журнал в виде XML-поля в базе данных SQL, и за эти годы таблица аудита теперь составляет примерно 35 ГБ данных.
Я имею в виду, насколько легко это может быть решение на основе триггера с точки зрения:
- первой реализации
- каждое изменение требуется в будущем модификации объекта аудита (добавить/изменить/удалить поле и т. д.)
- Насколько читаемыми являются данные аудита? мы можем просто задать запрос, показывающий старые и новые значения для конкретной операции сохранения?
... а как насчет спектаклей?
Есть ли у кого-нибудь опыт работы с обоими подходами и может предложить или указать некоторые плюсы и минусы?
Какие потребители вы ожидаете использовать эти необработанные данные? Или это просто отслеживание данных для отладки? –
Основная необходимость - иметь возможность проверять историю изменений для определенной сущности от создания. Не для отладки, больше для обеспечения соответствия, и мы должны быть уверены, что никто не сможет изменить эту аудиторскую информацию. –