What does HackerNews think of datahike?
A durable Datalog implementation adaptable for distribution.
[0]: https://github.com/replikativ/datahike
[1]: https://github.com/replikativ/datahike#when-to-choose-datahi...
I would really like a pure Rust version of Datomic for embed use cases.
There is all also Datahike, that is going in that direction too. It is maintained and actively developed.
https://github.com/replikativ/datahike
Is an Open Source variant of Datomic.
Lambdaforge wants to eventually have this work with CRDTs.
Using the Matrix ecosystem for this is quite interesting as it solves many problems for you already.
Roam's performance suffers mainly on first-load because they are server-first, and they load the entire db into memory at the beginning (such that it's quite fast thereafter).
Once we have true local-first data structures with something like https://github.com/replikativ/datahike, we could still have fast in-memory, but also fast initial load.
As of v0.6.0 it use hitchhiker-tree synchronization for replication.
I've been playing around with datahike[0] a lot recently. It is a Clojure Datalog based DB like Datomic[1] and in fact mimics its API and behavior, but will by default just write to a directory (not a single file last time I checked) and (will?) support other back-ends such as PostgreSQL. Checkout the repo for more information on the differences.
These DBs are not exactly graph DBs (like for example Neo4j) but modelling and (recursively) querying graph data is very much a straight-forward use-case.
Schemas are attribute based rather than record/collection based, so you get the kind of schema flexibility you are used to from graph DBs.
Another interesting fact is that these are 'immutable' or rather value oriented by default. In simple terms: transactions are additions of facts rather than mutations.
Datalog is the primary query language which has really interesting/nice properties. It is worth checking out just for that fact. In Clojure these queries are just normal Clojure data-structures. One of the Clojure linters clj-kondo[2] even ships with static analysis for the soundness of these queries.