armink/FlashDB

GitHub: armink/FlashDB

FlashDB 是一款专为嵌入式产品设计、结合 Flash 存储特性的超轻量级数据库,支持键值和时序两种数据模式。

Stars: 2787 | Forks: 556

![](https://static.pigsec.cn/wp-content/uploads/repos/cas/82/82ca74102657729c64fbf7895c4f60d1b0dcf045a82788f81cc2b9efadfcdf47.png) ![GitHub Action](https://static.pigsec.cn/wp-content/uploads/repos/cas/24/24857528c2bbbd027eb730564f0cf2f183122a0779cdf4b9c1c60833d94bd37a.svg) [![license](https://img.shields.io/github/license/armink/FlashDB)](https://raw.githubusercontent.com/armink/FlashDB/master/LICENSE) [![docs](https://img.shields.io/badge/docs-perfect-blue)](https://armink.github.io/FlashDB/#/) EN | [中文](README_zh.md) ## 简介 [FlashDB](https://github.com/armink/FlashDB) 是一款超轻量级的嵌入式数据库,专注于为嵌入式产品提供数据存储解决方案。不同于基于文件系统的传统数据库,[FlashDB](https://github.com/armink/FlashDB) 结合了 Flash 的特性,具有极强的性能与可靠性。并且在保证极低资源占用的前提下,尽可能延长 Flash 的使用寿命。 [FlashDB](https://github.com/armink/FlashDB) 提供两种数据库模式: - **键值数据库**:它是一种非关系型数据库,将数据作为键值对集合进行存储,其中键用作唯一标识符。KVDB 操作简单,具有极强的可扩展性。 - **时序数据库**:时序数据库(TSDB),按照**时间顺序**存储数据。TSDB 数据带有时间戳,数据存储量大,且具有很高的插入和查询性能。 ## 使用场景 如今,IoT 产品的种类越来越多,运行过程中产生的数据类型和总量也在不断增加。FlashDB 提供了多种数据存储解决方案,不仅资源占用小,而且存储容量大,非常适合 IoT 产品。以下是主要的应用场景: - **键值数据库**: - 产品参数存储 - 用户配置信息存储 - 小文件管理 - **时序数据库**: - 存储动态生成的结构化数据:例如温湿度传感器采集的环境监测信息、智能手环实时记录的人体健康信息等。 - 记录操作日志:存储产品历史操作日志、异常报警记录等。 ## 核心特性 - 资源占用极小,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 ### 资源占用(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 提供了完善的文档,请参见:https://armink.github.io/FlashDB/#/ 快速访问: - [快速入门文档](http://armink.github.io/FlashDB/#/quick-started) - [移植文档](http://armink.github.io/FlashDB/#/porting) - [配置文档](http://armink.github.io/FlashDB/#/configuration) - [API 文档](http://armink.github.io/FlashDB/#/api) ## 开源许可 该项目采用 Apache-2.0 开源协议。详情请阅读项目中的 LICENSE 文件内容。
标签:Flash存储, LangChain, 客户端加密, 嵌入式数据库, 物联网, 轻量级, 键值数据库