D
Datomic Blog
blog.datomic.com · Company blog · on HN since 2012
The Datomic team at Cognitect writes about the Datomic database, covering schema design, features, cloud offerings and licensing.
What HN saysHN commenters cite it on schema growth, and note that Datomic is now free. Some see immutable databases as overlooked.
49HN people shared it
22linked it in comments
46stories submitted
1.7Kstory points
7 months agolast shared
2012people per year2026
Most-shared posts
- 1Codeq11 people · 344 points · first shared 2012 · 52 comments on HN
- 2Datomic Is Now Free6 people · 175 points · first shared 2023 · 45 comments on HN
- 3The Ten Rules of Schema Growth5 people · 15 points · first shared 2017 · discussion on HN
- 4Excision in Datomic4 people · 69 points · first shared 2013 · 39 comments on HN
- 5Datomic Local3 people · 31 points · first shared 2023 · 2 comments on HN
- 6Datomic Cloud2 people · 273 points · first shared 2018 · 106 comments on HN
- 7More Power for Datomic Datalog: Negation, Disjunction, and Range Optimizations2 people · 29 points · first shared 2015 · discussion on HN
- 8Datomic adds Riak and Couchbase Support2 people · 9 points · first shared 2012 · discussion on HN
- 9Datomic Analytics (Preview)2 people · 6 points · first shared 2019 · discussion on HN
- 10Datomic Cloud is now free2 people · 2 points · first shared 2023 · discussion on HN
- 11Codeq: Git Repositories in Datomic (2012)2 people · 1 points · first shared 2016 · discussion on HN
- 12Datomic Update: Client API, Unlimited Peers, Enterprise Edition, and More1 people · 147 points · first shared 2016 · 66 comments on HN
- 13Datomic Free Edition1 people · 132 points · first shared 2012 · 78 comments on HN
- 14Datomic Pro Starter Edition1 people · 111 points · first shared 2013 · 57 comments on HN
- 15Fixing Bad Data in Datomic1 people · 103 points · first shared 2014 · 16 comments on HN
What HN people wrote when they linked it
beders · 2026-01-05
While the author mentions that he just doesn't have the time to look at all the databases, none of the reviews of the last few years mention immutable and/or bi-temporal databases.
Which looks more like a blind spot to me honestly. This category of databases is just fantastic for industries like fintech.
Two candidates are sticking out.
https://xtdb.com/blog/launching-xtdb-v2 (2025)
https://blog.datomic.com/2023/04/datomic-is-free.html (2023)
xmlblog · 2023-04-27
> If you have 10s or 100s of app servers that has the exact same working set in memory, it's probably not worth it.
The introduction of intelligent application-level partitioning [1] and routing schemes can help one balance cost and performance.
[1] https://blog.datomic.com/2023/04/implicit-partitions.html
stuarthalloway · 2021-04-20
Do you have a specific example? Datomic is great for evolving in prod (https://blog.datomic.com/2017/01/the-ten-rules-of-schema-growth.html), and Clojure is a great language for generating data (or ETL) when you want to make radical changes in dev.
sgrove · 2013-11-08
Wow, very cool indeed. We worked on an open-source community[1] tool using Datomic/Codeq[2], and the ops portion was/has been pretty unpleasant. I'd love to see Datomic-as-a-Service popup, even as a only-meant-for-starter-projects, just so that experimenting with it could be that much easier. That might be possible with the new license, depending on how the Cognitect team sees it.
[1] The service is a frontend to Codeq, having imported many Clojure repos: http://www.jidaexplorer.com/
[2] http://blog.datomic.com/2012/10/codeq.html
EDIT: Added links.
nikodotio · 2024-09-25
It is free now:
https://blog.datomic.com/2023/04/datomic-is-free.html
kjqgqkejbfefn · 2024-02-04
https://blog.datomic.com/2012/10/codeq.html
>codeq ( 'co-deck') is a little application that imports your Git repositories into a Datomic database, then performs language-aware analysis on them, extending the Git model down from the file to the code quantum (codeq) level, and up across repos. By doing so, codeq allows you to:
>Track change at the program unit level (e.g. function and method definitions)
>Query your programs and libraries declaratively, with the same cognitive units and names you use while programming
>Query across repos
Clever321 · 2023-10-01
I really like the datomic guidelines for change, which negates a category of migration headaches: https://blog.datomic.com/2017/01/the-ten-rules-of-schema-growth.html
nightwolf · 2023-08-04
FWIW, Datomic still isn't open-source, but it is free:
- https://blog.datomic.com/2023/04/datomic-is-free.html
- https://blog.datomic.com/2023/06/datomic-cloud-is-free.html
rippeltippel · 2023-04-28
> if you're ever introducing a new language, regardless of context, throw some code samples
This is not a new language, it's a tool for Clojure.
I really appreciate the contributions that Nubank is making (after making Datomic free, https://blog.datomic.com/2023/04/datomic-is-free.html). My only nitpick this time is that I would have liked some screenshots/screencasts of the this new tool in action.
slifin · 2019-08-27
http://blog.datomic.com/2012/10/codeq.html
I think codeq 2 is being worked on
puredanger · 2018-01-17
This is the mobile link, better link is http://blog.datomic.com/2018/01/datomic-cloud.html
sgentle · 2017-06-04
This looks like it: http://blog.datomic.com/2013/07/datomic-musicbrainz-sample-database.ht…
aboodman · 2016-10-16
If you take a language parser and pipe the resulting AST into Noms, you basically get something like codeq (http://blog.datomic.com/2012/10/codeq.html).
alpyne · 2016-06-07
Sourcegraph folk, are you aware of Rich Hickey's codeq [0][1] for clojure:
codeq allows you to track change at the program unit level (e.g. function and method definitions) and query your programs and libraries declaratively, with the same cognitive units and names you use while programming
[0] http://blog.datomic.com/2012/10/codeq.html
[1] https://github.com/Datomic/codeq#codeq
harperlee · 2016-05-30
For joining vcs (git) plus db (datomic), there's an interesting library called codeq:
http://blog.datomic.com/2012/10/codeq.html?m=1
juliangamble · 2016-04-10
Rich Hickey's (of Clojure fame) Datomic database uses Datalog as its query language.
http://docs.datomic.com/query.html
http://blog.datomic.com/2015/01/datalog-enhancements.html
Nathan Marz's (of Twitter startup fame) Cascalog library (also implemented in Clojure) uses Datalog as its query engine to generate Hadoop jobs.
http://alexrobbins.github.io/cascalog-intro/#/step-14
http://clojure.com/blog/2012/02/03/functional-relational-programming-w…
danneu · 2013-11-09
Excision removes the data.
In other words, you can remember that you forgot, but you can't remember what you forgot.
http://blog.datomic.com/2013/05/excision.html
What you're describing is plain ol retraction. If you retract your credit card number, then someone can just surf back in time to grab it. That's why you'd excise it.
n72 · 2013-05-25
Relatedly, see Rich Hickey's http://blog.datomic.com/2012/10/codeq.html
taliesinb · 2012-11-28
Yeah, it kinda sucks -- mostly one learns to create new copies of definitions/code when doing substantial changes, which the notebook interface makes quite convenient. Or use a full blown editor like Eclipse.
The holy grail as I see it would be storing the entire edit history of the document as a git-like tree of modifications, which is entirely possible because Mathematica notebooks are themselves built out of Mathematica expressions (see for example Cell http://reference.wolfram.com/mathematica/ref/Cell.html). This would be similar to Rich Hickey's work on language-aware version control (http://blog.datomic.com/2012/10/codeq.html)
chillax · 2012-11-02
In related news Riak was in fact added as supported storage today: http://blog.datomic.com/2012/11/riak-and-couchbase-support.html
brandonbloom · 2015-02-01
> I'm curious to know what the actual data structure is.
This tweet from Rich provides the missing puzzle pieces:
"The log is not a btree - used for durability, not query. Separate indexes combine memory with batch-updated storage."
https://twitter.com/richhickey/status/420910382538948608
Restating in my own words:
The transaction log is essentially just a stream of asserts and retracts with metadata. That's used for durability first and echoed to clients/peers and the indexing engine. The indexing engine asynchronously batch updates indexes (which probably are b-trees, but have no need to be streaming append-only style in this context). The peers query a joined dataset of the latest consistent indexes plus the set of unindexed transactions.
> As append-only B tree is persistent.
You're right, it can be. However, the popular append-only b-tree systems (such as CouchDB) are actually append-only B+-tree systems. That "+" means the leaves of the tree are intrusively linked together, and so are not persistent. You can not "fork" such trees cheaply.
> losing information is a specific feature that was added to git
http://blog.datomic.com/2013/05/excision.html