FlashDB 自 V2.0 后,大幅提升了数据库的性能(尤其是 GC)、稳定性和兼容性,新增了一些重要的功能,如:反向迭代器、数据库扩容、垃圾回收改进、完整性检查和64&128位写粒度支持,并修复了多个运行时错误和潜在的存储问题。
打磨了一年多时间后,今天正式发布了 V2.1.1 版本,该版本是个 BUG 修正版本,如有需要可以尽快升级。
自 V2.0 开始的更新日志如下:
1. KVDB(键值数据库):
- 性能优化与错误修复:
- 修复运行时错误、警告和首次运行时的锁定问题
- 修复空指针解引用问题
- 改进缓存清理机制:在设置键值对为默认值之前清除缓存
- 改善垃圾回收(GC)算法,解决某些情况下的收集失败问题
- 支持128位写粒度、缓存性能优化,垃圾回收速度提升2倍
- 新增KVDB完整性检查API及数据库扩展功能
- 优化缓存算法:首次找到键时的缓存处理改进
- 添加部分GC功能以减少GC时间
- 修复写入失败问题和其他已知问题
2. TSDB(时间序列数据库):
- 错误修复:
- 修复读取最后一个有效时间序列日志(TSL)的问题
- 修复在电源异常断电时的闪存覆盖问题
- 功能增强:
- 添加反向迭代器功能
- 改进TSDB测试用例
3. 通用改进:
- 错误修复:
- 修复错误代码返回不正确的问题
- 关闭文件流指针时使用
fclose()
进行处理
- 功能增强:
- Zephyr系统:添加外部模块支持
- 改进对齐处理(FDB_ALIGN,FDB_ALIGN_DOWN)
- 闪存支持:
- 支持擦除后为0的闪存,如TC397芯片上的内部闪存
- 自动化与测试改进:
- 改进CI自动化测试、KVDB和TSDB的测试用例
- 优化扇区迭代功能,迭代顺序从最旧到最新
4. Demo支持更新:
- ESP32支持:
- 添加ESP32上的SPI闪存演示,支持IDF 5.x构建环境
- STM32支持:
- 添加STM32L4内部芯片的FAL闪存驱动
FlashDB 简介
FlashDB 是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同,FlashDB 结合了 Flash 的特性,具有较强的性能及可靠性。并在保证极低的资源占用前提下,尽可能延长 Flash 使用寿命。 FlashDB 提供两种数据库模式: 键值数据库 和 时序数据库。
主要特性
-
资源占用极低,内存占用几乎为 0 ;
-
支持 多分区,多实例 。数据量大时,可细化分区,降低检索时间;
-
支持 磨损平衡 ,延长 Flash 寿命;
-
支持 掉电保护 功能,可靠性高;
-
支持 字符串及 blob 两种 KV 类型,方便用户操作;
-
支持 KV 增量升级 ,产品固件升级后, KVDB 内容也支持自动升级;
-
支持 修改每条 TSDB 记录的状态,方便用户进行管理;