Pregunta

Estoy trabajando en una nueva aplicación web. Necesito almacenar cualquier cambio en la base de datos para auditar las tablas. El propósito de tales tablas de auditoría es que más adelante en una auditoría física real podemos asegurar lo que sucedió en una situación, quién editó qué y cuál era el estado de db en el momento de, p. Un cálculo complejo. Así que en su mayoría la tabla de auditoría será escrita y no leída Aunque a veces se puede generar un informe.

He buscado la solución disponible

  1. AuditTrail - simple y es por eso que me inclino hacia él, puedo entenderlo código de archivo único.
  2. Reversión : parece bastante simple de usar pero no está seguro de lo fácil que sería modificar si es necesario.
  3. rcsField parece ser muy complejo y demasiado para mis necesidades

No he probado ninguno de estos, así que quería saber algunas experiencias reales y cuál debería estar usando. p.ej. ¿Cuál es más rápido, utiliza menos espacio, es fácil de extender y mantener?

¿Fue útil?

Solución 3

Como dije en mi pregunta, rcField parece ser demasiado para mis necesidades, lo cual es simple: quiero almacenar cualquier cambio en mi tabla y es posible que vuelva a esos cambios para generar algunos informes.

Así que probé AuditTrail y Reversion Reversion parece ser una mejor aplicación en toda regla con muchas características (que no necesito), también, por lo que sé, guarda los datos en una sola tabla en formato XML o YAML, que creo que

  1. generará demasiados datos en una sola tabla
  2. para leer esos datos, es posible que no pueda utilizar las herramientas db ya existentes.

AuditTrail gana al respecto, ya que para cada tabla genera una tabla de auditoría correspondiente y, por lo tanto, los cambios se pueden rastrear fácilmente, los datos por tabla son menores y se pueden manipular fácilmente y los usuarios pueden generar informes.

Así que voy con AuditTrail.

Otros consejos

Personalmente, prefiero crear tablas de auditoría en la base de datos y rellenar a través de los activadores para que se guarden cualquier cambio, incluso las consultas ad hoc de la ventana de consulta. Nunca consideraría una solución de auditoría que no esté basada en la propia base de datos. Esto es importante porque las personas que realizan cambios maliciosos en la base de datos o cometen fraude probablemente no lo hagan a través de la interfaz web sino directamente en el backend. Mucho más de esto sucede de empleados descontentos o larcenos que de piratas informáticos externos. Si ya está utilizando un ORM, sus datos están en riesgo porque los permisos están en el nivel de la tabla en lugar del nivel sp al que pertenecen. Por lo tanto, es aún más importante que capture cualquier posible cambio en los datos, no solo lo que era de la GUI. Tenemos un proceso dinámico para crear tablas de auditoría que se ejecutan cada vez que se agregan nuevas tablas a la base de datos. Dado que nuestras tablas de auditoría rellenan solo los cambios y no el registro completo, no necesitamos cambiarlos cada vez que se agrega un campo.

Además, al evaluar las posibles soluciones, asegúrese de considerar lo difícil que será revertir los datos para deshacer un cambio específico. Una vez que tenga las tablas de auditoría, descubrirá que esta es una de las cosas más importantes que debe hacer con ellas. También considere lo difícil que será mantener la información a medida que cambie el esquema de la base de datos.

Elegir una solución porque parece ser la más fácil de entender, generalmente no es una buena idea. Ese debe ser el más bajo de sus criterios de selección después de cumplir con los requisitos, la seguridad, etc.

No puedo darle una experiencia real con ninguno de ellos, pero me gustaría hacer una observación.

Supongo que por AuditTrail te refieres a AuditTrail en el wiki de Django . Si es así, creo que en su lugar querrá mirar HistoricalRecords desarrollado por el mismo autor (Marty Alchin aka @gulopine) en su libro Pro Django . Debería funcionar mejor con Django 1.x.

Este es el enfoque que usaré en un próximo proyecto, no porque necesariamente supere a los demás desde un punto de vista técnico, sino porque coincide con el " mundo real " expectativas de la pista de auditoría para esa aplicación.

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