Datomic, la base de données qui n’oublie rien

logo-datomic

C'est au cours d'une conférence de Devoxx France 2015 que j'ai eu connaissance de cette nouvelle base de données ou devrais-je dire de ce nouveau type de base de données.

Datomic est une base de données transactionnelle, distribuée et temporelle.

Sa principale particularité est qu'elle n'efface aucune donnée. Elle marque les modifications de ces dernières dans le temps. Vous devinez donc qu'elle nécessite beaucoup de ressources mémoire (stockage et ram).

Un peu d'histoire

Pour comprendre ce besoin, Datomic nous replonge un peu dans l'histoire de l'informatique.
Historiquement, nous n'avions pas beaucoup de mémoire car c'était une ressource chère. L'une des principales techniques était de supprimer au plus vite les anciennes données pour les remplacer par des plus récentes. L'ère du "Place Oriented Programming" (PLOP) est alors apparue.
Le défaut de ce style de programmation est qu'il tue l'information. On se prive donc de l'historique de cette dernière. Et voilà l'une des raisons pour laquelle nos bases de données relationnelles actuelles gèrent incorrectement les historisations de nos données. Elles sont, en effet, nées sous cette ère.

Datomic et son datamodel

L'idée est donc d'arrêter de supprimer les données car en 2015, le stockage n'est plus un problème !
Pour cela, Datomic conserve toujours la donnée car elle se base sur le fait. Un fait est immuable, atomique et temporel.
Datomic gère des datoms dont le datamodel est le suivant:
Entité, Attribut, Valeur, Temps, Opération (true / false, insert / delete )
toto, aime, pizza, 1001, true
toto, aime, bière, 1001, true
toto, aime, pizza, 1002, false

Ce datamodel ne possède donc pas de tables. Il se rapproche des bases de données SchemaLess (Clé/Valeur) tout en conservant les capacités ACID des bases de données traditionnelles en gérant les transactions à l'aide d'un composant appelé le Transactor.

Conclusion

Datomic me parait être une base de données à exploiter si nos applications ont un besoin d'historisation.
L'un des avantages de cette solution est sa gestion clé en main de la temporalité de nos données ainsi que de ses capacités de scalabilité en lecture tout en conservant la gestion transactionnelle des données.
A contrario, l'un des inconvénients que je vois également est sa limite en écriture en raison de ses caractéristiques ACID.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *