Bases de datos de uso general que nunca eliminan o actualizan datos in situ [cerrado]


Estoy muy inspirado por el enfoque de gestión de datos defendido por Rich Hickey, e implementado en Datomic, donde los datos nunca se mutan en el lugar, todas las versiones son siempre preservadas y capaces de consultar, y el tiempo es un concepto de primera clase.

Por supuesto, hay bases de datos especializadas que coinciden con esa descripción, como Git, o cualquier otro sistema de control de código fuente. La pregunta es si hay (más o menos) DBMS-es de propósito general de relacional, gráfico, jerárquico, documento o cualquier otro tipo que se puede utilizar de manera efectiva en, por ejemplo, una aplicación web de comercio electrónico. O es Datomic la única opción entonces?

Author: Ivan Krechetov, 2012-11-22

2 answers

Existe un enfoque para diseñar sistemas con la idea de nunca eliminar o mutar datos llamado Aprovisionamiento de eventos. Básicamente, la idea es almacenar eventos (o hechos) que cambian el estado del sistema, en lugar de instantáneas del estado. La historia de los eventos se puede reproducir más adelante para producir una cierta proyección específica de lo que el estado en cualquier momento en el tiempo parecía. Múltiples proyecciones construidas para diferentes propósitos pueden coexistir en el sistema. Puede encontrar más información en el los siguientes sitios web:

Está en línea con lo que está describiendo, pero en lugar de ser solo un modelo de base de datos, el Aprovisionamiento de Eventos y la Segregación de Responsabilidad de Consulta de Comandos (CQRS) prescriben una forma especial de diseñar todo el sistema, incluidas las capas de base de datos y lógica de negocio.

Hay algunos marcos que siguen este enfoque, tales como:

Si bien esto no responde directamente a su pregunta, puede proporcionar una perspectiva diferente sobre el problema.

 32
Author: Anton Beloglazov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-16 02:57:00

Irmin es una base de datos distribuida que sigue los mismos principios de diseño que Git.

 6
Author: Dzmitry Lahoda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-25 18:36:28