Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

In my experience, we often ran into strange issues with Datomic- like restoring new databases with same name but different logical id, excision.. is hard, ingesting a large amount of read-only data without impacting txs, inability to have non-JVM clients- as well as the cost, opaqueness and inability to hire. We're actually going the opposite direction and wrote a replication stream to Postgres using the tx log API.


It's definitely not without issues. However, I've found it very simple to work with once you are aware of all the operational gotchas. Needless to say, it's especially powerful in a 100% Clojure stack.

The features I like most are

1) the transaction log - I've done something like that many times using Postgres and EventStore, but nothing beats the simplicity of just defining a few queries in code and having immediate updates on new transactions delivered to every peer.

2) idempotency - reasserting the same facts is a noop. Doing the same with a temporal table as suggested somewhere in this thread is not as trivial.

3) consistent db snapshots - once you get a hold of the database value, all the reads will only see the data as of time the value was retrieved. This makes application code much easier to reason about as the database can be treated as yet another immutable argument.

4) assembling a transaction value out of multiple pieces - same as the above, pure functions can all contribute to the final transaction value without having to mutate anything.

5) "free" caching on the peer - once you query something, it stays in the peer's memory. Subject to memory constraints, of course.

You can definitely build something as nice as Datomic on top of Postgres, but it will take weeks to get all the details right.


This doesn't really address anything I mentioned.

The database is fine; and it was nice to work with when it was just 2 engineers. For us, it didn't scale with # of engineers, business needs like BI, ETLs of large amount of healthcare data into Datomic; then needing to delete said data. We spent a lot of time reinventing the wheel around schema management and building a declarative query interface as well.

> few queries > take weeks

Godspeed.


Hey, thanks for the comment.

To clarify - I wasn't trying to address the issues you've stumbled into, but rather list all the points I like about it.


This doesn't surprise me. It just plain doesn't have the eyeballs nor the deployment scale to shake all of these issues out. Postgres has both.




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

Search: