0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式数据库为什么不使用关系数据模型

星星科技指导员 来源:嵌入式计算设计 作者:Duncan Bates 2022-08-28 10:00 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

以传统方式处理数据管理并不总是能很好地应用于嵌入式系统。关系数据库模型的流行是无可争辩的,但这并不意味着它是处理宝贵的 CPU、内存和存储资源时的正确选择。关系模型的一种替代方法可以帮助降低硬件要求并为复杂的数据关系建模,从而允许供应商为手头的应用程序释放资源。

在竞争日益激烈的市场中,嵌入式应用程序供应商不断寻找新方法来降低应用程序成本和上市时间,并增加应用程序功能以最终获得市场份额并促进产品销售。虽然收入利润率受到挤压,但消费者期望新产品发布具有更高的质量和功能。供应商越来越愿意将第三方组件添加到新产品和现有产品中,以实现这些目标。

任何嵌入式应用程序中的一个重要组成部分是高效的数据管理。商业嵌入式数据管理引擎正在获得认可,并且在许多情况下成为应用程序的硬性要求。在过去的 25 年中,随着数百万美元的投入用于研发,关系模型已成为数据管理的首选方法。

建立关系

关系数据模型的首要好处不是模型本身,而是它与 SQL 语言的密切关系。SQL 有两个主要好处:

即席查询:使用预定义的关系数据模型,任何有效的 SQL 都将保证结果而不保证其性能。在数据挖掘应用程序中,这是一个非常强大的功能,但在大多数嵌入式应用程序中,用例和查询在设计时是已知的。想想 MP3 播放器:所有用例,例如音乐文件同步和用户导航,都是预定义的,在设备或固件的下一个版本发布之前不会改变。这不像经理会来要求开发人员根据现有数据模型创建新报告。

供应商独立性: SQL 是许多嵌入式数据库供应商支持的通用语言。据推测,用另一个替换一个应该像打开电灯开关一样容易。尽管它并不那么简单,但进行这种转换绝对比从一个专有 API 迁移到另一个更容易。

关系模型通过值匹配以及在大多数情况下通过键来建立记录之间的关系。这些键称为主键/外键关系。图 1 说明了 MP3 播放器中艺术家和专辑的关系模型,它将作为本文进一步讨论的基础。

图1

poYBAGMKzDqAAhCSAABUH4dcoSo990.jpg

仔细观察,关系是通过将 fname 的值复制到专辑表中并在两者之间添加索引结构来实现的。复制 fname 字段本身会增加数据库映像的开销。图 1 中的另一个含义与外键有关。如果没有添加外键数据结构,开发人员每次处理关系时都必须访问专辑表中的每一行。原因是表格数据没有任何顺序,因此无法判断匹配值是在表格的开头、中间和/或结尾。添加外键索引解决了这个表扫描问题。图 2 分解了外键索引和专辑表来说明索引开销。

图 2

pYYBAGMKzDuAVKkpAABawmM8Lrg601.jpg

有了 B 树,开发人员可以进行二分搜索来建立关系,从表扫描到索引扫描。这将线性搜索转换为二分搜索,通过指数差异提高了运行关系的成本。

表扫描的成本为 O(n),其中 n 表示表中的记录数,而索引扫描的成本为 O(log n)。在计算复杂性理论中,大 O 符号经常用于描述输入数据的大小如何影响算法——计算资源的使用。其他明显的影响包括表示索引所需的空间以及在数据更改时维护此结构所需的命中率。由于从时间、CPU 和功耗方面来看,I/O 是最昂贵的操作,因此开发人员应该努力减少它。对于闪存等存储设备,写入也应受到限制,以防止对该技术施加的最大写入擦除周期和空间回收周期产生负面影响。

那么问题就变成了:开发人员如何以低于 O(log n) 的成本维护这种关系信息?

重新引入网络数据模型

图 3 显示了通过网络数据模型调整的相同数据表示。

图 3

poYBAGMKzDyACOSWAABPtqIpt_g476.jpg

网络数据模型早于关系模型,可以看作是它的超集。这意味着在关系模型中表达的任何东西都可以在网络模型中表达,甚至 SQL 支持。主要优点是可以对关系进行建模的方式。在图 3 中,以前显示为外键索引的关系现在被分解为多个指针列表,称为集合。指针可以被视为 C 应用程序中的 void 指针,可以直接查找堆,但堆现在是持久存储。消除外键数据结构和fname重复不仅减少了需要存储的数据量,而且还减少了不必要的数据结构维护。

