Hacker News new | past | comments | ask | show | jobs | submit login

My nutshell answer to "What is datomic?":

It is a database system for Java or Clojure where not all of the database code runs on the server. Instead, the server is fast and "dumb" and all the work for your queries runs on each client individually, which just cache chunks of data from the servers as needed. It turns out having your queries run on the clients has nice properties in terms of query language power and performance.

Additionally, it has an extremely powerful and elegant way of tracking historical information: No data is ever forgotten, so that if you want to say "run this query against the database as it was last Wednesday" you can do that. In a typical production application, much of the complexity in the database comes from having special auditing tables that keep track of historical info- In datomic you don't need to have such tables.

Finally, it can do all of these things while still being highly scalable (with a small caveat that it might not fully scale in the rare case where you have an app that is extremely write-heavy.)




Also in the revolutionary category, all data is treated as immutable, and what we traditionally consider an update to a piece of stored data (with the change being made in-place of the original datum) is treated as a new fact with just the time being different (a new record with the change in value is created along with the time of change). Since data is never changed, only added, there is no need for the traditional transaction locks, etc., thus providing a whole new way to manage and process your data and providing a perfect audit trail in the process.


I did say "no data is ever forgotten" which is a way of explaining immutability to a layman :)


Yes you did. As well as the automatic audit trail. I just wanted to emphasize the implications this has for the design of the Datomic engine. :)


How is that revolutionary ? Time series databases have been around for years (have a look at KDB as an example).


I stand corrected. Please replace "revolutionary" with "great feature". :)


Great summary!

I'd also add a sentence about transactions being first class. Everything is wrapped in transactions, you can add metadata to transactions (who did it, when did it happen), and since no data is lost, you can use transactions IDs to see what your database looked like 1 week ago, etc.


Yes, and there's tricks where you can add speculative future data, which won't actually be stored in the DB. No doubt helps with projections.

Also I like the idea that queries can invoke your own code. (Which is feasible since the queries execute on the same machine as your app.)


This ought to be front and center on their site. What you wrote there turned a bunch of meaningless buzzwords into a useful product description. I'm now actually interested in the product. Well done!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: