=======
MoaT-KV
=======
Welcome to `MoaT-KV <https://github.com/MoaT/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
Raw data
{
"_id": null,
"home_page": null,
"name": "moat-kv",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "MoaT",
"author": null,
"author_email": "Matthias Urlichs <matthias@urlichs.de>",
"download_url": "https://files.pythonhosted.org/packages/11/37/32667c1bc55bc4db2fc8b1e03ecba98286c1be1c32fa648c92029cb6c110/moat_kv-0.71.17.tar.gz",
"platform": null,
"description": "=======\nMoaT-KV\n=======\n\nWelcome to `MoaT-KV <https://github.com/MoaT/moat-kv>`__!\n\nMoaT-KV is a master-less distributed key-value storage system. It\ncircumvents the CAP theorem (you can't have all of consistency, availablilty,\nand fault tolerance) using the assumption that a key is typically changed\nby one node only. It is thus resistant to partitioning and intended to be\nalways-on; it will not block or lose updates, even in a partitioned\nnetwork.\n\nMoaT-KV comes with several batteries included:\n\n* Basic user management, pattern-based ACLs\n\n* Strong typing, code- and/or `JSON Schema`-based\n\n* Data mangling\n\n* Background code execution\n\n* Seamless recovery even if only one master is running\n\nThe underlying communication is based on MQTT. A Serf back-end is also\navailable. Others are easy to implement.\n\nMoaT-KV was originally called \"distkv\".\n\nAPI\n===\n\nMoaT-KV offers an efficient msgpack-based interface to access data and to\nchange internal settings. Most configuration is stored inside MoaT-KV\nitself.\n\nStored data are **not** forced to be strings or binary sequences, but can\nbe anything that `MsgPack` supports. Keys to storage are multi-level and\nsupport string, integer/float, and tuple keys.\n\n\nNon-Features\n============\n\nMoaT-KV does not support data partitioning. Every node stores the whole\ndata set and can instantly deliver mostly-uptodate data.\n\nMoaT-KV does not have a disk-based storage backend. Periodic snapshots and\nevent logs can be used to quickly restore a system, if necessary.\n\nStatus\n======\n\nMoaT-KV is mostly stable. There are a lot of corner cases that don't\nhave tests yet.\n\nTODOs:\n* some services (esp. command line tools and runners) are under-tested\n* there's no good API for errors\n\nTODO\n====\n\n* clean up some of the more egregious command line mistakes\n\n* create a page for showcase-ing subprojects (knx owfs akumuli \u2026)\n\n* improve Home Assistant integration\n\n",
"bugtrack_url": null,
"license": null,
"summary": "A distributed no-master key-value store",
"version": "0.71.17",
"project_urls": {
"homepage": "https://m-o-a-t.org",
"repository": "https://github.com/M-o-a-T/moat"
},
"split_keywords": [
"moat"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "e5acde48fcebaceb6cdcb7d84a9a7896d9b2ba08890199af94d56bdf2abf942b",
"md5": "a3d222c1c1060e7e300074d275155720",
"sha256": "ea5bae79124acd595f71e56d7174335d6e6d12dea1708e755c8d41aa926e93ea"
},
"downloads": -1,
"filename": "moat_kv-0.71.17-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a3d222c1c1060e7e300074d275155720",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 123704,
"upload_time": "2025-08-12T15:50:14",
"upload_time_iso_8601": "2025-08-12T15:50:14.726113Z",
"url": "https://files.pythonhosted.org/packages/e5/ac/de48fcebaceb6cdcb7d84a9a7896d9b2ba08890199af94d56bdf2abf942b/moat_kv-0.71.17-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "113732667c1bc55bc4db2fc8b1e03ecba98286c1be1c32fa648c92029cb6c110",
"md5": "0f92e75ca746d59fa12482e6b3f95b78",
"sha256": "f09be198e4e023750c4ae3ca9640612d0fc82f8661e521a9b1b152e29712b3e0"
},
"downloads": -1,
"filename": "moat_kv-0.71.17.tar.gz",
"has_sig": false,
"md5_digest": "0f92e75ca746d59fa12482e6b3f95b78",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 167121,
"upload_time": "2025-08-12T15:50:16",
"upload_time_iso_8601": "2025-08-12T15:50:16.409743Z",
"url": "https://files.pythonhosted.org/packages/11/37/32667c1bc55bc4db2fc8b1e03ecba98286c1be1c32fa648c92029cb6c110/moat_kv-0.71.17.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-12 15:50:16",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "M-o-a-T",
"github_project": "moat",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "anyio",
"specs": []
},
{
"name": "anyio_serial",
"specs": []
},
{
"name": "trio",
"specs": []
},
{
"name": "asyncclick",
"specs": []
},
{
"name": "asyncscope",
"specs": []
},
{
"name": "git",
"specs": []
},
{
"name": "msgpack",
"specs": []
},
{
"name": "simpleeval",
"specs": []
},
{
"name": "ruyaml",
"specs": []
},
{
"name": "cffi",
"specs": []
},
{
"name": "packaging",
"specs": []
},
{
"name": "pymodbus",
"specs": []
},
{
"name": "tomlkit",
"specs": []
}
],
"lcname": "moat-kv"
}