FlashDB IoT 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
FlashDB IoT 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票

软件简介

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

FlashDB 提供两种数据库模式:

  • 键值数据库 :是一种非关系数据库,它将数据存储为键值(Key-Value)对集合,其中键作为唯一标识符。KVDB 操作简洁,可扩展性强。
  • 时序数据库 :时间序列数据库 (Time Series Database , 简称 TSDB),它将数据按照 时间顺序存储 。TSDB 数据具有时间戳,数据存储量大,插入及查询性能高。

FlashDB 提供了多样化的数据存储方案,不仅资源占用小,并且存储容量大,非常适合用于物联网产品。下面是主要应用场景:

  • 键值数据库 :
    • 产品参数存储
    • 用户配置信息存储
    • 小文件管理
  • 时序数据库 :
    • 存储动态产生的结构化数据:如 温湿度传感器采集的环境监测信息,智能手环实时记录的人体健康信息等
    • 记录运行日志:存储产品历史的运行日志,异常告警的记录等

主要特性

  • 资源占用极低,内存占用几乎为 0 ;
  • 支持 多分区,多实例 。数据量大时,可细化分区,降低检索时间;
  • 支持 磨损平衡 ,延长 Flash 寿命;
  • 支持 掉电保护 功能,可靠性高;
  • 支持 字符串及 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

