amqtt_db
========
![license](https://img.shields.io/github/license/volkerjaenisch/amqtt_db?style=flat-square)
[![Build Status](https://travis-ci.org/volkerjaenisch/amqtt_db.svg?branch=main)](https://travis-ci.org/volkerjaenisch/amqtt_db)
[![Coverage Status](https://coveralls.io/repos/github/volkerjaenisch/amqtt_db/badge.svg?branch=main)](https://coveralls.io/github/volkerjaenisch/amqtt_db?branch=main)
[![PyPI](https://img.shields.io/pypi/v/amqtt_db)](https://pypi.org/project/amqtt_db/)
[![Documantation](https://img.shields.io/readthedocs/amqtt-db.svg)](https://amqtt_db.readthedocs.io/en/latest/)
DB persistence for [amqtt](https://github.com/Yakifo/amqtt).
Objective
---------
amqtt_db persists payloads received by the [amqtt broker](https://github.com/Yakifo/amqtt) into performant relational databases.
SQLAlchemy as well as timescaleBD are the target RMDB-Systems.
amqtt_db will do four steps to persist the amqtt data:
1) decoding the payload (e.G. from binary, JSON or which ever encoding)
1) deserializing the payload to typed Python entities
1) structure the session, topic, property, value information into a relational model of your choice
1) generate the necessary tables, columns to store the data
All of this steps can be configured via the amqtt yaml config. And you can even replace any these steps for each topic
by your code in terms of Python plugins.
amqtt is designed to be enhanced and extended.
Performance
-----------
Flexibility comes with a penalty on performance. The more layers of classes and filters we
implement the higher the performance penalty.
So we optimize the data flow by an optimistic approach.
amqtt_db expects that the decoding, deserializing, transformations, target DB, target tables, table colums
etc. are all well in place if it deals with a single incoming packet.
If the handling of that package fails, exceptions will be raised, and the error handling rushes in to deal with the problem.
Since the change rate on the decoding, deserializing, database model is quite low this optimistic approach will be quite performant.
Documentation
-------------
Please have a look at the [documentation](http://amqtt-db.readthedocs.io).
Raw data
{
"_id": null,
"home_page": "https://github.com/volkerjaenisch/amqtt_db",
"name": "amqtt_db",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.7",
"maintainer_email": null,
"keywords": "amqtt, MQTT, Persistence, SQLAlchemy, Database",
"author": "volker",
"author_email": "volker.jaenisch@inqbus.de",
"download_url": "https://files.pythonhosted.org/packages/6f/31/99e5e1d7488f9c1b3586ba75d635125f85866ddb403da69cb2a24dc95a84/amqtt_db-0.1.5.tar.gz",
"platform": null,
"description": "amqtt_db\n========\n\n![license](https://img.shields.io/github/license/volkerjaenisch/amqtt_db?style=flat-square)\n[![Build Status](https://travis-ci.org/volkerjaenisch/amqtt_db.svg?branch=main)](https://travis-ci.org/volkerjaenisch/amqtt_db)\n[![Coverage Status](https://coveralls.io/repos/github/volkerjaenisch/amqtt_db/badge.svg?branch=main)](https://coveralls.io/github/volkerjaenisch/amqtt_db?branch=main)\n[![PyPI](https://img.shields.io/pypi/v/amqtt_db)](https://pypi.org/project/amqtt_db/)\n[![Documantation](https://img.shields.io/readthedocs/amqtt-db.svg)](https://amqtt_db.readthedocs.io/en/latest/)\n\nDB persistence for [amqtt](https://github.com/Yakifo/amqtt).\n\nObjective\n---------\n\namqtt_db persists payloads received by the [amqtt broker](https://github.com/Yakifo/amqtt) into performant relational databases.\nSQLAlchemy as well as timescaleBD are the target RMDB-Systems.\n\namqtt_db will do four steps to persist the amqtt data:\n\n 1) decoding the payload (e.G. from binary, JSON or which ever encoding)\n 1) deserializing the payload to typed Python entities\n 1) structure the session, topic, property, value information into a relational model of your choice\n 1) generate the necessary tables, columns to store the data \n\nAll of this steps can be configured via the amqtt yaml config. And you can even replace any these steps for each topic \nby your code in terms of Python plugins.\namqtt is designed to be enhanced and extended.\n\n\nPerformance\n-----------\n\nFlexibility comes with a penalty on performance. The more layers of classes and filters we \nimplement the higher the performance penalty. \n\nSo we optimize the data flow by an optimistic approach. \n\namqtt_db expects that the decoding, deserializing, transformations, target DB, target tables, table colums \netc. are all well in place if it deals with a single incoming packet.\nIf the handling of that package fails, exceptions will be raised, and the error handling rushes in to deal with the problem.\n\nSince the change rate on the decoding, deserializing, database model is quite low this optimistic approach will be quite performant. \n\nDocumentation\n-------------\n\nPlease have a look at the [documentation](http://amqtt-db.readthedocs.io).\n",
"bugtrack_url": null,
"license": "MIT",
"summary": null,
"version": "0.1.5",
"project_urls": {
"Homepage": "https://github.com/volkerjaenisch/amqtt_db",
"Repository": "https://github.com/volkerjaenisch/amqtt_db"
},
"split_keywords": [
"amqtt",
" mqtt",
" persistence",
" sqlalchemy",
" database"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "a65bf370ae0cd8267877dadb195e01c8ea0be0fc23e66ac960cac8e4978b0b8f",
"md5": "93e572f0e1f26d3384d017558cf5945b",
"sha256": "5e5dfb205c2cba82ea0be39aa3fb449c199003e909ba0f5f523f6379629d9dc8"
},
"downloads": -1,
"filename": "amqtt_db-0.1.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "93e572f0e1f26d3384d017558cf5945b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.7",
"size": 20296,
"upload_time": "2024-04-28T11:52:01",
"upload_time_iso_8601": "2024-04-28T11:52:01.847167Z",
"url": "https://files.pythonhosted.org/packages/a6/5b/f370ae0cd8267877dadb195e01c8ea0be0fc23e66ac960cac8e4978b0b8f/amqtt_db-0.1.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6f3199e5e1d7488f9c1b3586ba75d635125f85866ddb403da69cb2a24dc95a84",
"md5": "908f0fe6e3032388e7339b091812e2e3",
"sha256": "dc3762fb5b5072a1d33401014d04b41dee4da7393f53a56b5786d067dbe5e8b9"
},
"downloads": -1,
"filename": "amqtt_db-0.1.5.tar.gz",
"has_sig": false,
"md5_digest": "908f0fe6e3032388e7339b091812e2e3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.7",
"size": 13858,
"upload_time": "2024-04-28T11:52:03",
"upload_time_iso_8601": "2024-04-28T11:52:03.786950Z",
"url": "https://files.pythonhosted.org/packages/6f/31/99e5e1d7488f9c1b3586ba75d635125f85866ddb403da69cb2a24dc95a84/amqtt_db-0.1.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-28 11:52:03",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "volkerjaenisch",
"github_project": "amqtt_db",
"travis_ci": true,
"coveralls": true,
"github_actions": true,
"requirements": [],
"lcname": "amqtt_db"
}