Pregunta

Nuestra solución empresarial actual es una aplicación ASP.NET MVC impulsada por Entity Framework. Hay un par de enlaces sobre cómo conectarse a los eventos de cambio para la auditoría. No estoy realmente interesado en esto.

Estoy interesado en la arquitectura de auditoría de nivel empresarial. Aquellos de ustedes con heridas de batalla a nivel empresarial, ¿cuáles han sido sus soluciones de auditoría? ¿Serializas objetos en bases de datos en un marco? ¿Está configurando activadores de base de datos para auditar tablas? ¿Utiliza una base de datos separada para que el crecimiento de su auditoría no afecte la base de datos de su aplicación? Estoy interesado en las soluciones probadas y verdaderas aquí. Sé que hay opciones en nuestra elección de tecnología (EF), pero primero estoy interesado en la base.

Los enlaces serían muy apreciados.

¿Fue útil?

Solución

He visto varias soluciones, pero mi favorita fue la simplicidad misma:

  • Cree tablas de auditoría que reflejen cada tabla de origen, agregando algunas columnas adicionales para rastrear la fecha y el tipo de cambio (insertar, actualizar o eliminar si lo admite) y el usuario que realiza el cambio. Elimine todas las restricciones e índices (a menos que espere realizar muchas búsquedas).

  • Dentro de la lógica de actualización de la tabla (utilizamos procedimientos, pero no hay razón para que no se pueda hacer con un OR / M u otra capa de persistencia, dados los ganchos apropiados), escriba tanto en la tabla de origen como en la tabla de origen. la tabla de auditoría.

Esto tiene numerosos beneficios, pero el mayor (en mi opinión) es no tener que preocuparse o escribir todo el código para administrar la integridad transaccional de las operaciones de escritura emparejadas en el cliente.

Otros consejos

No tengo ningún enlace, pero en el sistema que tengo la alegría de mantener aquí en el trabajo diario. Tenemos una única tabla de auditoría, que básicamente almacena la siguiente información.

TableName, PrimaryKeyValue, ModifiedColumn, OldValue, NewValue, ChangeUser, Change Date

Ahora, esto funciona muy bien para la velocidad de auditoría, en nuestro código, tenemos una interfaz común para implementar automáticamente el registro de auditoría, pero desde una " revisión " punto de vista, no es el "más rápido" forma de recuperar la información. (De acuerdo, en realidad no hemos hecho nada para mirar el registro de auditoría ...)

Recientemente tuvimos que resolver este mismo problema en nuestra empresa. También teníamos que poder volver a versiones anteriores.

Terminamos auditando las entidades comerciales en lugar de las tablas en sql. Básicamente, serializamos los registros en la base de datos y hacemos un seguimiento de los cambios que se realizan de una versión a la siguiente. Este enfoque nos permite recuperar versiones anteriores en las entidades comerciales y luego volver a las anteriores llamando a las mismas operaciones de guardado. Esta funcionalidad para revertir se transferirá a la responsabilidad de las aplicaciones porque debe resolverse aquí, de lo contrario, nuestro servicio podría necesitar conocer demasiados detalles sobre las aplicaciones participantes. Se proporcionan operaciones de servicio para recuperar registros por versiones, por fechas, ver el historial y, por supuesto, para auditar los cambios. Es un enfoque opcional para diferentes grupos de aplicaciones y diferentes entidades dentro (no todo lo que se necesita en la base de datos debe ser auditado, entonces, ¿por qué hacerlo?)

Luego construimos un sitio web liviano que habla con el servicio y puede mostrar todas las versiones. Creamos un mecanismo para mostrar las adiciones / actualizaciones / eliminaciones para comparar entre versiones (representación de interfaz de usuario realmente genial) que permite a los usuarios ver quién cambió qué y cuándo. El servicio puede enviar un enlace a la url para ver las versiones de una entidad. Esto permite que nuestras aplicaciones webaps + winform / wpf inicien un navegador para que los usuarios puedan ver los cambios.

Tal vez pueda empaquetar esto y proporcionarlo si alguien está interesado ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top