The conversation

Lessons learnedExperience excerpt · English

My personal experience was using Datomic backed by DynamoDB, at the second Clojure company I worked …

My personal experience was using Datomic backed by DynamoDB, at the second Clojure company I worked at. In particular I remember feeling like it was hard to anticipate and understand its performance characteristics in particular, and how indices can be leveraged effectively. Maybe if we had chosen Postgres as a backing store that would have been better? I dunno. Using it was pretty nice at the scale of a small startup with a motivated team, but scaling it up organizationally-speaking was a challenge due to Datalog's relative idiosyncrasy and poor tooling around the database itself. This was compounded by the parallel challenge of keeping a Clojure codebase from going spaghetti-shaped, which happens in that language when teams scale without a lot of "convention and discipline"--it may be easier to manage otherwise. All of that said, this was years ago so maybe things have changed. At this point I'd choose either PostgreSQL or SQLite for any project I'm getting started with, as they are both rock-solid, full-featured projects with great tooling and widespread adoption. …

Original discussionDatomic Is Now Free368 source comments · at import
2

What was this responding to?

Parent context · original excerpt

EN

The price is certainly right, but has anyone used this in production? What was your experience like?

Full original

Community replies 0

No community replies yet. Add your perspective.

Replies from the source 2

Direct replies available in this import. Original-language excerpts.

XM

Newer releases have improved significantly in this area. It's now possible to understand perf implications with the addition of io-stats[1] and query-stats[2]. [1] https://docs.datomic.com/pro/api/io-stats.html [2] https://docs.datomic.com/pro/api/query-stats.html

Full original
HL

Although it is true that "time traveling" queries are relatively rare for production needs, the basic architecture supports things that many applications really need: - It is possible to make queries against the database PLUS additional data not yet added, that is, "what if" queries - Having a stable database-as-value is really useful for paginating results; you don't have to worry about new values being inserted into your results during execution, the way you do with traditional databases no longer how long (minutes, hours, even days) you take to traverse the data - Reified transactions makes it possible to store extra data with each transaction, trivially, such as who made the update and why - Immutability is amazing for caching at all layers

Full original
Continue on Hacker News

Respect different perspectives. Share concrete experiences.

Sign in to post, reply, repost, and quote.