• Stars
    star
    1,461
  • Rank 32,191 (Top 0.7 %)
  • Language
    C
  • License
    Apache License 2.0
  • Created over 4 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An ultra-lightweight database that supports key-value and time series data | 一款支持 KV 数据和时序数据的超轻量级数据库

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:

  • Key-value database: It is a non-relational database that stores data as a collection of key-value pairs, where the key is used as a unique identifier. KVDB has simple operation and strong scalability.
  • Time Series Database: Time Series Database (TSDB), which stores data in time sequence. TSDB data has a timestamp, a large amount of data storage, and high insertion and query performance.

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-value database:
    • Product parameter storage
    • User configuration information storage
    • Small file management
  • Time Series Database:
    • Store dynamically generated structured data: such as environmental monitoring information collected by temperature and humidity sensors, human health information recorded in real time by smart bracelets, etc.
    • Record operation log: store operation log of product history, record of abnormal alarm, etc.

Key Features

  • Very small footprint, ram usage is almost 0;
  • Support multiple partitions, multiple instances. When the amount of data is large, the partition can be refined to reduce the retrieval time;
  • Support wear balance to extend Flash life;
  • Support Power-off protection function, high reliability;
  • Supports two KV types, string and blob, which is convenient for users to operate;
  • Support KV incremental upgrade, after product firmware upgrade, KVDB content also supports automatic upgrade;
  • Support to modify the status of each TSDB record to facilitate user management;

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.

More Repositories

1

EasyLogger

An ultra-lightweight(ROM<1.6K, RAM<0.3k), high-performance C/C++ log library. | 一款超轻量级(ROM<1.6K, RAM<0.3k)、高性能的 C/C++ 日志库
C
3,273
star
2

EasyFlash

Lightweight IoT device information storage solution: KV/IAP/LOG. | 轻量级物联网设备信息存储方案:参数存储、在线升级及日志存储 ,全新一代版本请移步至 https://github.com/armink/FlashDB
C
1,825
star
3

CmBacktrace

Advanced fault backtrace library for ARM Cortex-M series MCU | ARM Cortex-M 系列 MCU 错误追踪库
C
1,452
star
4

FreeModbus_Slave-Master-RTT-STM32

Add master mode to FreeModbus. | 在 FreeModbus 中添加主机模式
C
1,390
star
5

SFUD

An using JEDEC's SFDP standard serial (SPI) flash universal driver library | 一款使用 JEDEC SFDP 标准的串行 (SPI) Flash 通用驱动库
C
1,107
star
6

struct2json

A fast convert library between the JSON and C structure. Implement structure serialization and deserialization for C. | C 结构体与 JSON 快速互转库,快速实现 C 结构体的序列化及反序列化
C
635
star
7

HackSTLinkUpgrade

暴力升级你的 ST-Link 及 STM32CubeIDE
82
star
8

EasyDataManager

A c language advanced framework of data manager. Support static data and dynamic data. Supply easy and simple interface for app.
C
34
star
9

MpyOnRtt

MicroPython port for RT-Thread on STM32F4 board
C
10
star
10

web_terminal

Terminal runs in a Web browser
C
9
star
11

UtestRunner

Utest automated test robot | utest 自动化测试机器人
Python
8
star
12

CmBacktraceFlashLogDemo

The CmBacktrace flash log demo base on Pandora IoT Board | 基于潘多拉 IoT 开发板的 CmBacktrace Flash 日志存储示例
C
7
star
13

EasyFlashAutoTestBSP

自动化测试 EasyFlash 的 RT-Thread BSP
C
6
star
14

FlashDBAutoTestBSP

FlashDB BSP for auto test
C
5
star
15

CharsetConvert

A java implement charset convert tool .Such as hex to utf-8, hex to gbk, utf-8 to hex and gbk to hex.Suitable for use in a network, serial debugging process.
Java
3
star
16

Go_Tutorials

A golang tutorials source code on http://tour.golang.org/. You can import to Eclipse IDE directly.
Go
1
star
17

hello-github-actions

Dockerfile
1
star