嵌入式内存数据库 什么是嵌入式数据库
其实嵌入式内存数据库的问题并不复杂,但是又很多的朋友都不太了解什么是嵌入式数据库,因此呢,今天小编就来为大家分享嵌入式内存数据库的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
嵌入式实时数据库的物理结构
在嵌入式实时系统中,确定性是一个重要的性能指标,用户必须能够确定数据操作的时间和数据库存储空间的占用情况等。传统的数据库的存储管理主要是基于磁盘存储结构,数据在存取过程中需要进行频繁的I/O操作,由于I/O操作时间的不确定性,使得传统数据库存储技术无法应用在嵌入式系统中。考虑到存取时间、存储空间利用率和维护代价等因素,通常嵌入式实时系统的存储结构分为两个层次,第一层为内存,即RTDBS中的内存数据库,整个实时数据库系统的高性能要求就是以内存数据库做为底层支持的,它是实时数据库系统的关键,用于程序运行和实时数据的处理,它存取速度快,无需进行磁盘的I/O操作,因此最适合用于实时数据的管理和操作;第二层为外存,通常采用一些永久存储设备,需要进行读写I/O操作,用于存储系统中的历史数据。这样,对于那些固定不变的数据(如模拟量的工程单位)或存取频率相对较低的数据(如只有在故障恢复时才使用的数据备份或日志备份)放在外存空间内,而把所有的实时数据或当前工作部分的数据驻留在内存中,避免了数据库文件的操作,大大提升了实时数据库系统的性能。对于这种两层存储结构中的内存部分,可由嵌入式OS自动分配,用户也可指定系统的分配空间,一般由三部分共享内存构成,分别是索引区、数据区和系统信息区,每条记录由表名、段号、段内偏移地址来确定。
嵌入式RTDBS中数据的查找及更新相当频繁,必须建立良好的索引结构以加速各种操作的执行速度和确保数据结构的紧凑性。嵌入式RTDBS由于实时数据全部驻留内存,系统很少进行磁盘I/O操作,因此其索引结构重点解决时间和空间上的开销,其建立原则是快速定位,节省空间。通常采用的数据库索引结构为顺序结构、B树、AVL树的方法。顺序结构可采用数组方式存储,其优点是存取方便,但不便于动态维护,进行插入删除等操作时需要移动大量的数据; B树的使用最为广泛,它操作性能好,动态维护方便,但是它的每个节点的数据覆盖率仅为55%[3],存储效率太低;AVL树具有较高的存取性能,但是每个节点需要两个指针域和一些附加的控制信息,存储效率也不高。它们均不是嵌入式实时环境下的最佳选择,因此在以上结构的基础上,出现了多种改进的适用于嵌入式数据库系统的索引结构,如针对提高内存数据库性能的T*树索引结构[4],这是一种改进的T树结构,它比AVL树和B树具有更高的空间利用率,虽然查找时间复杂度稍高于AVL树,但内存中的操作使得其查找时间足以满足实时性要求,这种结构大大减少了节点间元素的移动和平衡处理的次数,较好的考虑了时间和空间的关系,是一种适用于嵌入式系统的索引结构;此外,针对嵌入式系统I/O操作性能的不平衡B树索引结构[5],主要为了减少存储块的写次数,这种索引结构的节点由若干个关键字和指针域构成,每个指针指向具有相应关键字的文件记录,由于不平衡B树避免了B树为了调节平衡产生的进一步分裂而进行的次数,因此提高了系统的写性能。
什么是嵌入式数据库
嵌入式数据库的名称来自其独特的运行模式。
这种数据库嵌入到了应用程序进程中,消除了与客户机服务器配置相关的开销。嵌入式数据库实际上是轻量级的,在运行时,它们需要较少的内存。它们是使用精简代码编写的,对于嵌入式设备,其速度更快,效果更理想。嵌入式运行模式允许嵌入式数据库通过SQL来轻松管理应用程序数据,而不依靠原始的文本文件。嵌入式数据库还提供零配置运行模式,这样可以启用其中一个并运行一个快照。简单来说,就是一些终端使用的数据库,如POS机、手机等或者其他的非电脑上面使用的,一般都可以叫嵌入式数据库典型的数据库是sqlite,单文件数据库
嵌入式实时数据库的管理系统
嵌入式RTDBS系统是介于用户和实时操作系统之间的一层软件,由众多程序模块组成,它的作用是对数据库中的共享数据进行有效的组织、管理和存取,其结构如图4所示。其中,存储空间管理模块、安全性和完整性控制模块、事务并发控制模块、实时数据转储模块、运行日志管理模块是在嵌入式环境下开发实时数据库系统需要特别解决的几个问题:(1)存储空间管理模块。嵌入式实时数据库系统由于采用了内存数据库技术,必然要涉及到嵌入式操作系统的内存管理,因此,用户必须了解系统对内存的分配机制,并设计自己的内存管理程序。系统运行时,由该模块通过实时OS向系统申请内存缓冲区,作为共享的内存数据区使用。之后,将历史数据库中的初始化数据调入内存区对这些空白内存进行初始化。对内存空间的申请,用户可采用静态分配方式,这种方式实现简单,无需复杂的索引结构,缺点是失去了灵活性,必须在设计阶段就预先知道所需内存并对之作出分配;或者采用动态分配方式,这种方式使用灵活,可以根据需要扩充数据节点,但是必须建立合适的索引结构,以加快数据的检索时间。该模块要根据具体的实时OS进行设计;(2)数据安全性、完整性控制模块。实时数据库设计中必须考虑数据的安全性,一方面指用户访问数据的合法性,另一方面是指系统的安全性。完整性是指用户对实时数据或历史数据的各种操作必须符合一定的语义,可通过完整性约束条件来实现;(3)事务并发控制模块。实时数据库是一个共享资源,允许多个任务共同使用,如果不对并发事务进行控制,可能会造成任务错误的读取或存储数据,破坏数据的一致性,因此实时数据库系统中,必须实现良好的并发控制机制。传统的数据库一般采用加锁的方式,类似于实时操作系统中的信号量,对于封锁粒度的大小要根据具体的应用系统确定,传统数据库获得锁的开销较小,因此通常选用小粒度封锁单位,以增加系统的并行性。但在实时数据库系统中,事务获得锁的开销与处理数据的开销相当,过小的封锁粒度反而会降低系统的性能,因此在实时数据库中的封锁粒度通常选择一张关系表为一个单位(如模拟量关系表为一个封锁单位),这样做减少了并发控制机制的复杂度,减小了系统的开销,提高了事务处理的整体性能;(4)实时数据转储模块。该模块实现的功能是将实时数据存储为历史数据,通常由该模块先将历史数据保存在内存缓冲区中,缓冲区满时才一次性的写入磁盘;读历史数据时,先从缓冲区内取数据,取不到数据时再进行文件的读写,这种方式可以降低磁盘I/O操作次数。并且只对变化数据进行存储,即节省了外存空间,又不会影响系统性能;(5)运行日志管理模块。日志文件在数据库恢复中起着非常重要的作用,可以用来进行事务故障恢复和系统故障恢复。日志缓冲区专门存放数据库操作的记录,传统的数据库日志记录包括记录名、更新前记录的旧值、更新后记录的新值、事务标识、操作类型等。在嵌入式实时数据库系统中,为了减少系统的开销,在日志记录中不包括新旧记录值,对日志记录的写操作只对缓冲区进行,当缓冲区满时,才由磁盘写操作写入日志文件当中。
什么是内存数据库
内存数据库系统对于嵌入式开发来说是特别有用的, IMDS中每个保存过程缩小了覆盖区智能连接设备的增长速度正越来越快。这种装置不管是在家庭、口袋(pocket)或者是内置于工业通信和传送系统,都已经发展为包含了强大的CPU和完善的嵌入式系统软件。在这种设备中日益流行的一种软件是数据库管理系统(DBMS)。虽然对桌面电脑或者服务器来说,这种软件已经是相当成熟了,但数据库是最新才应用到达嵌入式系统的。像所有进入新环境的生物体一样,数据库也必须经历一个发展过程。一种新型的DBMS,内存数据库系统(IMDS),代表了DBMS应用到嵌入式系统的最新步伐。为什么嵌入式系统开发人员会转向数据库呢?市场竞争使得像机顶盒、网络开关和消费者电子产品这样的设备需要变得越来越智能。要支持扩展功能集,应用程序通常必须管理大容量的更复杂的数据。因此,许多设备开发人员发现他们正致力于自己开发数据管理方案。在应用需求增长时,普通的数据管理方案维护和扩展起来是特别困难的。另外,标准化的趋势,商用现货(ommercial off-the-shelf,COTS)嵌入式操作系统,远离许多私有系统的不完整环境,从而增强数据库的能力。广泛使用的操作系统的出现,比如嵌入式Linux,形成了一个用户群体,他们轮留进行数据库和其他工具开发(包括商业的和非商业的),以不断增强开发平台。因此,设备开发人员开始转向商业数据库,但已有的嵌入式DBMS软件还不理想。嵌入式数据库最初出现在10年前,当时用于支持商业系统,带有包括复杂缓存逻辑和异常终止恢复等功能。但在一个设备上,例如,在一个机顶盒或者下一代传真机中,这些能力通常毫无必要,并且应用程序容易出现超出可用内存和CPU资源的现象。另外,建立传统数据库时是将数据存储在磁盘上。作为一种机械过程,磁盘的I/O是非常昂贵的,尤其是要取得高性能的话。对于嵌入式系统来,因为需要实时执行,因此相对而言,传统数据库就太慢了。内存数据库出现的目的特别针对于满足嵌入式系统的性能需求和资源能力。正如其名字所暗示的,IMDS完全驻留在内存中,它们不会存储到磁盘上。
关于嵌入式内存数据库,什么是嵌入式数据库的介绍到此结束,希望对大家有所帮助。