¿Dónde están todas las bases de datos nativas revisadas?

He leído todas las preguntas de SO, los artículos de Coding Horror y Google mis cerebros buscando las mejores forms 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 database para apoyar de forma nativa la revisión en el nivel de datos.

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

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

Ahora sé que las bases de datos son aplicaciones increíblemente críticas para el time, 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 loggings, quiero revertir, quiero diffs, quiero culpar, quiero tags, y quiero checkouts. Quiero control de revisión MF-ing.

Tengo una pregunta allí en alguna parte …

Una solución nativa es la Base de datos Flashback de Oracle (también conocida como Recuperación total) . Es un extra adicional a la Edición Enterprise, pero es muy bueno. Almacena de forma transparente versiones de los datos durante el time que queremos conservarlo, y proporciona syntax para consultar versiones antiguas de los datos. Se puede habilitar tabla por tabla.

Básicamente, Flashback DB es como usar triggers para almacenar loggings en las tablas de seguimiento, pero hábil, performante e invisible para el funcionamiento normal.

Podrías leer sobre las bases de datos temporales .

En "Datos temporales y el model relacional" por date, Darwen y Lorentzos, los autores introducen una sexta forma normal para tener en count los problemas en el seguimiento de los datos temporales.

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

Las implementaciones incluyen:

  • Oracle Workspace Manager
  • TimeDB

Varios DBMS implementan mecanismos de control de versiones de 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.

Olvidaste que quiero performance . Un DBMS es un mecanismo de almacenamiento de datos de nivel bastante bajo, y en sistemas con miles de millones de filas, el performance puede ser importante. Por lo tanto, si desea este tipo de sistema de auditoría, puede buildlo usted mismo utilizando las herramientas disponibles para usted (por ejemplo, activadores).

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