2010-04-27 24 views
12

He leído todas las preguntas de SO, los artículos de Coding Horror y Google mis cerebros buscando las mejores formas de revisar los datos de control. Todos funcionan y todos tienen sus implementaciones apropiadas basadas en casos de uso, etc. Lo que realmente quiero saber es por qué no se ha escrito una base de datos para apoyar de forma nativa la revisión en el nivel de datos.¿Dónde están todas las bases de datos nativas revisadas?

Lo que me sorprende es que la API ya está prácticamente en su lugar con las transacciones. Comenzamos una transacción, cambiamos algunos datos y confirma. También estamos autenticando contra la base de datos, por lo que la culpa está presente. Mi empresa almacena versiones de fin de mes de toda nuestra base de datos para fines de contabilidad, lo que equivale a etiquetas. ¿Esto no grita RCS?

La bifurcación es algo que las bases de datos podrían beneficiarse mucho también en lo que respecta al esquema más que a los datos. Como realmente solo me importan los datos y esto aumentaría la dificultad de la implementación en un grado masivo, me apegaré solo a las etiquetas y los compromisos.

Ahora sé que las bases de datos son aplicaciones increíblemente críticas, por lo que cualquier sobrecarga innecesaria se evita en el olvido y algunas bases de datos son de nivel épico y las revisiones solo expondrán ese tamaño. Un control de revisión opcional por tabla, sin duda, tiene un lugar en entornos de pequeña a mediana escala donde hay milisegundos de sobra y el historial de datos tiene un grado de importancia. Quiero commits, quiero registros, quiero revertir, quiero diffs, quiero culpar, quiero etiquetas, y quiero checkouts. Quiero control de revisión MF-ing.

Tengo una pregunta en alguna parte ...

Respuesta

3

Una solución nativa de Oracle es de Flashback Database (aka Total Recall). Es un extra adicional a la Edición Enterprise, pero es muy bueno. Almacena de forma transparente versiones de los datos durante el tiempo que queremos conservarlo, y proporciona sintaxis para consultar versiones antiguas de los datos. Se puede habilitar tabla por tabla.

Esencialmente Flashback DB es como usar desencadenadores para almacenar registros en tablas de seguimiento, pero pulcro, performant e invisible para el funcionamiento normal.

0

se le olvidó Quiero rendimiento. Un DBMS es un mecanismo de almacenamiento de datos de nivel bastante bajo, y en sistemas con miles de millones de filas, el rendimiento puede ser importante. Por lo tanto, si desea este tipo de sistema de auditoría, puede construirlo usted mismo utilizando las herramientas disponibles para usted (por ejemplo, activadores).

Al igual que en un sistema de archivos, no todos los archivos son apropiados para el control de versiones, en una base de datos no todas las filas serían apropiadas para el control de versiones tampoco.

+0

He hecho la ruta de desencadenamiento que está bien y totalmente en la lógica de la aplicación y ambos definitivamente funcionan, pero no sé por qué ninguno de estos existe. Me gustaría ver una revisión que incluya cambios en más de una fila e incluso más de una tabla, sin embargo. Y como dije, esto tendría que ser una adición opcional y una tabla, ya que el rendimiento siempre es importante. Supongo que como esto no se pudo hacer en una implementación grande, es por eso que nunca se ha implementado en las bases de datos principales. Sin embargo, algunos de mis sitios web y aplicaciones más pequeños y especializados se beneficiarían. –

3

Puedes leer sobre temporal databases.

En "Temporal Data & the Relational Model" por Date, Darwen y Lorentzos, los autores introducen un sixth normal form para tener en cuenta los problemas en el seguimiento de los datos temporales.

Richard Snodgrass propuso TSQL2 como extensión de SQL para manejar datos temporales.

implementaciones incluyen:

+0

Me sorprende que nunca haya oído hablar de esto, pero parece muy prometedor en cuanto a lo que he imaginado en mi cabeza de una lectura rápida del artículo de Wikipedia. No estoy buscando nada preparado para producción, solo algo con lo que hackear. –

+0

Wow, entonces TSQL2 era un niño de los años 90. Días previos a la wikipedia. Creo que debe ser despertado porque el suelo para esas semillas de ideas es un poco más fértil en estos días. –

1

Varios DBMS implementan mecanismos de control de versiones del motor. Lamentablemente, no existe un estándar independiente del proveedor para esto, por lo que todos son propietarios. El flashback de Oracle ya ha sido mencionado. La característica de Microsoft Change Data Capture en SQL Server es otra.

Cuestiones relacionadas