图中简化了一个所有者有两个指针,第一个和最后一个成员记录,而成员有三个,所有者加上前一个和下一个成员。根据指针的本质,它不与任何特定的数据类型绑定,因此关系可以对任意数量的记录类型之间的复杂关系进行建模,而不仅仅是关系模型强加的两个之间的关系。本文不会讨论复杂的建模功能,但它说明了网络模型的灵活性。

图 4

pYYBAGMKzD2ACtVCAAA8EBuGLIk973.jpg

成本影响

从一个记录到一组记录转换为恒定成本。只要数据尚未驻留在数据库 RAM 缓存中,最多只需要一个 I/O 周期。使用外键实现,在定位实际记录之前,将首先遍历 B 树,成本为 O(log n)。很明显,遍历 B 树有 CPU 和 I/O 开销,但也有内存开销。任何数据库缓存都会存储最近访问过的数据,甚至是 B-tree 数据。由于 B-tree 扫描最终在缓存中,因此缓存必须很大,否则需要额外的 I/O 来刷新其数据。

写操作也需要恒定的成本。开发人员将新记录添加到专辑表并将新记录加入现有艺术家专辑集需要采取以下步骤来完成操作:

添加新专辑记录。

将新记录设置为当前艺术家的所有者指针。

设置新记录,即指向当前艺术家的前一个指针,即最后一个记录。

将新记录的 next 指针设置为 0。

将当前艺术家的最后一条记录设置为指向新记录的下一个指针。

将所有者的最后一个指针设置为新记录。

在这一系列操作期间不进行扫描,导致成本不变。使用 B-tree 实现,开发人员将:

1.添加新专辑记录。

2. 扫描 B-tree 找到新记录的索引位置。

3.如果B-tree中没有空间,则拆分并重组树。

4. 在 B 树中写入对新记录的引用。

在此序列中,开发人员在步骤 2 中遇到 O(log n) 成本。更重要的是,步骤 3 可能会通过要求重新组织部分或整个树而产生巨大的成本。重组是不可预测的,因为它取决于树的完整性以及必须在树中的哪个位置进行更改。包含数据的节点越多,重组的机会就越大。在大多数情况下,B-tree 更改是在本地完成的,只影响少数几个节点,但有时会触及许多节点,给应用程序增加了不确定性。因此,如果开发人员发现自己需要可预测的性能,他们应该检查他们的数据是如何表示的。

MP3 播放器基准测试

那么开发者使用网络模型可以节省多少硬件资源呢?在一个示例中,Birdstep Technology 实施了艺术家-》专辑-》歌曲的三向关系,允许商业 MP3 播放器制造商获得一些关于资源节约的确凿事实。开发人员仔细比较了 Birdstep Technology 的 RDM Embedded 数据库引擎,它是一种网络模型,以及使用台式计算机和消费电子硬件的公共领域关系数据库引擎。如表 1 所示,硬件资源受限越多,节省的差异就越大。

在这两种硬件解决方案上,网络模型用于存储相同数量的记录和关系的磁盘空间减少了 27%。所有的存储节省都可以归功于用指针替换了艺术家-》专辑和专辑-》歌曲的外键索引。删除这些数据结构对存储需求产生了巨大影响。B 树索引通常需要 1.3 倍于它的索引空间。

应用程序驱动数据库决策

