{"repo":"rabbitmq/khepri","free":true,"listed":false,"github":"https://github.com/rabbitmq/khepri","clone":"git clone https://github.com/rabbitmq/khepri.git","description":"Khepri is a tree-like replicated on-disk database library for Erlang and Elixir.","language":"Erlang","stars":482,"topics":["erlang","erlang-library","database","raft","elixir","elixir-library","distributed-database","distributed"],"license":"Apache-2.0","category":"databases-storage","readme_excerpt":"The Khepri database library Khepri is a tree-like replicated on-disk database library for Erlang and Elixir, built on top of the Raft consensus algorithm. The basics Data are stored in a tree structure . Each node in the tree is referenced by its path from the root node. A path is a list of Erlang atoms and/or binaries. For ease of use, Unix-like path strings are accepted as well. For consistency and replication and to manage data on disk, Khepri relies on Ra, an Erlang implementation of the Raft consensus algorithm. In Ra parlance, Khepri is a state machine in a Ra cluster. Project maturity Khepri is still under active development. That said, it is safe to be used in production . As an example, it is used as the default metadata store in RabbitMQ 4.2.x and it is even the only supported one starting from RabbitMQ 4.3.0. From an API stand point, the API will continue to evolve , sometimes with breaking changes, as we are not 100% satisfied with it. That is why Khepri 1.0.0 is not released yet. When we have to introduce a breaking change: 1. We try to provide backward compatibility first 2. When it is not possible, we describe how the change impacts a program depending on Khepri, with examples showing how to adapt the source code. Fundamental assumptions As a Raft-based system, Khepri requires durable storage , including between node restarts, and stable node (replica) identities. Likewise, as a Raft-based system, Khepri requires a majority of nodes to be online at all times. W","default_branch":null,"files":null,"tree":[],"storefront":"/r/rabbitmq","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/rabbitmq/khepri/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}