ahwen2019 发表于 2022-1-12 20:06:17

有没有人在stm32平台上做过数据管理

现在在stm32上做一个指纹考勤机,存在指纹删除和添加,有没有好的数据管理方法?

nic_911 发表于 2022-1-13 11:23:33

本坛大侠 sunnydragon 的 FlashDB 可以参考下~~

gsq19920418 发表于 2022-1-13 15:01:57

nic_911 发表于 2022-1-13 11:23
本坛大侠 sunnydragon 的 FlashDB 可以参考下~~

FLASHDB 2000个数据,查询就比较慢了吧

ahwen2019 发表于 2022-6-23 20:38:44

nic_911 发表于 2022-1-13 11:23
本坛大侠 sunnydragon 的 FlashDB 可以参考下~~
(引用自2楼)

代码是开源的吗?

ahwen2019 发表于 2022-6-23 20:39:20

gsq19920418 发表于 2022-1-13 15:01
FLASHDB 2000个数据,查询就比较慢了吧
(引用自3楼)

数据量对查询和写入影响有多大?有实际用过吗

vtte 发表于 2022-6-23 20:54:44

上日志型文件系统和sqlite

honami520 发表于 2022-6-23 21:23:43

几个指纹,就别想那么复杂了。怎么简单怎么来吧,楼上说到的flashdb就对你来说绰绰有余了

ahwen2019 发表于 2022-6-29 09:48:09

honami520 发表于 2022-6-23 21:23
几个指纹,就别想那么复杂了。怎么简单怎么来吧,楼上说到的flashdb就对你来说绰绰有余了 ...
(引用自7楼)

2000个指纹,数据量还是挺大的。

三年模拟 发表于 2022-6-29 10:36:47

flash db稳定性有待验证,我最近一个项目使用了,大体还好,等长时间看了。

ahwen2019 发表于 2022-6-29 11:36:12

三年模拟 发表于 2022-6-29 10:36
flash db稳定性有待验证,我最近一个项目使用了,大体还好,等长时间看了。 ...
(引用自9楼)

flash db对二进制文件存储有优势不?

SCREA 发表于 2022-8-2 13:49:20

本帖最后由 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万天了)。

优点:磨损均衡、掉电可恢复、手动恢复
缺点:自己写,自己测

john78 发表于 2022-8-2 14:06:07

gsq19920418 发表于 2022-1-13 15:01
FLASHDB 2000个数据,查询就比较慢了吧
(引用自3楼)

sqlite 更慢               

gsq19920418 发表于 2022-8-2 14:36:58

ahwen2019 发表于 2022-6-23 20:39
数据量对查询和写入影响有多大?有实际用过吗
(引用自5楼)

大概2000 左右 查询 读写 都在秒级了

SCREA 发表于 2022-8-8 09:36:48

gsq19920418 发表于 2022-8-2 14:36
大概2000 左右 查询 读写 都在秒级了
(引用自13楼)

时间消耗都花费在查询链表与读Flash上了。

外扩内存的话,比如我用H7 + 32MB Flash + 32MB SDRAM(SDRAM total is 64MB), 查询都是ns级别(同步读),SDRAM 最后使用Sync函数刷入到Flash(异步写)。
自己造轮子的好处体现出来了,缺点就是内存消耗大,不能省电。要做到内存消耗小,读写时间腾的一下上来了。

polarbear 发表于 2022-8-8 09:53:25

SCREA 发表于 2022-8-8 09:36
时间消耗都花费在查询链表与读Flash上了。

外扩内存的话,比如我用H7 + 32MB Flash + 32MB SDRAM(SDRAM ...
(引用自14楼)

通用和专用的区别,数据库的查找和插入、数据回滚,数据完整性功能不是 自己读写FLASH 可比拟的;

我数据管理一路这样走来:
直接读写FLASH-->文件系统 --> 数据库

SCREA 发表于 2022-8-8 10:51:01

本帖最后由 SCREA 于 2022-8-8 11:16 编辑

polarbear 发表于 2022-8-8 09:53
通用和专用的区别,数据库的查找和插入、数据回滚,数据完整性功能不是 自己读写FLASH 可比拟的;

我数 ...
(引用自15楼)

哈哈,刚开始是这样想的的。
初生牛犊不怕虎,做了几天思想工作就写上了,好在通过了时间长久性等各种测试,性能也满足指标。

三年模拟 发表于 2022-8-8 12:04:31

sqlite3嵌入式数据库,百万级插入读都是秒级别的,现在国产能跑linux芯片的一抓一大把,搞个emmc性能稳定性都不错,干嘛非得用stm32

gsq19920418 发表于 2022-8-8 16:43:24

三年模拟 发表于 2022-8-8 12:04
sqlite3嵌入式数据库,百万级插入读都是秒级别的,现在国产能跑linux芯片的一抓一大把,搞个emmc性能稳定性 ...
(引用自17楼)

熟悉,出产品快
页: [1]
查看完整版本: 有没有人在stm32平台上做过数据管理