Quand dois-je utiliser Datomic?
Je suis intrigué dans le service de base de données Datomic, mais je ne suis pas sûr si elle répond aux besoins des projets sur lesquels je travaille. Quand est Datomic un bon choix, et quand doit-il être évité?
- Si vous avez besoin d'1) voyage dans le temps dans vos données que j'ai.e aller au-delà des faits, 2) l'Utilisation correcte des données de schéma, mais que vous voulez toujours utiliser un "NoSQL" de stockage des données pour des faits de stockage. 3) Si vous souhaitez travailler avec vos données à l'aide de la puissance de Datalog. 4) Vous n'êtes pas la création d'une course de l'usine de la web-app, comme dans ce cas, votre base de données existante compétences sont plus réalisables.
- Je recommande fortement ce parler par Datomics inventeur Rich Hickey infoq.com/presentations/datomic-functional-database où il montre également certaines de ses principales caractéristique des idées en action.
Vous devez vous connecter pour publier un commentaire.
Avec la condition que je n'ai pas utilisé Datomic dans la production, j'ai pensé vous donner une réponse.
Avantages
un. Cela vous permet également de stocker, tout en économisant sur les structures, tous les derniers faits dans votre base de données—ce qui est TRÈS utile pour l'audit & plus
Inconvénients
Je suis sûr que je suis pas certains de chaque côté, et bien que j'ai 3 répertoriées sous les inconvénients, je pense que les avantages l'emportent sur les circonstances où les inconvénients de ne pas empêcher son utilisation. Le prix est sans doute celle qui permettra d'éviter qu'elle soit utilisée dans la plupart des petits projets (que vous pouvez vous attendre à survivre à l'1 an d'essai gratuit).
Cf. cette court post décrivant Datomic simplement pour plus d'information.
Expressivité (c.f. Datalog) et l'immuabilité sont impressionnantes. C'est TELLEMENT amusant de travailler avec Dataomic à cet égard, et vous pouvez dire, c'est puissant, simplement en utilisant un peu.
Une chose importante lorsque l'on considère si Datomic est de la bonne taille pour votre application est de réfléchir à la forme des données que vous allez stocker et d'interroger - comme Datomic faits sont en fait très similaires à des triplets RDF (+ de première classe de notion du temps), il se prête très bien à la modélisation des relations complexes (lié graphique de données) - quelque chose qui est souvent fastidieux traditionnelle des bases de données SQL.
J'ai trouvé cet aspect pour être l'un des plus beaux et importants pour moi, il a vraiment bien travaillé, même si bien sûr ce n'est pas quelque chose d'exclusif à Datomic, car il ya beaucoup d'autres de haute qualité pour les offres d'graphique de bases de données, il faut mentionner le Neo4J, lorsque nous parlons de la JVM de solutions fondées.
Concernant Datomic schéma, je pense que c'est le juste équilibre entre la souplesse et la stabilité.
Pour compléter les réponses ci-dessus, je voudrais souligner que l'immuabilité et la capacité à se souvenir du passé ne sont pas des " wizardry fonctionnalités adaptés à quelques cas particuliers comme l'audit. C'est une approche qui a une profondeur de plusieurs avantages par rapport à 'mutable des cellules de bases de données (qui sont à 99% des bases de données aujourd'hui). Stuart Halloway le démontre bien dans cette vidéo: l'adaptation d'Impédance est de notre faute.
Dans mon opinion personnelle, cette approche est fondamentalement plus sain sur le plan conceptuel. Après l'avoir utilisé pendant plusieurs mois, je ne vois pas Datomic a avoir fou magique sophistiqué pouvoirs, plutôt un son plus naturel paradigme sans quelques-uns des grands problèmes que les autres ont.
Voici quelques caractéristiques de Datomic je trouve précieux, dont la plupart sont activées par l'immuabilité:
Concernant le moment pas à utiliser Datomic, voici les contraintes et les limites que je vois:
Donc, mon très vague et informelle réponse serait que Datomic est un bon ajustement pour la plupart des non-trivial applications qui se charge d'écriture est très raisonnable et vous n'avez pas de problème avec la licence et d'être sur la JVM.
Comme une analogie, vous pouvez vous poser la même question pour Git par rapport à d'autres systèmes de contrôle de version qui ne sont pas basées sur l'immuabilité.
Juste pour essayer d'ajouter sur les autres réponses:
Il est probablement juste de dire datomic présente le cadre conceptuel pour une queryable banque de données de tous les autres options là-bas, tout en étant partiellement évolutive et pas exceptionnellement performant.
Je dis seulement partiellement évolutive, car les requêtes doivent s'inscrire dans le peer RAM ou échouer. Et pas exceptionnellement performant, que les top-notch SQL moteurs, il est possible d'optimiser des requêtes pour tenir en mémoire sophistiqués des plans d'exécution, quelque chose que je n'ai pas encore vu mentionné comme une fonction de datomic; Datomic du découplage de la transaction et l'interrogation pourrait dans l'ensemble de compenser cette fonctionnalité.
Contrairement à de nombreux moteurs NoSQL cependant, les transactions sont un citoyen de première classe, ce qui la met à égalité avec des systèmes SGBDR qui touche le sujet.
Pour les applications où les données sont lues en plus d'être écrit, les transactions sont nécessaires, les requêtes de toujours tenir en mémoire ou de la mémoire est très bon marché, et la taille globale de l'accumulation de données n'est pas trop grand, il pourrait être une victoire où un commercial-seul produit peut être offerte ― pour ceux qui sont disposés à accepter son nouveau cadre conceptuel implicite dans l'API.