#dev-diaries #gitdb #mona #database
I've been working for the past little bit on a database that uses git as the network layer, the thinking is that we should be able to build applications that allow users to choose who they trust to host their private data.
The main use case for this database would be apps that aim to help you organize your life a bit, things like password managers, note taking apps, todo apps, etc.
I had implemented a very naive key value database that stored each entry as a separate encrypted file, this meant that git could do it's thing and replicate only the changed blobs. But it made queries super slow.
I've now start working on a new implementation built on top of a #rust embedded database: #sled.
This should improve the performance a great deal and give us a much more robust storage layer.
The current work is in turning sled into a CRDT so that we can handle merge conflicts automatically.
The plan is to implement an ORSWOT based map CRDT, assuming you don't have too many devices, the CRDT overhead is super minimal. We'll need to store a map global vector clock and an additional two vector clocks per entry, not bad
Show whole feed