在寻求在应用程序中添加或替换现有数据管理组件时,开发人员应仔细考虑选择。应用程序应该推动决策,而不是行业。有几种不同的解决方案可用,从简单的库到完整的客户端服务器解决方案,增加了本文所述的功能。选择正确的技术并对数据进行正确建模可以对应用程序的成本产生巨大影响,从而带来更高的利润率、更高质量的产品和更好的最终用户体验。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 播放器
    +关注

    关注

    5

    文章

    414

    浏览量

    38822
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11329

    浏览量

    225903
  • 服务器
    +关注

    关注

    14

    文章

    10362

    浏览量

    91759
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    瀚高数据库深度参编国家标准《信息技术 云原生关系数据库管理系统技术要求》正式发布

    济南2026年4月15日 /美通社/ -- 近日,国家市场监督管理总局、国家标准化管理委员会正式发布国家标准 GB/T 47343-2026《信息技术 云原生关系数据库管理系统技术要求》。作为我国
    的头像 发表于 04-15 16:41 344次阅读

    洞察电商数据:淘宝商品评论API数据模型

    洞察电商数据:淘宝商品评论API数据模型 淘宝商品评论API是电商竞品分析、用户痛点挖掘、口碑监测、选品调研的核心接口,用于合规获取商品评价、评分、晒图、追评等全维度评论数据。本文整理通用标准
    的头像 发表于 03-27 16:40 200次阅读

    知识分享-嵌入式系统可靠性模型

    嵌入式系统可靠性设计技术及案例解析1.3嵌入式系统可靠性模型嵌入式系统可靠性模型分为两种:串联结构模型
    的头像 发表于 03-11 16:43 393次阅读
    知识分享-<b class='flag-5'>嵌入式</b>系统可靠性<b class='flag-5'>模型</b>

    TiDB分布式数据库运维实践

    TiDB 是 PingCAP 开发的开源分布关系数据库,兼容 MySQL 5.7 协议,底层存储基于 TiKV(分布 KV 存储)和 RocksDB。它解决的核心问题是:当单机
    的头像 发表于 03-04 15:44 287次阅读

    艾体宝干货 | 多模型数据库解决的到底是什么问题?

    数据库选型的专业讨论中,“多模型数据库”已逐步成为热点概念,但行业对其认知仍存在偏差——要么被曲解为“无所不能的万能数据库”,要么被简化为“图数据
    的头像 发表于 02-03 16:08 402次阅读

    恒讯科技解析:如何安装MySQL并创建数据库

    安装和管理MySQL不必复杂。只需几分钟,你就能在Linux服务器上搭建MySQL,创建第一个数据库,甚至自动化备份——同时确保数据安全有序。 什么是 MySQL  MySQL 是一个关系
    的头像 发表于 01-14 14:25 368次阅读

    在以下嵌入式软件设计模型中,属于数据模型的是,哪里有设计模型的介绍?

    在以下嵌入式软件设计模型中,属于数据模型的是()。A. CCSB. CSPC. FSMD. Petri Net
    发表于 11-24 15:55

    数据库数据恢复—服务器异常断电导致Oracle数据库故障的数据恢复案例

    Oracle数据库故障: 某公司一台服务器上部署Oracle数据库。服务器意外断电导致数据库报错,报错内容为“system01.dbf需要更多的恢复来保持一致性”。该Oracle数据库
    的头像 发表于 07-24 11:12 845次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—服务器异常断电导致Oracle<b class='flag-5'>数据库</b>故障的<b class='flag-5'>数据</b>恢复案例

    企业级MySQL数据库管理指南

    在当今数字化时代,MySQL作为全球最受欢迎的开源关系数据库,承载着企业核心业务数据的存储与处理。作为数据库管理员(DBA),掌握MySQL的企业级部署、优化、维护技能至关重要。本文
    的头像 发表于 07-09 09:50 891次阅读

    数据库数据恢复—MongoDB数据库文件丢失的数据恢复案例

    MongoDB数据库数据恢复环境: 一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 工作人员在MongoDB服务仍
    的头像 发表于 07-01 11:13 785次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—MongoDB<b class='flag-5'>数据库</b>文件丢失的<b class='flag-5'>数据</b>恢复案例

    数据库数据恢复—SQL Server数据库被加密如何恢复数据

    SQL Server数据库故障: SQL Server数据库被加密,无法使用。 数据库MDF、LDF、log日志文件名字被篡改。
    的头像 发表于 06-25 13:54 843次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—SQL Server<b class='flag-5'>数据库</b>被加密如何恢复<b class='flag-5'>数据</b>?

    嵌入式AI技术漫谈:怎么为训练AI模型采集样本数据

    Q 需要为嵌入式AI模型提供多少样本数据? 我在向客户介绍如何使用AI方法设计一款客户产品时,客户理解,AI嵌入式项目的开发都是围绕数据展开
    的头像 发表于 06-11 16:30 1548次阅读

    oracle数据恢复—oracle数据库误执行错误truncate命令如何恢复数据

    oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据
    的头像 发表于 06-05 16:01 1793次阅读
    oracle<b class='flag-5'>数据</b>恢复—oracle<b class='flag-5'>数据库</b>误执行错误truncate命令如何恢复<b class='flag-5'>数据</b>?

    SQLSERVER数据库是什么

    SQL Server 是由微软公司开发的一款 关系数据库管理系统(RDBMS) ,用于存储、管理和检索结构化数据。它是企业级应用中广泛使用的数据库解决方案之一,尤其适用于Window
    的头像 发表于 05-26 09:19 1303次阅读

    MySQL数据库是什么

    开发、企业应用和大数据场景。以下是其核心特性和应用场景的详细说明: 核心特性 关系数据库模型 数据以 表(Table) 形式组织,表由行(
    的头像 发表于 05-23 09:18 1450次阅读