4 ms·
This model is somewhat similar to how Datomic models transactions -- Datomic uses immutable datoms and includes a transaction ID with each datom: "A datom consi
by espeed 13y ago
This model is somewhat similar to how Datomic models transactions -- Datomic uses immutable datoms and includes a transaction ID with each datom: "A datom consists of an entity, attribute, value and transaction (time)" (http://www.datomic.com/rationale.html http://www.datomic.com/rationale.html).
However, Datomic's design is based on a single, centralized transactor that pushes out all the new transaction information to an index that is distributed to all its clients (peers), whereas NBTA would enable distributed transactors.
See "The Datomic Data Model"
http://www.datomic.com/rationale.html#DataModel http://www.datomic.com/rationale.html#DataModel
From Datomic's FAQ http://www.datomic.com/faq.html http://www.datomic.com/faq.html ...
How does Datomic provide ACID guarantees?
The transactor serializes all transactions, and each transaction runs against a stable view of the database, and succeed or fail in their entirety. Transactions are not acknowledged until after they are logged in storage. Atomic read/modify/write operations can be performed by database functions, which run on the transactor within the transaction. Note that Datomic can provide ACID guarantees without utilizing read-transactions, nor read locks, due to the presentation to the query engine(s) of the database as an immutable value.
---//---
Rich Hickey on Datomic's design...
Intro to Datomic (12 min)
http://www.youtube.com/watch?v=RKcqYZZ9RDY# http://www.youtube.com/watch?v=RKcqYZZ9RDY#!
The Design of Datomic (60 min)
http://www.infoq.com/presentations/The-Design-of-Datomic http://www.infoq.com/presentations/The-Design-of-Datomic
The Datomic Architecture and Data Model (46 min)
https://vimeo.com/45136212 https://vimeo.com/45136212
- pbailis 13y agoVery cool, thanks! In general, immutable data items makes NBTA much easier; there's only one element in either 'good' or 'pending' for each data item at a time. The benefit of a single centralized transactor/ID generator is that it provides a simple total ordering on updates. The downside is that updates must (often) complete sequentially to guarantee safety and that the centralized service can become a bottleneck/challenge during failures. That said, I'm a big fan of the Datomic vision and look forward to seeing what they're able to accomplish.