fix(ds): Update README

This commit is contained in:
ieQu1 2023-12-01 06:10:28 +01:00
parent 0ae618d010
commit e238602533
1 changed files with 28 additions and 14 deletions

View File

@ -1,36 +1,50 @@
# EMQX Replay
`emqx_ds` is a generic durable storage for MQTT messages within EMQX.
`emqx_ds` is an application implementing durable storage for MQTT messages within EMQX.
Concepts:
# Features
- Streams. Stream is an abstraction that encompasses topics, shards, different data layouts, etc.
The client application must only aware of the streams.
- Batching. All the API functions are batch-oriented.
> 0. App overview introduction
> 1. let people know what your project can do specifically. Is it a base
> library dependency, or what kind of functionality is provided to the user?
> 2. Provide context and add a link to any reference visitors might be
> unfamiliar with.
> 3. Design details, implementation technology architecture, Roadmap, etc.
- Iterators. Iterators can be stored durably or transferred over network.
They take relatively small space.
# [Features] - [Optional]
> A List of features your application provided. If the feature is quite simple, just
> list in the previous section.
- Support for various backends. Almost any DBMS that supports range
queries can serve as a `emqx_durable_storage` backend.
- Builtin backend based on RocksDB.
- Changing storage layout on the fly: it's achieved by creating a
new set of tables (known as "generation") and the schema.
- Sharding based on publisher's client ID
# Limitation
TBD
- Builtin backend currently doesn't replicate data across different sites
- There is no local cache of messages, which may result in transferring the same data multiple times
# Documentation links
TBD
# Usage
TBD
Currently it's only used to implement persistent sessions.
In the future it can serve as a storage for retained messages or as a generic message buffering layer for the bridges.
# Configurations
TBD
`emqx_durable_storage` doesn't have any configurable parameters.
Instead, it relies on the upper-level business applications to create
a correct configuration and pass it to `emqx_ds:open_db(DBName, Config)`
function according to its needs.
# HTTP APIs
None
# Other
TBD