News for hackers. Stuff that matters.
Re:Datomic Is Now Free by electroly on Thursday April 27, 2023 @12:28PM (#35730559)
I appreciated this insight into other people's use cases, thank you for that! This architecture brings RethinkDB to mind, which also had some ability to run your client as a cluster node that you alone get to query. (Although there it was more about receiving the live feed than about caching a local working set.)
Re:Datomic Is Now Free by thewataccount on Thursday April 27, 2023 @02:20PM (#35732412)
Is RethinkDB still around?

They actually have recent commits, and a release last year.

Re:Datomic Is Now Free by electroly on Thursday April 27, 2023 @02:30PM (#35732556)
The company is gone, but the open source project lives on. We still use it in production.
Re:Datomic Is Now Free by thewataccount on Thursday April 27, 2023 @02:48PM (#35732824)
How's it been for production?

Would you recommend using it, or would it be better to go with a safer option?

Re:Datomic Is Now Free by electroly on Thursday April 27, 2023 @03:00PM (#35732993)
We've never had any issue with it on a typical three-node install in Kubernetes. It requires essentially no ongoing management. That said, it can't be ignored that the company went under and now it's in community maintenance mode. If you don't have a specific good use for Rethink's changefeed functionality, which sets it apart from the alternatives, I'm not sure I could recommend it for new development. We've chosen not to rip it out, but we're not developing new things on it.
Re:Datomic Is Now Free by thewataccount on Thursday April 27, 2023 @03:35PM (#35733434)
Interesting thank you!

I remember back when it came out it was a big deal that it could easily scale master-master nodes and the object format was a big thing because of Mongo back then.

That was before k8's wasn't a thing back then, and most of the failover for other databases wasn't a thing just yet. I'm too scared to use it because they have a community but they're obviously nowhere as active as the Postgres and other communities.

Re:Datomic Is Now Free by jwr on Friday April 28, 2023 @06:56AM (#35739701)
RethinkDB user here. I've been running it in production for the last 8 years or so. It works. It doesn't lose data. It doesn't corrupt data (like most distributed databases do, read the Jepsen reports).

I am worried about it being unmaintained. I do have some issues that are more smells than anything else — like things becoming slower after an uptime of around three weeks (I now reboot my systems every 14 days). I could also do with improved performance.

I'm disappointed that the Winds of Internet Fashion haven't been kind to RethinkDB. It was always a much better proposition that, say, MongoDB, but got less publicity and sort of became marginalized. I guess correct and working are not that important.

I'm slowly rebuilding my application to use FoundationDB. This lets me implement changefeeds, is a correct distributed database with fantastic guarantees (you get strict serializability in a fully distributed db!), and lets me avoid the unneeded serialization to/from JSON as a transport format.

Re:Datomic Is Now Free by svieira on Thursday April 27, 2023 @02:36PM (#35732662)
> which also had some ability to run your client as a cluster node that you alone get to query

FoundationDB does this as well.

Re:Datomic Is Now Free by bsaul on Friday April 28, 2023 @05:17AM (#35739136)
Do you have a pointer to some doc explaining how to do that in foundationdb ?
Re:Datomic Is Now Free by svieira on Friday April 28, 2023 @10:08AM (#35741427)
https://blog.the-pans.com/notes-on-the-foundationdb-paper/ is one:

> Client (notice not Proxy) caches uncommitted writes to support read-uncommitted-writes in the same transaction. This type of read-repair is only feasible for a simple k/v data model. Anything slightly more complicated, e.g. a graph data model, would introduce a significant amount of complexity. Caching is done on the client, so read queries can bypass the entire transaction system. Reads can be served either locally from client cache or from storage nodes.