[ANN] Khepri 0.2.1 - A tree-like replicated on-disk database library
Fri Feb 18 10:55:01 CET 2022
On behalf of the RabbitMQ team, I'm pleased to announce Khepri 0.2.1! It
is available on:
* GitHub (https://github.com/rabbitmq/khepri/releases/tag/v0.2.1)
* Hex.pm (https://hex.pm/packages/khepri)
Khepri is a tree-like replicated on-disk database library for Erlang and
Elixir. This is a library we plan to use inside RabbitMQ as a
replacement for Mnesia. Indeed, we want to leverage Ra, our
implementation of the Raft consensus algorithm, to have a uniform
behavior, especially w.r.t. network partitions, across all types of data
managed by RabbitMQ.
The release notes of 0.2.0  describe the highlights of Khepri 0.2.x
in detail, but I would like to quickly talk about the biggest one:
triggers and stored procedures!
Triggers are a mechanism to execute an anonymous function automatically
following some events.
Currently supported events are changes made to the tree: nodes were
created, updated or deleted. In the future, it could support Erlang
process monitoring, node monitoring, and so on. Triggers are registered
using an event filter which, as its name suggests, takes care of
filtering the event which should execute the associated function.
The anonymous function behind a trigger is stored in the database as the
payload of tree node. This function is called a stored procedure. Before
it is stored, the function is extracted like transaction functions are.
However, there are no restrictions on what it can do, unlike transaction
If you have any comments and feedback, or if you started to play with
the library in one of your projects, please share! I’m looking forward
to listen to your experience!
Thank you very much!
More information about the erlang-questions