引言
在物联网时代,设备产生的数据量呈指数级增长,如何高效、稳定地存储和管理这些数据,成为了开发者面临的一大难题。传统的文件系统和数据库往往资源占用高,难以满足嵌入式设备的低功耗、小存储需求。今天,我们要介绍的是一款专为嵌入式设备设计的超轻量级数据库——FlashDB。
什么是FlashDB?
FlashDB 是一款专注于嵌入式产品的超轻量级数据库,结合了Flash存储器的特性,提供了高性能、高可靠性的数据存储方案。与传统的基于文件系统的数据库不同,FlashDB在保证极低资源占用的前提下,能够有效延长Flash的使用寿命,非常适合物联网设备的数据存储需求。
FlashDB的两种数据库模式
-
键值数据库(KVDB)
KVDB是一种非关系型数据库,数据以键值对的形式存储,操作简洁且扩展性强。它非常适合存储产品参数、用户配置信息以及小文件管理。 -
时序数据库(TSDB)
TSDB将数据按照时间顺序存储,适合存储动态产生的结构化数据,如传感器采集的环境监测信息、智能手环记录的健康数据等。TSDB具有高插入和查询性能,能够高效处理大量时间序列数据。
FlashDB的主要特性
-
极低的资源占用:内存占用几乎为0,非常适合资源受限的嵌入式设备。
-
多分区、多实例支持:数据量大时,可以细化分区,降低检索时间。
-
磨损平衡:有效延长Flash的使用寿命。
-
掉电保护:确保数据在意外断电时的安全性。
-
支持多种数据类型:KVDB支持字符串和blob类型,方便用户操作。
-
增量升级:固件升级后,KVDB内容也支持自动升级。
-
灵活的TSDB管理:支持修改每条TSDB记录的状态,方便用户进行数据管理。
FlashDB的性能表现
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片内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
资源占用(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的map文件可以看出,FlashDB的资源占用非常低,适合资源受限的嵌入式设备。
FlashDB的使用场景
1. 键值数据库(KVDB)
-
产品参数存储:轻松管理设备的配置参数。
-
用户配置信息存储:存储用户的个性化设置。
-
小文件管理:适合存储小型文件或数据块。
2. 时序数据库(TSDB)
-
传感器数据存储:如温湿度传感器采集的环境监测信息。
-
健康数据记录:如智能手环实时记录的人体健康信息。
-
运行日志存储:记录设备的历史运行日志和异常告警信息。
FlashDB作为一款超轻量级的嵌入式数据库,凭借其极低的资源占用、高性能和高可靠性,成为了物联网设备数据存储的理想选择。无论是键值数据库还是时序数据库,FlashDB都能提供强大的支持,帮助开发者轻松应对数据存储的挑战。
如果你正在寻找一款适合嵌入式设备的高效数据库解决方案,FlashDB绝对值得一试!https://github.com/armink/FlashDB