Si está interesado en los beneficios que puede obtener de la inmutabilidad en una base de datos, o al menos en una base de datos que ofrece la ilusión de la inmutabilidad, marque Datomic.
Datomic es una base de datos inventada por Rich Hickey en alianza con Think Relevance, hay muchos videos donde explican la arquitectura, los objetivos y el modelo de datos. Buscar infoq, uno en particular se titula Datomic, Database as a Value . En confreaks puede encontrar una nota clave que Rich Hickey dio en la conferencia euroclojure en 2012. confreaks.com/videos/2077-euroclojure2012-day-2-keynote-the-datomic-architecture-and-data-model
Hay una charla en vimeo.com/53162418 que está más orientada al desarrollo.
Aquí hay otro de stuart halloway en.pscdn.net/008/00102/videoplatform/kv/121105techconf_close.html
- Datomic es una base de datos de hechos en el tiempo, llamados datos, en 5 tuplas [E, A, V, T, O]
- E ID de entidad
- Un nombre de atributo en la entidad (puede tener espacios de nombres)
- V Valor del atributo
- T ID de transacción, con esto tienes noción de tiempo.
- O Una operación de aserción (valor presente o actual), rechazo (valor pasado);
- Utiliza su propio formato de datos, llamado EDN (notación de datos extensible)
- Las transacciones son ACID
- Utiliza el registro de datos como lenguaje de consulta, que es declarativo como consultas recursivas SQL +. Las consultas se representan con estructuras de datos, y extendidas con su lenguaje jvm, no necesita usar clojure.
- La base de datos está desacoplada en 3 servicios separados (procesos, máquinas):
- Transacción
- Almacenamiento
- Motor de consultas.
- Puede escalar por separado cada servicio.
- No es de código abierto, pero hay una versión gratuita (como en cerveza) de Datomic.
- Puede establecer un esquema flexible.
- conjunto de atributos está abierto
- agregar nuevos atributos en cualquier momento
- sin rigidez en la definición o consulta
Ahora, dado que la información se almacena como hechos a tiempo:
- todo lo que debe hacer es agregar datos a la base de datos, nunca los eliminará (excepto cuando lo exija la ley)
- puedes guardar todo en caché para siempre. Query Engine, vive en el servidor de aplicaciones como una base de datos en memoria (para los idiomas jvm, los idiomas que no son jvm tienen acceso a través de una API REST).
- puede consultar a partir del tiempo en el pasado.
La base de datos es un valor y un parámetro para el motor de consulta, el QE gestiona la conexión y el almacenamiento en caché. Como puede ver la base de datos como un valor y una estructura de datos inmutable en la memoria, puede fusionarla con otra estructura de datos hecha a partir de valores "en el futuro" y pasarla al QE y consultar con valores futuros, sin cambiar la base de datos real .
Hay un proyecto de código abierto de Rich Hickey, llamado codeq , puede encontrarlo en github Datomic / codeq, que amplía el modelo git y almacena referencias a objetos git en una base de datos libre de datos, y realiza consultas de su código, usted puede ver un ejemplo de cómo usar datomic.
Puede pensar en datomic como un ACID NoSQL, con datums puede modelar tablas o documentos o tiendas Kv o gráficos.