[ANN] Khepri 0.3.0 - A tree-like replicated on-disk database library

Frank Muller frank.muller.erl@REDACTED
Wed Apr 27 05:14:08 CEST 2022


Congratulations for the new release.

Did you update the benchmark against Mnesia? Is Kephri 0.3.0 faster?


> Hi!
>
> On behalf of the RabbitMQ team, I'm pleased to announce Khepri 0.3.0! It
> is available on:
>      * GitHub (https://github.com/rabbitmq/khepri/releases/tag/v0.3.0)
>      * 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[1], 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 [2] describe the content of Khepri 0.3.0 in details,
> with examples. The most important and breaking change is the revamp of
> the public API. Here is a summary of the major highlights of this change:
>
> * The high- vs low-level API distinction is now gone. The public API is
>    now exposed by `khepri` only. `khepri_machine` becomes an internal
>    private module. As part of that `khepri` grew several new functions
>    for common use cases and we will certainly add more in the future,
>    based on the feedback.
>
> * Unix-like path are first-class citizen: all functions taking a native
>    path ([stock, wood, <<"oak">>]) now accept Unix-like paths
>    ("/:stock/:wood/oak"). In the process, the syntax of Unix-like paths
>    evolved: atoms are represented as :atom and binaries are represented
>    as-is, binary. The main reason is that using <<binary>> for binaries
>    was difficult to read and type.
>
> * Payload and event filter records are now private. Payload types are
>    automatically detected now, likewise for event filters. That said, it
>    is still possible to use functions to construct the internal
>    structures, but it should rarely be necessary.
>
> * `khepri_tx`, the module to perform Khepri calls inside transactions,
>    will now expose the same API as `khepri`, except when functions don’t
>    make sense in a transaction.
>
> As always, I would loooove to hear from anyone who glanced at the code,
> the documentation or even started to play with Khepri :-)
>
> [1] https://github.com/rabbitmq/ra
> [2] https://github.com/rabbitmq/khepri/releases/tag/v0.3.0
>
> --
> Jean-Sébastien Pédron
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20220427/b3767695/attachment.htm>


More information about the erlang-questions mailing list