FlashDB学习笔记一

embedded/2024/9/20 1:32:20/ 标签: 学习, 笔记, 数据库, 嵌入式实时数据库

FlashDB学习应用笔记

  • FlashDB简介
  • 性能及资源占用(来自FlashDB官方)
    • TSDB 性能测试1(nor flash W25Q64)
    • TSDB性能测试2 (STM32F2 onChip flash)
    • 资源占用(STM32F4 IAR8.20)
  • 官方链接

FlashDB简介

FlashDB是一款特别适用于嵌入式系统的数据库,支持系统的片上Flash和片外Flash,具有极强的可靠性。资源占用极底,并加入磨损平衡控制。

数据库模式

  1. 键值对数据库KVDB:键值对数据库是一种关系型数据库,将数据存储为价值对key-value集合,键值key作为数据的唯一标签。
  2. 时序数据库TSDB:基于时间存储的数据库,按照系统时间顺序进行存储,时间戳作为数据的唯一标签。

应用场景

  1. 键值数据库
  • 系统参数的保存,比如:开机次数等
  • 用户配置信息的存储,比如:用户名和密码。
  • 小的数量的存储,比如bootloader和app。
  1. 时序数据库
    -动态记录传感器的数据,比如:温度,湿度,速度等。
    -记录系统运行日志,比如:用户登录信息,系统告警信息等。

数据库特点

  • 磨损平衡,延长Flash寿命。
  • 多个分区,多个实例
  • 支持掉电保护功能。
  • 支持每条TSDB可修改记录状态。
  • 支持KV增量升级,产品固件升级有,KVDB内容也支持自动升级。
  • 支持字符串blob两种KV类型,方面用户操作。
  • 内存占用几乎为0

性能及资源占用(来自FlashDB官方)

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

插入平均:4ms,查询平均:1.8ms

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秒, 查询平均:0.12ms

