Can the keys in an OR-map be arbitrary values, or must they be keywords?
Similar question for user-id
and crdt-id
, must they be UUIDs?
I designed them to be UUIDs because they should not accidentally clash globally while being compact identifiers (because we send them around a lot). hasch.core/uuid
can map values to unique UUIDs. user-id
is supposed to refer to an external identity system that can be used to authenticate users, like e-mail.
I have a playground here to synchronize hitchhiker-trees with Clojure: https://gitlab.com/replikativ/index-sync/blob/master/src/index_sync/core.clj. The idea was to use it as a general building block for replikativ and then define CRDT semantics for datahike so we have a better programming model for distributed systems.
I have tried to present the overall goal here: https://www.youtube.com/watch?v=A2CZwOHOb6U
(feedback and discussion is very welcome 🙂 )
Regarding the or-map, keys can be non-uuid. If you are interested in using it I can help you. I think the current interface is not optimal.
@cjsauer tightrope looks interesting. Are you aware of https://github.com/metasoarous/datsync?
We are currently working on import utilities from Datomic to datahike. In particular @konrad.kuehne is thinking about how to do so in a correct way.
And @niko963 is working on 3DF which we want to couple to datahike experimentally to allow a reactive, differential frontend programming model (DataScript's eager queries quickly slow down frontends once you get many updates into your client state and have to rerun the queries).
A problem is to prioritize things and getting some help 😉. We are still a small community with a bit of contracting to help our open-source work, but we have big goals. In particular datopia is supposed to make services permissionless in our ecosystem and we collaborate with https://www.oicos.org/ who have the next-level game theory to build complicated markets and infrastructure, e.g. distributed smart energy grids where batteries and power plants can trade with each other.