暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

FlashDB:一个超轻量级的嵌入式数据库

原创 小小亮 2022-11-08
1290

介绍

FlashDB是一个超轻量级的嵌入式数据库,专注于为嵌入式产品提供数据存储解决方案。与传统的基于文件系统的数据库不同,FlashDB结合了Flash的特性,具有强大的性能和可靠性。并且在保证极低资源占用的前提下,尽可能延长Flash的使用寿命。

FlashDB提供两种数据库模式:

  • 键值数据库:它是一个非关系型数据库,将数据存储为键值对的集合,其中键用作唯一标识符。KVDB 操作简单,扩展性强。
  • 时序数据库:时序数据库(TSDB),按时序存储数据。TSDB数据有时间戳,数据存储量大,插入查询性能高。


使用场景

如今,物联网产品的种类越来越多,运行过程中产生的数据种类和总量也在不断增加。FlashDB提供多种数据存储方案,不仅资源占用小,而且存储容量大,非常适合物联网产品。以下是主要应用场景:

  • 键值数据库
    • 产品参数存储
    • 用户配置信息存储
    • 小档案管理
  • 时间序列数据库
    • 存储动态生成的结构化数据:如温湿度传感器采集的环境监测信息、智能手环实时记录的人体健康信息等。
    • 记录操作日志:存储产品历史操作日志、异常报警记录等。

主要特征

  • 占用空间非常小,ram 使用率几乎为 0
  • 支持多分区,多实例数据量大时,可以细化分区,减少检索时间;
  • 支持磨损平衡,延长Flash寿命;
  • 支持断电保护功能,可靠性高;
  • 支持string和blob两种KV类型,方便用户操作;
  • 支持KV增量升级,产品固件升级后,KVDB内容也支持自动升级;
  • 支持修改每条TSDB记录的状态,方便用户管理;

性能和占用空间

TSDB性能测试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
复制

插入平均:4 ms,查询平均:1.8 ms

TSDB性能测试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
复制

插入平均:0.37 ms,查询平均: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
复制

以上是IAR的地图文件信息。可以看出,FlashDB 的占用空间非常小。

执照

该项目使用 Apache-2.0 开源协议。详情请阅读项目中的 LICENSE 文件内容。


查看 FlashDB 百科: https://www.modb.pro/wiki/974

文章来源:https://armink.github.io/FlashDB/#/


最后修改时间:2022-11-08 15:49:12
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论