Khepri - a tree-like replicated on-disk database library for Erlang and Elixir (introduction & feedbacks)

Khepri 0.7.0 is out!

The focus in this release was put on two things:

  1. Improvements and fixes to projections. Projections are a mechanism introduced in Khepri 0.6.0 to allow fast queries with a low latency. They suffered several bugs; for example, the deletion of an entire subtree may not have been reflected in the projections’ ETS table. They saw several speed improvements as well.
  2. Refactoring to make it easier to maintain the library. The large khepri_machine module was split into several modules. Also, the khepri_fun module was extracted and we created a new library out of it; I talked about it in the “Horus - extract an anonymous function as a standalone module” discussion.

With Khepri 0.7.0, we believe the API and the code to be a lot more stable. We still have several ideas we would like to implement and, as part of the integration into RabbitMQ, we might discover that some aspects of the API are not good enough and need further brekaing changes. Yet, we think the library is in good shape and we “promoted” it from alpha to beta quality.

I’m not sure yet what will be the main topic of the next release at this point. We still want to work on the frequency of the underlying Raft snapshots: the ideal would be something that adjusts itself automatically, but we are not sure how to achieve that yet.

As always, please thumbs up if you like and hit that “Subscribe” button!

7 Likes