Blog (page 4 of 7)
Log API for Memory Databases
10 August 2016
The most recent Datomic Release provides access to the Datomic Log API for memory databases. I would like to take this opportunity to describe some of the features and uses of the Datomic Log API.
The transactional log is a fundamental component of ACID database systems, a durable record of the transactions performed by the database. In addition to its critical function in ensuring ACID semantics, the Datomic log, as a sequential (in database time, t) record of all transactions, also functions as a time-ordered index to the data stored in a Datomic database.
You Might Not Need an ORM
23 April 2016
Over the last few months, my colleague Michael Nygard has been writing The New Normal series over on the Cognitect blog, arguing that our industry needs to embrace continuous partial failure and aim to build antifragile systems.
Reified Transactions
03 December 2015
Domain data often answers the question "what", e.g.
-
What products are in inventory?
-
What users have accounts on the system?
-
What tests have been run?
But many domains also include information about the provenance of data, e.g.
CQRS with Clojure, Kafka, and Datomic
24 November 2015
Datomic’s clean separation of reads and writes has inspired many comparisons with the CQRS (Command and Query Responsibility Segregation) architectural pattern.
Yeller chooses Datomic
05 November 2015
Yeller is an exception tracking service whose goal is to provide clear, actionable information to developers to take the pain out of examining application errors. They chose Clojure and Datomic as the platform for Yeller in order to make the development process more effective and more efficient.
Nubank chooses Datomic
14 September 2015
Brazil is the world’s 5th largest country in both area and population, has the 2nd most airports (behind the United States), and one of the highest credit card interest rates in the world. The Brazilian banking industry is both heavily regulated and extremely concentrated. Enter Nubank, whose founders have created a banking alternative in one of the world’s fastest growing mobile markets.
A Conversational Introduction to Datomic
20 August 2015
My colleague Carin Meier has been writing up her conversations with Datomic, introducing the database via an imagined dialog between a new user and the database. In a very short space she introduces
Datomic Best Practices
07 July 2015
We are happy to announce the addition of a Best Practices section to the Datomic Development Resources documentation. The Best Practices topic is a tool to help users quickly find preferred usage patterns when approaching common scenarios in Datomic.
More Power for Datomic Datalog: Negation, Disjunction, and Range Optimizations
13 January 2015
Today’s Datomic release includes a number of enhancements to Datomic’s Datalog query language:
-
Negation, via the new not and not-join clauses
-
Disjunction (or) without using rules, via the new or and or-join clauses
-
Required rule bindings
-
Improved optimization of range predicates
Each is described below, and you can follow the examples from the mbrainz data set in Java or in Clojure.
Datomic Pull API
28 October 2014
Datomic’s new Pull API is a declarative way to make hierarchical selections of information about entities. You supply a pattern to specify which attributes of the entity (and nested entities) you want to pull, and db.pull returns a map for each entity.
Pull API vs. Entity API
The Pull API has two important advantages over the existing Entity API:
Pull uses a declarative, data-driven spec, whereas Entity encourages building results via code. Data-driven specs are easier to build, compose, transmit and store. Pull patterns are smaller than entity code that does the same job, and can be easier to understand and maintain.
Pull API results match standard collection interfaces (e.g. Java maps) in programming languages, where Entity results do not. This eliminates the need for an additional allocation/transformation step per entity.