A distributed no-master key-value store
Project description
Welcome to MoaT-KV!
MoaT-KV is a master-less distributed key-value storage system. It circumvents the CAP theorem (you can’t have all of consistency, availablilty, and fault tolerance) using the assumption that a key is typically changed by one node only. It is thus resistant to partitioning and intended to be always-on; it will not block or lose updates, even in a partitioned network.
MoaT-KV comes with several batteries included:
Basic user management, pattern-based ACLs
Strong typing, code- and/or JSON Schema-based
Data mangling
Background code execution
Seamless recovery even if only one master is running
The underlying communication is based on MQTT. A Serf back-end is also available. Others are easy to implement.
MoaT-KV was originally called “distkv”.
API
MoaT-KV offers an efficient msgpack-based interface to access data and to change internal settings. Most configuration is stored inside MoaT-KV itself.
Stored data are not forced to be strings or binary sequences, but can be anything that MsgPack supports. Keys to storage are multi-level and support string, integer/float, and tuple keys.
Non-Features
MoaT-KV does not support data partitioning. Every node stores the whole data set and can instantly deliver mostly-uptodate data.
MoaT-KV does not have a disk-based storage backend. Periodic snapshots and event logs can be used to quickly restore a system, if necessary.
Status
MoaT-KV is mostly stable. There are a lot of corner cases that don’t have tests yet.
TODOs: * some services (esp. command line tools and runners) are under-tested * there’s no good API for errors
TODO
clean up some of the more egregious command line mistakes
create a page for showcase-ing subprojects (knx owfs akumuli …)
improve Home Assistant integration
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.