stm32移植嵌入式数据库FlashDB

本次实验的程序链接stm32f103+FlashDB嵌入式数据库程序资源-CSDN文库

一、介绍

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

FlashDB 提供两种数据库模式:

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

二、作用

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

三、移植

FlashDB 底层的 Flash 管理及操作依赖于 RT-Thread 的 FAL Flash 抽象层开源软件包 ,该开源库也支持运行在 裸机平台 。所以只需要将所用到的 Flash 对接到 FAL ,即可完成整个移植工作。

FAL 底层将不同的 Flash 存储介质进行了统一封装,并提供了分区表机制,暴露给上层用户。

FlashDB 的每个数据库就是基于 FAL 提供的分区机制,每个数据库都坐落在某个 FAL 的分区上,相当于一个分区对应一个数据库。

在定义 Flash 设备表前,需要先定义 Flash 设备。可以是片内 flash, 也可以是片外基于 SFUD 的 spi flash。

本次使用的是stm32f103c8t6单片机上的片内Flash。当然也可以在扩展的spi-flash上,也能在linux系统上扩展使用。

四、使用

注:移植后的代码必须在fdb_cfg.h文件中选择使用键值数据库和时序数据库

1、键值数据库

如下图所示,系统每次启动一次,boot_count就会加一,保存参数到片上Flash上。

2、时序数据库

修改状态:每条 TSL 在被追加到 TSDB 后,都可以修改其状态,状态共有 4 种:

  • FDB_TSL_WRITE:已写入状态,TSL 被追加到 TSDB 中后的默认状态;

  • FDB_TSL_USER_STATUS1 :该状态介于写入与删除之间,用户可自定义其状态含义,比如:数据已被同步至云端;

  • FDB_TSL_DELETED :已删除状态,当 TSL 需要删除时,修改 TSL 的状态为该状态即可;

    提示:在 FlashDB 中,为了提升 Flash 寿命,删除动作并不会真正的将数据从 Flash 从擦除,而是将其标记为删除状态,用户可以通过状态对不同的数据记录进行区分。

  • FDB_TSL_USER_STATUS2:删除状态之后的自定义状态,预留给用户使用;

注:修改状态时只能按照 FDB_TSL_WRITE -> FDB_TSL_USER_STATUS1 -> FDB_TSL_DELETED -> FDB_TSL_USER_STATUS2 顺序进行修改,不能逆序修改。也可以跳过中间状态,例如:从 FDB_TSL_WRITE 直接修改为FDB_TSL_DELETED 状态,跳过 FDB_TSL_USER_STATUS1 状态。

例如下面图片中,虽然每次只添加了一个数据,但是查询时会把所有的数据打印出来,每次增加1个。

本次实验的程序链接:stm32f103+FlashDB嵌入式数据库程序资源-CSDN文库

参考官网链接:快速开始 (gitee.io)

相关推荐

  1. 基于STM32嵌入拼图小游戏设计

    2024-04-14 17:32:02       51 阅读
  2. STM32 简易智能家居嵌入系统设计蓝图

    2024-04-14 17:32:02       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-14 17:32:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-14 17:32:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-14 17:32:02       87 阅读
  4. Python语言-面向对象

    2024-04-14 17:32:02       96 阅读

热门阅读

  1. 【数据结构】红黑树

    2024-04-14 17:32:02       35 阅读
  2. Linux上如何修改MySQL配置文件

    2024-04-14 17:32:02       84 阅读
  3. FFmpeg: 自实现ijkplayer播放器-02环境搭建

    2024-04-14 17:32:02       41 阅读
  4. js 字符串常用的方法

    2024-04-14 17:32:02       36 阅读
  5. LC 45.跳跃游戏II

    2024-04-14 17:32:02       31 阅读
  6. paddle测试安装之再入深坑

    2024-04-14 17:32:02       42 阅读
  7. Opentelemetry——Instrumentation

    2024-04-14 17:32:02       37 阅读
  8. 利用Python编程提取身份证的信息

    2024-04-14 17:32:02       37 阅读
  9. 实现队列的各种基本运算的算法(数据结构)

    2024-04-14 17:32:02       41 阅读
  10. 儿童学编程的好处

    2024-04-14 17:32:02       34 阅读