Lab Notes #002 Found embedded database
For the programming environment, I wanted a database embedded in it. I had stuided the architecture of Datomic, and it seems a convincing architecture to solve the problem of creating offline apps distributed online. However, Datomic is proprietary, and there isn't an official corresponding client side database either.
I'm hesitant to build a database, as there's a lot of work involved. But in the interest of learning Rust, as well as learning how things worked, I started off with a B+ tree. Small steps.
I tried to make a B+ tree in Rust, but found that it wasn't a good fit, as evidenced by various forum posts for Rust. B+ tree has multiple pointers pointing to the same data structure, which makes for a complicated ownership story.
When looking at replacing the linked-list pointer with file offsets instead, since B+ tree needed to read and write files anyway, it lead down the path looking at various embedded databases like RocksDB and LevelDB. The type of issues with OS compatibility and consistency was more than I wanted to take on at the moment. So in the search, I had found that someone more experienced had already devoted six years to writing an embedded database. I can leverage this to build indicies instead of trying to build my own from scratch.
Given this is suppose to be a swappable boundary in the system anyway, I think we don't need to go all Handmade here. Next up is to build an index on top of the embedded DB.