3 ms·
I'm excited that some of the ideas from Datomic are starting to make it into some open source projects. With crux last month and now Eva, there are now multiple
by CurrentB 7y ago
I'm excited that some of the ideas from Datomic are starting to make it into some open source projects. With crux last month and now Eva, there are now multiple options for modern clojure databases.
While there are many excellent ideas embedded in Datomic and these projects, for me just being able to persist the same data structures you're using at a repl and query for them with data is a huge win vs having to start translating types and concepts and query strings to and from SQL is a huge win.
- maximente 7y agocan't agree enough! was really interested in the now defunct mentat project, but was written in Rust - it's a game changer to have a JVM-powered datomic-ish project with time as a first class citizen.
- refset 7y ago> time as a first class citizen It's worth noting that time now has two levels of meaning in this context - transaction time and valid time. Disclosure: working on Crux
- maximente 7y agohey, thanks for the reply. could you highlight the differences between Eva and Crux as you see them, today? i do like passing in a timestamp and getting the state of the world as Crux seems to implement, whereas Eva seems slightly less oriented on time based querying, more so for a sort of log setup (where they have EAV+T+added?)
- refset 7y agoWell, Eva overlaps very closely with Datomic so I would recommend taking a look at the FAQ entry I wrote on the Crux/Datomic comparison (with 8 sections covering the major differences!): https://juxt.pro/crux/docs/faq.html#_comparisons https://juxt.pro/crux/docs/faq.html#_comparisons `EAV+T+added?` is the canonical data representation used by Eva, whereas Crux relies on two discrete "document" and transaction logs as the canonical representation. There are many reasons for this (data eviction, "unbundled" scalability etc.) but bitemporality (i.e. the ability to transact into the past/future) is definitely the primary reason why Crux doesn't follow the `EAV+T+Added?` pattern. You can get a feel for the indexes Crux uses here: https://github.com/juxt/crux/blob/master/src/crux/codec.clj#L26-L64 https://github.com/juxt/crux/blob/master/src/crux/codec.clj#...
- derefr 7y ago> I'm excited that some of the ideas from Datomic are starting to make it into some open source projects Now if only they’d make it into open source projects in languages other than Clojure. I want my Datomic-for-Elixir, darn it! (And, if I wasn’t too busy, I’d be the first person to volunteer to build it!)
- ilikehurdles 7y agoWhich databases are you currently using that are written in Elixir?
- derefr 7y agoOf course, I meant Erlang; these things (Riak, CouchDB, RabbitMQ) always end up getting written in Erlang. (Though I don’t think there’s been a new major infra component project started since Elixir became a viable contender, so maybe that could change.)
- ilikehurdles 7y agoI didn't realize those were written in Erlang! Similarly, on the clojure side, Datomic and Crux I think are both written in Java, despite generally being consumed by clojurey interfaces.
- estsauver 7y agoCrux is definitely written in Clojure and Hickey has said Datomic is written in Clojure in the past.
- skrebbel 7y agoIt's not precisely the same thing, but I wonder why the Elixir community doesn't seem to use mnesia too much. It ships right there with the OTP and you can store any erlang term.
- 7y ago
- eternalban 7y agoI suspect by "ideas from Datomic" you are referring to ideas predating Datomic (and Clojure) that are used and possibly refined in Datomic.
- bitwize 7y agoIn the Clojure community, no new technology officially exists until Rich Hickey invents it.
- fnordsensei 7y agoMy impression is that the Clojure community (including Rich Hickey) is generally transparent and proud about digging up and reusing ideas from the 80s in a modern context.
- abc_lisper 7y agoI think he meant to say they were not mainstream
- deleted 7y ago[deleted]
- emmanueloga_ 7y agoTo be fair, a quick google search for "open source datalog database" does not return much that is usable out-of-the-box, other than datomic: mostly academic projects or adapters for other databases with some different querying API, like SPARQL. Datomic seems to be one of the best ones in terms of execution of the ideas behind it and usage in real world projects, to say the least.
- ngcc_hk 7y agoCan you elaborate a bit more about their relationship?