资源占用 (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 的资源占用非常低。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (11)

加载中
天龙哥,最近在试用你写的FlashDB,感觉很好用,谢谢! 但现在遇到一个问题,在使用TSDB例程时struct env_status {uint32_t temp; uint32_t humi;}我写入1000个数据,然后进行查询,时间用int数值代替,在不变更存储结构体的情况下,查询范围在[127,127](或更大的值,单个时间点查询)是没有问题的,但如果把struct env_status {uint32_t temp; uint32_t humi; uint32_t temp2; uint32_t humi2;}结构体数据增加,查询范围在[127,127](或更大的值,单个时间点查询)查询到的数据个数为0,不知道是不是我哪里使用不正确,希望能够得到你的尽快回复,由衷的感谢! 平台:stm32F407,SPI Flash:W25Q128,基于你的FlashDB demo(KVDB已经验证是ok)
07/04 20:25
回复
举报
armink软件作者
问题解决了吗?最近有试过新版本吗?
08/30 10:24
回复
举报
如果用到有序号的数据,那key就可以直接以序号来检索,不用再转换为字符串,效率会高很多。建议把key的操作函数用回调方式导出给使用者;这样,不管key是什么类型,都由用户自己决定。
06/07 23:18
回复
举报
armink软件作者
好的,感谢你的建议哈,后面考虑把 key 的类型从 const char* 更换为 const void*
08/30 10:26
回复
举报
还需要移植啊?这个有点麻烦呢; 直接默认开箱即用多好啊
06/05 14:40
回复
举报
armink软件作者
这个数据库与传统数据库不一样,不是基于文件系统,所以需要移植,不过有 demo 的哈
06/07 18:39
回复
举报
建议key不要限制为字符串,可以是其它类型,比如UINT类型。
06/04 12:26
回复
举报
单一类型效率反而高.
06/04 13:19
回复
举报
字符串效率本来就低
06/05 09:18
回复
举报
哈希表查找法
08/10 10:17
回复
举报
armink软件作者
感谢反馈,能说下大概的原因吗?
06/07 18:42
回复
举报
更多评论
发表于硬件 & IoT专区
10/08 21:52

FlashDB V1.0.0 正式版发布,轻量级嵌入式数据库

FlashDB beta 测试版目前已发布数月,在这段时间里, 陆陆续续收到大家的很多意见反馈,有些甚至也已经用在项目上了 。 结合大家的反馈,相关的问题均已修正,并对文档、测试等方面做了挺多完善。 今天正式版终于可以与大家见面了,一起来看下正式版的大致更新内容: 新增在线文档中心 内容丰富,分为:入门、示例及开发...

2
18
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
10/17 12:43

FlashDB V1.0.0 正式版发布,轻量级嵌入式数据库

FlashDB 简介 FlashDB 是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同,FlashDB 结合了 Flash 的特性,具有较强的性能及可靠性。并在保证极低的资源占用前提下,尽可能延长 Flash 使用寿命。 FlashDB 提供两种数据库模式: 键值数据库 和 时序数据库。 主要特性 ...

0
0
发表了博客
10/22 14:08

轻量级嵌入式数据库FlashDB的介绍与使用

一、FlashDB的介绍 FlashDB 是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同,FlashDB 结合了 Flash 的特性,具有较强的性能及可靠性。并在保证极低的资源占用前提下,尽可能延长 Flash 使用寿命。 FlashDB 提供两种数据库模式: 键值数据库 和 时序数据库。 二、...

0
0
发表了博客
07/14 16:30

物联网(IoT)简介

物联网(IoT)是一个由智能设备连接起来的网络,并提供了丰富的数据,但是它也有可能是一场安全领域的噩梦。 物联网Internet of Things(IoT)是一个统称,指的是越来越多不属于传统计算设备,但却连接到互联网接收或发送数据,或既接收也发送的电子设备组成的网络。 现在有数不胜数的东西可以归为这一类:可以联网的“智...

0
1
发表于DevOps专区
2019/08/11 12:55

物联网IoT hub

物接入(IoT Hub)是面向物联网领域开发者的全托管云服务,通过主流的物联网协议(如MQTT)通讯,可以在智能设备与云端之间建立安全的双向连接,快速实现物联网项目。物接入分为设备型(原物管理)和数据型两种项...

0
1
发表了博客
2019/06/20 15:09

物联网之窄带物联网(NB-IOT)

NB-IoT即窄带物联网(Narrow Band Internet of Things),NB-IOT构建在蜂窝网络之上,只消耗大约180KHZ的带宽,可直接部署于GSM(2G)、UMTS(3G)、LTE(4G)网络,因为这些网络的基站等基础设备都已经有较好的覆盖范围,所以这将很好的降低了NB-IOT的部署成本。 NB-IoT的优势: 一是广覆盖,将提供改进的室内覆盖,在同样的频...

0
3
2019/07/26 10:35

什么是物联网(IoT)?物联网有哪些平台和优势?

什么是 物联网? 物联网即Internet of things( IoT),最早由Kevin Ashton于1999年命名得来。 根据某知名企业给出的定义:物联网是一个物理对象(车辆、机器、家用电器等)组成的网络,使用传感器和api在Internet上连...

0
0
2019/02/27 20:15

IoT物联网开发者调查报告

Eclipse基金会从2016年开始每年都针对IoT物联网开发者情况在官网做了在线调研。以下内容基于Eclipse基金会2018年物联网开发者调查报告。(公众号对话框回复 “报告”即可获取完整版) 最主要的物联网编程语言 在物联...

0
0
发表了博客
2019/03/16 18:28

自学华为IoT物联网_07 物联网安全

点击返回自学华为IoT物流网 自学华为IoT物联网_07 物联网安全 1. 物联网安全的事件 事件1: 特斯拉事件 车载终端被入侵,通过CAN总线命令可远程控制车辆启停; 本地关键信息存储未做保护,印发后续重大安全事故。 事件2: 南京环保局事件 本地网络被入侵,环保监测数据被篡改;(在一些工厂,环保局会安装一些监控设备检...

0
0
发表了博客
10/20 10:07

什么是物联网?常见IoT 物联网协议最全讲解

推荐语:这是一本从技术原理、工程实践、设计模式和最佳实践4个维度讲解物联网系统开发的著作,是作者10余年实践经验的总结。 付强,某智慧社区企业的联合创始人兼CTO,资深IoT技术专家,有10余年从业经验,专注于物联网平台和产品的设计与开发,非常熟悉各种物联网协议和物联网系统的架构与开发。 一、什么是物联网? 物...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
10/19 22:04

如何在 OSC 社区运营你的开源项目?

在 OSCHINA 社区,拥有着围绕每一款开源软件展开的完整宣发链条。如果你或你的团队拥有一款开源软件,并且想要让更多的人了解和使用它,那么你可以: 在 OSCHINA 社区投递软件 投递与该软件相关的新闻,比如版本升级、项目社区重大事件等 撰写与该软件技术相关的博客 积极参与项目相关的问答 在 OSCHINA 社区,为你的开源...

18
34
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
11 评论
122 收藏
分享
返回顶部
顶部