4 ms·
The price is certainly right, but has anyone used this in production? What was your experience like?
by endisneigh 4y ago
The price is certainly right, but has anyone used this in production? What was your experience like?
- adamfeldman 4y agoOne example: https://www.datomic.com/nubanks-story.html https://www.datomic.com/nubanks-story.html
- dagw 4y agoWorth keeping in mind that Nubank owns the company that makes Datomic, so that might colour their opinion. On the flip side they probably wouldn't have bought the company if they thought their product was crap.
- jackrusher 4y agoYes, it's used by many companies in production. There's a partial list here: https://www.datomic.com/customers.html https://www.datomic.com/customers.html
- endisneigh 4y agoto be honest the testimonials are terrible. > “Datomic added to DynamoDB was the only option that didn’t force us to sacrifice features or add the expense of developer time. Without it, we would have had to push back a lot more, as the features would have been too difficult.” (https://www.datomic.com/the-brigades-story.html https://www.datomic.com/the-brigades-story.html) like, what? effectively useless information. some of the other testimonials mention keeping revision history, which is neat, but why Datomic vs. others? it's pretty easy to keep revision history with other databases too.
- simtel20 4y agoIt's not simply revision history, it's a complete record of everything with time, without re-architecting your data or app. IIRC datomic structures your data so that all transactions and state have a time dimension so you can go forward or back in time trivially (no special query, no temporal sql, etc.)
- motogpjimbo 4y agoWhat happens when you have a legal obligation to delete or anonymise data for some reason?
- fulafel 4y agoThere's https://docs.datomic.com/pro/reference/excision.html https://docs.datomic.com/pro/reference/excision.html - but like in other data models you also might choose to not store sensitive infromation like PII in cleartext in the main DB at all. At least in earlier versions excision wasn't supported in the Datomic Cloud version.
- lebski88 4y agoExcision still isn't supported for cloud, it is / was on their plan but there was never any movement in that direction.
- fulafel 4y agoI wonder if this is related to lack of guarantees about actual data erasure on delete in the backing storage. A lot of users probably don't take this into account when building on top of cloud storage servies.
- Timshel 4y agoNot a good look when four out of the six companies behind the "customer stories" do not exist anymore (or at least their website is dead ...)
- raybb 4y agoI haven't used it but I guess Nubank uses it. https://www.youtube.com/watch?v=qIdrT6r77gA https://www.youtube.com/watch?v=qIdrT6r77gA
- xmlblog 4y agoNetflix, Facebook (Meta), Nubank, and many others.
- 1letterunixname 4y agoI couldn't find a single reference in any codebase to "[^te]datomic" at one of those MAANGs mentioned.
- Naomarik 4y agohttps://sayartii.com/ https://sayartii.com/ is using Datomic stored on postgres that I have set up on Linode. That was all done back in 2020 and haven't needed to touch it. Site now gets ~180M monthly reqs and I store an enormous amount of analytic data on Datomic (was supposed to be temporary) so users can see impressions/clicks per day for each advertisement. I'm surprised it's still working. Development experience is extremely nice using clojure. I've used it for two other projects and has been very reliable. My latest project didn't really need any of its features compared to a traditional rdbms but I opted for it anyways so I don't have to write sql.
- mardifoufs 4y agoWas it expensive to run? Now that it is free, I guess that's less of a concern!
- ddellacosta 4y agoMy 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. If things need to scale a basic PostgreSQL setup can usually handle a lot until you need to move to e.g. RDS or whatever, and I'm probably biased but I think SQL is not really that much worse than Datalog for common use-cases. Datalog is nice though, don't get me wrong. EDIT: one point I forgot to make: the killer feature of being an immutable data store that lets you go back in time is in fact super cool, and it's probably exactly what some organizations need, but it is also costly, and I suspect the number of organizations who really need that functionality is pretty small. The place I was at certainly didn't, which is probably part of the reason for the friction I experienced.
- xmlblog 4y agoNewer 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 https://docs.datomic.com/pro/api/io-stats.html [2] https://docs.datomic.com/pro/api/query-stats.html https://docs.datomic.com/pro/api/query-stats.html
- hlship 4y agoAlthough 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