distkv


Namedistkv JSON
Version 0.65.0 PyPI version JSON
download
home_pagehttps://github.com/smurfix/distkv
SummaryA distributed no-master key-value store
upload_time2023-05-05 14:34:59
maintainer
docs_urlNone
authorMatthias Urlichs
requires_python>=3.8
licenseMIT -or- Apache License 2.0
keywords async key-values distributed
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage
            ======
DistKV
======

Welcome to `DistKV <https://github.com/smurfix/distkv>`__!

DistKV is a master-less distributed key-value storage system. It
circumvents the CAP theorem by assuming that keys are usually only changed
by one node. It is resistant to partitioning and intended to be always-on;
it might delay – but will not lose – updates even in a partitioned network.

DistKV 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

* a MQTT 3.1 back-end that stores persistent data in DistKV,
  based on hbmqtt

API
===

DistKV offers an efficient msgpack-based interface to access data and to
change internal settings. Most configuration is stored inside DistKV
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 list keys.


Non-Features
============

DistKV does not support data partitioning. Every node stores the whole
data set and can instantly deliver mostly-uptodate data.

DistKV does not have a disk-based storage backend; periodic snapshots and
event logs can be used to quickly restore a system, if necessary.

Status
======

DistKV 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

Changelog
=========

0.41: the message monitor can do multiple subpaths and only reports initial-load-complete once

0.40: use asyncscope for running subsystems in a reasonable way

0.35: allow forgetting nodes (if they have no data attached)

0.30: major API refactoring: paths are now separate objects

TODO
====

* update the whole ecosystem to anyio 2.0 (asyncclick asyncscope …)

* clean up some of the more egregious command line mistakes

* create a page for showcase-ing subprojects (distinv knx owfs akumuli …)

* improve Home Assistant integration


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/smurfix/distkv",
    "name": "distkv",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "async,key-values,distributed",
    "author": "Matthias Urlichs",
    "author_email": "matthias@urlichs.de",
    "download_url": "https://files.pythonhosted.org/packages/aa/60/cc1292bc676e7f622900eb28f6b2a5c45e8ac5d3cd612c3275cf50757f73/distkv-0.65.0.tar.gz",
    "platform": null,
    "description": "======\nDistKV\n======\n\nWelcome to `DistKV <https://github.com/smurfix/distkv>`__!\n\nDistKV is a master-less distributed key-value storage system. It\ncircumvents the CAP theorem by assuming that keys are usually only changed\nby one node. It is resistant to partitioning and intended to be always-on;\nit might delay \u2013 but will not lose \u2013 updates even in a partitioned network.\n\nDistKV 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\n* a MQTT 3.1 back-end that stores persistent data in DistKV,\n  based on hbmqtt\n\nAPI\n===\n\nDistKV offers an efficient msgpack-based interface to access data and to\nchange internal settings. Most configuration is stored inside DistKV\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 list keys.\n\n\nNon-Features\n============\n\nDistKV does not support data partitioning. Every node stores the whole\ndata set and can instantly deliver mostly-uptodate data.\n\nDistKV 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\nDistKV 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\nChangelog\n=========\n\n0.41: the message monitor can do multiple subpaths and only reports initial-load-complete once\n\n0.40: use asyncscope for running subsystems in a reasonable way\n\n0.35: allow forgetting nodes (if they have no data attached)\n\n0.30: major API refactoring: paths are now separate objects\n\nTODO\n====\n\n* update the whole ecosystem to anyio 2.0 (asyncclick asyncscope \u2026)\n\n* clean up some of the more egregious command line mistakes\n\n* create a page for showcase-ing subprojects (distinv knx owfs akumuli \u2026)\n\n* improve Home Assistant integration\n\n",
    "bugtrack_url": null,
    "license": "MIT -or- Apache License 2.0",
    "summary": "A distributed no-master key-value store",
    "version": "0.65.0",
    "project_urls": {
        "Homepage": "https://github.com/smurfix/distkv"
    },
    "split_keywords": [
        "async",
        "key-values",
        "distributed"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b2c6549caf5c376809e871cf1ed2cf315159c462be0de3fcd33d15288117d5f4",
                "md5": "708c866c9c5320c23a6d28cf92d2dc32",
                "sha256": "32cbf90e852773e8ab9f334357e7175c1d00ffdf1e54c59c0feea5fbc08e7fd5"
            },
            "downloads": -1,
            "filename": "distkv-0.65.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "708c866c9c5320c23a6d28cf92d2dc32",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 152079,
            "upload_time": "2023-05-05T14:34:56",
            "upload_time_iso_8601": "2023-05-05T14:34:56.085077Z",
            "url": "https://files.pythonhosted.org/packages/b2/c6/549caf5c376809e871cf1ed2cf315159c462be0de3fcd33d15288117d5f4/distkv-0.65.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aa60cc1292bc676e7f622900eb28f6b2a5c45e8ac5d3cd612c3275cf50757f73",
                "md5": "831fb28401c04c367a45a32fc64eba29",
                "sha256": "562dd6b4f6a8c3f372815fe66e4f85ab5ce999d2cefe79966487ca4a558a8ef5"
            },
            "downloads": -1,
            "filename": "distkv-0.65.0.tar.gz",
            "has_sig": false,
            "md5_digest": "831fb28401c04c367a45a32fc64eba29",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 179508,
            "upload_time": "2023-05-05T14:34:59",
            "upload_time_iso_8601": "2023-05-05T14:34:59.262649Z",
            "url": "https://files.pythonhosted.org/packages/aa/60/cc1292bc676e7f622900eb28f6b2a5c45e8ac5d3cd612c3275cf50757f73/distkv-0.65.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-05-05 14:34:59",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "smurfix",
    "github_project": "distkv",
    "travis_ci": true,
    "coveralls": true,
    "github_actions": false,
    "appveyor": true,
    "lcname": "distkv"
}
        
Elapsed time: 0.06190s