Nubank, l’entreprise américaine qui a racheté Cognitect et qui détient de grandes plateformes bancaires numériques, vient d’annoncer que toutes les versions de Datomic, sa base de données distribuée, sont disponibles gratuitement. Cela sous-entend que la version professionnelle ainsi que la version cloud de Datomic qui étaient jusque-là fournies avec des licences payantes sont maintenant disponibles sans frais. De quoi se réjouir ? Pas vraiment pour certains utilisateurs qui font remarquer que les binaires de Datomic sont disponibles gratuitement, mais ne sont pas open source.Qu’est-ce que Datomic et à quoi peut-il servir ?
Datomic est un système de gestion de base de données opérationnelle distribuée et une implémentation de Datalog, le langage de programmation logique déclaratif. Selon Nubank, il n’est pas conçu pour être un entrepôt de données ni un système à haut débit et à haut taux de désabonnement (tel qu’une base de données de séries chronologiques ou un magasin de journaux). Par contre, il conviendrait parfaitement aux systèmes qui stockent des informations précieuses, nécessitant une flexibilité opérationnelle et de développement et qui ont besoin de capacités d’historique et d’audit avec une évolutivité en lecture. En guise d’exemple, Nubank rapporte que quelques cas d’utilisation réussis de Datomic incluent les données transactionnelles, les dossiers commerciaux, les dossiers médicaux, les dossiers financiers, les dossiers scientifiques, l’inventaire, la configuration, les applications Web, les bases de données départementales et les applications cloud. Il a été conçu pour une utilisation de première classe avec des langages JVM tels que Java et Clojure.
En quoi Datomic est-il différent ?
La principale chose qui distingue Datomic est qu’il accumule des faits. Les faits d’une base de données sont immuables : une fois stockés, ils ne changent pas. Cependant, la plupart des bases de données attribuent des valeurs à des emplacements nommés, tels qu’un champ dans une ligne particulière, un nœud dans un document particulier. Dans ces systèmes, à mesure que ces valeurs changent, les nouvelles valeurs écrasent les anciennes. Datomic par contre se distingue de ces bases de données en ce sens qu’il suit l’historique complet d’un fait et vous permet d’accéder rapidement et facilement à ses états précédents. Selon Nubank, en plus ce modèle de données — basé sur des faits immuables stockés au fil du temps — Datomic qui se présente comme une base de données décomposée distribue le traitement de la lecture, de l’écriture et des requêtes sur différents composants au lieu de traiter toutes les requêtes dans un seul composant serveur.
Datomic divise le modèle de base de données traditionnel en rôles indépendants :
Pairs : le composant pair est une bibliothèque qui s’intègre dans les applications. Il soumet les transactions de l’agent et accepte les modifications de celui-ci. Il inclut tous les composants de communication pour parler aux agents et aux services de stockage. En sus, il fournit une capacité d’accès aux données, de mise en cache et de requête à l’application, en lisant à partir du service de stockage si nécessaire.
Clients : la bibliothèque Client peut être utilisée pour connecter des processus légers à Datomic. Elle soumet les transactions et les requêtes au serveur pair. Elle prend en charge toutes les fonctionnalités de requête disponibles pour le serveur pair. Selon Nubank, elle n’entraîne aucune surcharge de mémoire de la totalité de la bibliothèque paire et n’effectue pas de mise en cache locale dans le processus léger. Enfin, elle peut prendre en charge des langages non JVM.
Serveur pair : le Server pair est un processus JVM qui fournit une interface pour la bibliothèque Datomic Client. Il accepte les requêtes et les transactions des clients Datomic et lui soumet des transactions. De même, il accepte des modifications de l’agent. Enfin, il fournit une capacité de requête, d’accès aux données, de mise en cache aux clients connectés, et une lecture à partir du service de stockage si nécessaire.
Agents : ils acceptent les transactions et les traitent en série. Ils enregistrent les résultats sur le service de stockage. À noter que toutes les écritures sont effectuées de manière synchrone sur un stockage redondant. Ils transmettent les modifications aux serveurs pairs et placent des index en arrière-plan dans le service de stockage.
Services de stockage : il fournit une interface vers un stockage hautement fiable et redondant et est disponible auprès de tiers (par exemple Amazon DynamoDB qui est un service de stockage pris en charge).
Alors, comment ça marche ?...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.
