armink / FlashDB

An ultra-lightweight database that supports key-value and time series data | 一款支持 KV 数据和时序数据的超轻量级数据库
Apache License 2.0
1.7k stars 400 forks source link
database embedded iot key-value kvdb lightweight tsdb

GitHub Action license docs

EN | 中文

Introduction

FlashDB is an ultra-lightweight embedded database that focuses on providing data storage solutions for embedded products. Different from traditional database based on file system, FlashDB combines the features of Flash and has strong performance and reliability. And under the premise of ensuring extremely low resource occupation, the service life of Flash should be extended as much as possible.

FlashDB provides two database modes:

Usage scenario

Nowadays, there are more and more types of IoT products, and the types and total amount of data generated during operation are also increasing. FlashDB provides a variety of data storage solutions, not only has a small resource footprint, but also has a large storage capacity, which is very suitable for IoT products. The following are the main application scenarios:

Key Features

Performance and footprint

TSDB performance test 1 (nor flash W25Q64)

msh />tsl bench
Append 1250 TSL in 5 seconds, average: 250.00 tsl/S, 4.00 ms/per
Query total spent 2218 (ms) for 1251 TSL, min 1, max 2, average: 1.77 ms/per

Insert average: 4 ms, query average: 1.8 ms

TSDB performance test 2 (stm32f2 onchip flash)

msh />tsl bench
Append 13421 TSL in 5 seconds, average: 2684.20 tsl/S, 0.37 ms/per
Query total spent 1475 (ms) for 13422 TSL, min 0, max 1, average: 0.11 ms/per

Insert average: 0.37 ms, query average: 0.12 ms

Footprint (stm32f4 IAR8.20)

    Module                  ro code  ro data  rw data
    ------                  -------  -------  -------
    fdb.o                     276      232        1
    fdb_kvdb.o              4 584      356        1
    fdb_tsdb.o              1 160      236
    fdb_utils.o               418    1 024

The above is the map file information of IAR. It can be seen that the footprint of FlashDB is very small.

How to use

FlashDB provides comprehensive documentation, see: https://armink.github.io/FlashDB/#/

Quick access:

License

The project uses the Apache-2.0 open source protocol. For details, please read the contents of the LICENSE file in the project.