资源占用(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的资源占用非常低。

官方链接

链接: 进一步学习.


http://www.ppmy.cn/embedded/2950.html

相关文章

JVM性能调优——GC日志分析

文章目录 1、概述2、生成GC日志3、Parallel垃圾收集器日志解析3.1、Minor GC3.2、FULL GC 4、G1垃圾收集器日志解析4.1、Minor GC4.2、并发收集4.3、混合收集4.4、Full GC 5、CMS垃圾收集器日志解析5.1、Minor GC5.2、Major GC5.3、浮动垃圾 6、日志解析工具6.1、GCeasy6.2、GC…

高风险IP的来源及其影响

随着互联网的发展,网络安全问题越来越引人关注。其中,高风险IP的来源成为了研究和讨论的焦点之一。高风险IP指的是那些经常涉及到网络攻击、恶意软件传播以及其他不良行为的IP地址。它们的存在不仅对个人和组织的网络安全构成威胁,还可能给整…

揭秘分享京东商品详情数据接口(商品属性,sku,价格)API接口可测试

今天给大家分享关于封装根据京东商品ID或商品链接批量获取京东商品详情数据接口方法,支持高并发请求。 如果你对京东的商品详情数据感兴趣,我建议你采取以下合法和合规的途径: 使用京东开放平台:京东开放平台提供了一系列的API接…

【VTKExamples::Meshes】第 十四期 ExtractEdges

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例ExtractEdges,并解析接口vtkExtractEdges,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~…

第四章 web服务器

web服务器 web服务器简介 (1)什么是www www是world wide web的缩写,也就是全球信息广播的意思。通常说的上网就是使用www来查询用户所需要的信息。www可以结合文字、图形、影像以及声音等多媒体,并通过可以让鼠标单击超链接的方…

Codeforces Round 926 (Div. 2) ---- E. Sasha and the Happy Tree Cutting ----题解

E. Sasha and the Happy Tree Cutting: 题目大意: 思路解析: 现在有一颗树,然后给出了k对路径,然后要求路径上至少有一个结点是被染色了的,如果这k对路径没有共用边,那我们至少需要染色k条边。…

@CrossOrigin的使用

CrossOrigin的使用 1.使用场景2.用法3.示例3.1 标注在方法上3.2 标注在类上 3.属性配置 1.使用场景 前后端分离应用:当前端应用和后端服务部署在不同的域或端口上时,前端应用尝试向后端服务发起请求时,可能会遇到同源策略的限制。这时&#…

Swift中的枚举

在Swift中,枚举(Enumeration)是一种定义一组相关值的方式。枚举可以包含零个或多个成员,每个成员可以有关联的值。枚举可以用于定义一组相关的选项、状态或错误类型。 以下是Swift中定义枚举的示例: //定义一个简单的…

【python】 Django Web框架

文章目录 Django框架MVCORM安装Django搭建Django框架创建项目创建AppDjango模板数据模型-models添加数据模型——models.py执行数据库迁移Django数据API数据库操作—— testdb.py管理后台——admin.py路由——url.py

观察者模式:实现高效事件驱动编程的策略

在软件开发中,观察者模式是一种关键的行为型设计模式,用于建立对象间的一种依赖关系,使得当一个对象改变状态时,所有依赖于它的对象都会得到通知并被自动更新。这种模式是事件监听和响应编程的基石。本文将详细介绍观察者模式的定…

Docker in Docker的原理与实战

Docker in Docker(简称DinD)是一种在Docker容器内部运行另一个Docker实例的技术。这种技术允许用户在一个隔离的Docker容器中创建、管理和运行其他Docker容器,从而提供了更灵活和可控的部署选项。以下是DinD的主要特点: 隔离性&am…

JavaScript函数⭐

一,函数的使用 1.1函数的定义 函数就是封装了一段可以被重复执行的代码块 目的:让大量代码重复使用 1.2封装 函数的封装是把一个或多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口 封装类似于把电脑配件整合组装到机箱中…

【LeetCode热题100】【动态规划】完全平方数

题目链接:279. 完全平方数 - 力扣(LeetCode) 完全平方数是可以表示成某个整数的平方的数,要找和为n的完全平方数的最少数目 满足要求的完全平方数最小是1,最大不会超过n的平方根 所以题目变成要从1,2&am…

js实现抽奖效果

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>随机抽奖</title> </head> <body>…

工业相机飞拍原理

一、什么是工业相机的飞拍技术 工业相机飞拍技术是一项高效、快速、准确的图像采集和处理技术。是指在高速运动的物体&#xff0c;或场景中使用工业相机进行拍摄&#xff0c;实现高效、准确、稳定的图像采集和处理。 二、工业相机飞拍的实现原理 飞拍就是使用硬件比较输出或精…

AR智能眼镜方案_MTK平台安卓主板芯片|光学解决方案

AR眼镜作为一种引人注目的创新产品&#xff0c;其芯片、显示屏和光学方案是决定整机成本和性能的关键因素。在这篇文章中&#xff0c;我们将探讨AR眼镜的关键技术&#xff0c;并介绍一种高性能的AR眼镜方案&#xff0c;旨在为用户带来卓越的体验。 AR眼镜的芯片选型至关重要。一…

python+requests+pytest+allure自动化框架

1.核心库 requests request请求openpyxl excel文件操作loggin 日志smtplib 发送邮件configparserunittest.mock mock服务 2.目录结构 baseutilstestDatasconftestCasestestReportlogs其他 2.1base base_path.py 存放绝对路径,dos命令或Jenkins执行时,防止报错base_requests…

网络基础-TCP协议握手与挥手

简单回顾一下TCP三次握手和四次挥手过程 详细介绍一下三次握手 我们可以看到 syns queue和accept queue队列来接收和处理消息的。 TCP三次握手时&#xff0c;Linux内核会维护两个队列 1、半连接队列&#xff0c;被称为SYN队列 2、全连接队列&#xff0c;被称为 accept队列 介…

tar 是一个在 Unix 和类 Unix 系统(如 Linux)中常用的命令

tar 是一个在 Unix 和类 Unix 系统&#xff08;如 Linux&#xff09;中常用的命令&#xff0c;用于归档文件。它可以将多个文件和目录打包成一个单独的文件&#xff0c;但不进行压缩。然而&#xff0c;你可以通过管道将 tar 命令的输出传递给压缩工具&#xff08;如 gzip 或 bz…

可视化ETL解决方案:Apache NiFi、DataX(加上DataX-Web)、Kettle这3个解决方案对比

1.Apache NiFi&#xff1a; Apache NiFi是一个易于使用、功能强大的可视化ETL工具&#xff0c;它提供了一套直观的图形界面&#xff0c;让用户可以轻松地设计、管理和监控数据流。NiFi支持多种数据源和目标系统&#xff0c;具有强大的数据处理能力&#xff0c;如数据过滤、转换…