有没有人在stm32平台上做过数据管理
现在在stm32上做一个指纹考勤机,存在指纹删除和添加,有没有好的数据管理方法? 本坛大侠 sunnydragon 的 FlashDB 可以参考下~~ nic_911 发表于 2022-1-13 11:23本坛大侠 sunnydragon 的 FlashDB 可以参考下~~
FLASHDB 2000个数据,查询就比较慢了吧 nic_911 发表于 2022-1-13 11:23
本坛大侠 sunnydragon 的 FlashDB 可以参考下~~
(引用自2楼)
代码是开源的吗? gsq19920418 发表于 2022-1-13 15:01
FLASHDB 2000个数据,查询就比较慢了吧
(引用自3楼)
数据量对查询和写入影响有多大?有实际用过吗 上日志型文件系统和sqlite 几个指纹,就别想那么复杂了。怎么简单怎么来吧,楼上说到的flashdb就对你来说绰绰有余了 honami520 发表于 2022-6-23 21:23
几个指纹,就别想那么复杂了。怎么简单怎么来吧,楼上说到的flashdb就对你来说绰绰有余了 ...
(引用自7楼)
2000个指纹,数据量还是挺大的。 flash db稳定性有待验证,我最近一个项目使用了,大体还好,等长时间看了。 三年模拟 发表于 2022-6-29 10:36
flash db稳定性有待验证,我最近一个项目使用了,大体还好,等长时间看了。 ...
(引用自9楼)
flash db对二进制文件存储有优势不? 本帖最后由 SCREA 于 2022-8-2 14:05 编辑
ahwen2019 发表于 2022-6-29 11:36
flash db对二进制文件存储有优势不?
(引用自10楼)
当初苦于找不到合适的, 比如LFS数据量大了就卡,
所以自己造了个轮子,循环存储间隔可设定的日志:顺序存储,不当心磨损。
每一小节日志用一个小节结构头去存储当前节点的详细信息,如后面跟随该日志主体的数据结构。
小节之间用链表链接
再用个固定扇区存储最后一次的节点在Flash的地址,方便重启后快速定位最后一次的节点。不用担心此扇区磨损厉害,扇区通常比较大,如4K,每次追加最新节点的地址。追加完再擦除从头再来(如4K / 4 = 1024个地址头, 一个头管理的20K数据, 这样就能存储20MB 日志, 而一个扇区标准10万次寿命,就算一天写满一次,也够10万天了)。
优点:磨损均衡、掉电可恢复、手动恢复
缺点:自己写,自己测
gsq19920418 发表于 2022-1-13 15:01
FLASHDB 2000个数据,查询就比较慢了吧
(引用自3楼)
sqlite 更慢 ahwen2019 发表于 2022-6-23 20:39
数据量对查询和写入影响有多大?有实际用过吗
(引用自5楼)
大概2000 左右 查询 读写 都在秒级了 gsq19920418 发表于 2022-8-2 14:36
大概2000 左右 查询 读写 都在秒级了
(引用自13楼)
时间消耗都花费在查询链表与读Flash上了。
外扩内存的话,比如我用H7 + 32MB Flash + 32MB SDRAM(SDRAM total is 64MB), 查询都是ns级别(同步读),SDRAM 最后使用Sync函数刷入到Flash(异步写)。
自己造轮子的好处体现出来了,缺点就是内存消耗大,不能省电。要做到内存消耗小,读写时间腾的一下上来了。 SCREA 发表于 2022-8-8 09:36
时间消耗都花费在查询链表与读Flash上了。
外扩内存的话,比如我用H7 + 32MB Flash + 32MB SDRAM(SDRAM ...
(引用自14楼)
通用和专用的区别,数据库的查找和插入、数据回滚,数据完整性功能不是 自己读写FLASH 可比拟的;
我数据管理一路这样走来:
直接读写FLASH-->文件系统 --> 数据库 本帖最后由 SCREA 于 2022-8-8 11:16 编辑
polarbear 发表于 2022-8-8 09:53
通用和专用的区别,数据库的查找和插入、数据回滚,数据完整性功能不是 自己读写FLASH 可比拟的;
我数 ...
(引用自15楼)
哈哈,刚开始是这样想的的。
初生牛犊不怕虎,做了几天思想工作就写上了,好在通过了时间长久性等各种测试,性能也满足指标。
sqlite3嵌入式数据库,百万级插入读都是秒级别的,现在国产能跑linux芯片的一抓一大把,搞个emmc性能稳定性都不错,干嘛非得用stm32 三年模拟 发表于 2022-8-8 12:04
sqlite3嵌入式数据库,百万级插入读都是秒级别的,现在国产能跑linux芯片的一抓一大把,搞个emmc性能稳定性 ...
(引用自17楼)
熟悉,出产品快
页:
[1]