嵌入式数据库的发展与应用
摘要:从嵌入式系统结构入手,阐述了嵌入式数据库的发展现状,并具体介绍了当前主流嵌入式数据库的共性、基本特点、关键技术、构件、分类,并提出了发展趋势和应用。20年前就已经被组合在各种应用程序、软件组件和硬件环境中。它有两个很重要的特征——“嵌入性”和“实时性”。这里用实际应用的实例来说明,在嵌入式系统里如何有效地使用嵌入式数据库。
关键词:嵌入式数据库;复制;缓存技术;现状;趋势;应用
随着计算机技术及相关技术的不断发展,嵌入式产品由于其智能化、小型化、便携式等特点,已经普遍应用于我们的生活,比如智能手机、车载导航设备、数字移动电视、机顶盒、智能控制设备等。这些产品通常是在计算资源、存储资源等条件受限的情况下处理大量的数据,而传统的数据库一般都是运行在各种各样的服务器或大容量的存储器上,显然把传统的数据库直接移植到嵌入式设备上是不可行的。那么如何在苛刻的条件下,充分利用有限的资源便成为了人们研究的热点。嵌入式数据库也正是在此条件下,和嵌入式操作系统、嵌入式应用软件相伴而生的。
1 嵌入式系统的体系结构
嵌入式数据库位于嵌入式系统的中间部分,下面有嵌入式操作系统层,当前主流的嵌入式操作系统有Windows CE;Palm OS。Linux,VXworks,SymbianOS等平台,硬件平台主要有Dragonball,Handspring,MIPS,Hitachi SH,Power PC以及ARM处理器。嵌入式应用软件位于嵌入式数据库之上,可以通过API函数接口, ODBC,JDBC等与嵌入式数据库通信,来实现数据的检索、删除、添加等操作,更为重要的是要实现数据
的完整性、一致性。
当前主流的嵌入式数据库,具有支持多个平台、面向多种开发语言、具有多个灵活的接口等特点,主流的嵌入式数据库有:Oracle公司的Berkeley DB、Sysbase Adaptive Server Anywhere、Linter以及SQLite等,国内的科研机构也积极开展这方面的研究并推出了自己的产品,主要有方舟公司的Noahbase,人大金仓kingbase等。
在其体系结构中,只是描述了单一的以嵌入式设备为核心的体系架构,底层的数据采集程序把传感器集所测得的具有不同意义的数传送给嵌入式系统进行实时存储,以备数据中心进行数据的查询。嵌入式系统作为下位机负责数据的采集和处理,数据中心数据库作为上位机可以实现下位机和上位机的通信。很多情况下,这样的系统架构应用在移动通信场合。
2 嵌入式数据库的基本特点
嵌入式数据库和企业级数据库的发展都是一个螺旋式上升的发展过程。但它们却有着本质的根本性的区别。外在形式的相似性,并不能代表二者的实现方式和运用方式的相似。
嵌入性:嵌入式数据库不仅可以嵌入到其它的软件中,也可以嵌入到硬件设备中,因此无论是在网络上不同计算机之间还是在同一台计算机的不同进程之间,数据库操作并不要求进程间通信,而且其对所有数据的操作都使用API接口,不需要对某种查询语言进行解析,也不用生成解析计划⋯。
实时性:实时性和嵌入性是分不开的,只有具有了嵌入性的数据库才能够第一时间得到系统的资源,对系统的请求在第一时间做出响应。但是,并不是具有嵌入性就一定具有
实时性。要想使嵌入式数据库具有很好的实时『生,必须做很多额外的工作。
灵活性:当前的嵌入式数据库产品大多具有很强的灵活性,支持多种开发平台,面向多种开发工具,预留有灵活的开发接口。
移动性:移动性是目前在国内提的比较多的一个说法,这和目前国内移动设备的大规模应用有关。可以这么说,具有嵌入性的数据库一定具有比较好的移动性,但是具有比较好的移动性的数据库,不一定具有嵌入性。
伸缩性:伸缩性是嵌入式数据库的必备特点,没有伸缩性就无法在较小的空间上管理大规模存储空间上的数据。大部分嵌入式数据库可以提供线程/任务级别的引擎,使系统的伸缩空间大大扩大。
某种程度上说,嵌入式场合的数据比企业级应用的数据还要复杂,所以要支持各种类型数据(如多媒体数据和空间数据等)以外,还要支持各种数据结构,除了传统的关系型,还要能处理树状结构和网状结构。 当然,嵌入式数据库肯定要具备企业级数据库所具有的一些特点,比如,一致性是数据库所必需的特性。通过事务、锁功能、日志记录、以及数据同步等多种技术保证数据库中各个表内的数据的一致性,同时也保证数据库和其它同步或镜像数据库内数据的一致性。
3 嵌入式数据库应用的关键技术
3.1复制与缓存技术
嵌入式数据库一般用于移动存储设备,而移动设备的一个显著特点是移动终端之间以
及与服务器之间的连接是弱连接,即低带宽、长延迟、不稳定和经常性的断开。复制性嵌入式数据库一般采用复制技术(上传、下载或混合)与服务器数据库进行映射,满足人们在不同时间和地点对数据的需求问题。现在普遍采用
乐观复制方法(Optimistic replication)允许用户对本地缓存上的数据副本进行操作, Ding Zhi-ming等提出了TLRSP(Transacti0n—IeveI Result-set Propagation)模型。在网络断开的情况下,嵌入式数据库在本地数据库子集进行数据操作和事务处理;待网络重新连接后再与数据库服务器或其它终端交换修改信息,并通过中突检测和协调来恢复数据的一致性。由于嵌入式系统的零管理特点,也就是当系统出现故障的时候,可以在没有人员干预的条件下实现自动恢复。
在嵌入式实时数据库中,Choi等人提出了采用双CPU的并行处理结构,一个CPU负责正常的事务处理,另一个专门负责有关恢复处理,如记录日志、做检验点以及故障后进行数据库恢复,该方法是通过改善硬件的处理性能来换取系统整体性能的改善,但该种方法在资源条件苛刻的嵌入式系统中显然是不适用的。有人提出了基于影子的恢复技术,该技术的优点是消除了日志开销,恢复速度快,缺点是在事务生命周期内数据库需维持其更新数据页的两个版本⋯ 当
前页和影子页,同时需维护大量的页表指针。该方法是通过适当的增加存储数据量来提高系统性能。相比较而言,后者在嵌入式系统,以及嵌入式数据库恢复中应用的更多。
3.2事务处理技术和移动查询优化
嵌入式数据库系统中的事务处理在前端可以简单化,但在整个应用系统中要结合计算环境的特征进行事务处理控制。有效平衡用户事务和更新负载是提供
满意服务的关键。
移动查询优化是指在传统分布式数据库查询优化技术的基础上,利用多种方法消除带宽多样性、断接等因素所造成的影响,使查询引擎能够根据当前可采
用网络条件采取恰当的优化算法。在移动计算环境中,许多信息都是快速持续变化的,如移动用户的位置等。
3.3安全性
许多嵌入式产品是应用系统中的关键部分,而其中的数据库部分涉及到个人的隐私性很高,因此在防止碰撞、震动、磁场干扰、遗失、盗窃等对个人隐私数据安全的威胁上需要提供充分的安全保证性。主要措施有:
A)对终端进行认证,防止非法终端的欺骗性侵入:
B)无线通信进行加密,防止数据信息泄露;
C)对下载的数据副本加密存储,以防止移动终端物理丢失后的数据泄密。
4 嵌入式数据库的分类
嵌入式数据库的分类方法很多,可以按照嵌入的对象不同分为:软件嵌入数据库、设备嵌入数据库、内存数据库。也有人将它们粗略的分为:嵌入数据库、
移动数据库、小型的C/S结构数据库等。目前更被大家所接受和认可的更偏向于按
照下面的方式进行划分:
小型C/S数据库。这种数据库其实是企业级数据库的一个缩小版,缩小以后可以在一些实时性要求不高的设备内运行。
面向软件嵌入数据库。它将数据库作为组件嵌入到其他的软件系统中。一般用在对数据库的安全性、稳定性和速度要求比较高的系统中。这种结构资源消耗低,最终用户不用维护数据库,甚至感受不到数据的存在。
面向设备嵌入数据库。它将关系型数据库嵌入到设备当中去,作为设备数据处理的核心组件。这种场合要求数据库有很高的实时性和稳定性,一般运行在
实时性非常高的操作系统当中。
内存数据库。数据库直接在内存内运行,数据处理更加高速,不过安全性等方面需要额外的手段来保障。
5 嵌入式数据库的发展趋势与应用
5.1 发展趋势
近年来,嵌入式数据库的研究取得不少进展,以下几个趋势值得关注:
(1)智能化和主动化以往的嵌入式数据库往往是以存储为目的的被动型的数据库,只能被动地接受操作系统和应用程序的调用来执行相应的动作。能够根据数据库中存储的情况和自身特点,适当地做出优化来满足不同条件下的应用需求的智能化、主动型嵌入式数据
库是以后研究的热点。
(2)多媒体嵌入式数据库随着高档电子消费品日益受到人们的青睐,能够对视频、音频、文字、图像进行存储和快速检索的嵌入式数据库会有更大的市场,并成为人们研究的热点。
(3)时空数据库导航设备、水文、地质、地形地貌相关电子产品的快速发展,迫切需要能够同时处理时间和空间的数据库问世。
当然,除了上述所介绍的嵌入式数据库的发展方向以外,还有很多的方向,这里不逐一论述,比如说最近盛行的云嵌入式数据库等等。那么关于嵌入式数据库具体技术的改进和升级可以从以下几点寻找突破点:
(1)数据库内核 由于嵌入式系统可用资源的受限性,嵌入式数据库内核的大小也是一个关键的问题,那种以牺牲数据库的功能来换取较小的内核显然是与发展趋势相背离的。
(2)数据库的可靠性 嵌入式数据库的应用越来越广泛,也越来越复杂,其功能已经从传统的添加、删除等操作向对声音、视频、三维或多维数据、智能控制等方向发展,因此可靠性的提高也是至关重要的一环。
(3)数据库的可移植性尽管目前的嵌入式数据库产品可以支持多种不同的操作系统,但在嵌入式系统开发过程中,开发人员还要充分考虑硬件平台、操作系统平台以及它们的接口定义,如果有能适用于绝大多数的操作系统平台,对硬件平台和操作系统平台透明的嵌入式数据库,势必可以大大地提高开发效率,降低开发成本。
5.2 应用实例
5.2.1 汽车碰撞测试装置
嵌入式数据库经常在汽车碰撞测试装置中使用。所谓汽车碰撞测试,是检验汽车安全性能的一种有效手段。在测试中,让汽车高速碰撞某个物体,然后收集嵌入在车体中各个部位的各种感应器所发出的数据,再对这些数据进行分析,这需要在碰撞的瞬间大量地收集和保存数据。这时,如何能尽快地保存数据是一个问题。为了解决这个问题,在汽车碰撞测试装置中使用嵌入式数据库,取得非常好的实际效果。
5.1.2 发电机监视装置
在美国大型发电厂的发电机监视装置里,使用了嵌入式数据库。发电厂的发电机是非常重要的生产设备,所以要严格管理以防发电机停机。发电机的监控装置通过收集发电机的各种数据进行监视。
这种需要实时监控的场合,在数据库里预先录入了监视数据用的程序模块。当某数据进入“异常值”、“异常范围”、“警戒范围”的时候,这些程序模块会检测出这些数据,然后自动报警,同时通知监视中心有异常情况。这种数据收集也可用于发电机系统的模拟试验。
5.1.3 监视引擎
在美国的大型飞机制造厂,为了收集引擎的测试数据和飞机内部机械的数据,在飞机上也装载了嵌入式数据库。在美国的大型汽车制造厂的引擎废气排放测试装置里,也嵌入了数据库,废气排放测试的结果全部保存于数据库,以后的其他测试、分析以及模拟试验等环节就能有效利用这些数据。2008年奥运会所使用的环保巴士内也使用了嵌入式数据
库。
5.1.4 在FA领域中使用数据库的注意事项
在这个领域利用嵌入式数据库时,会有一些常见的典型问题,如往数据库写人数据的速度和性能等问题。一方面要求内存消耗量足够少,一方面又需要对大量数据的进 、行运算,所以必须同时满足两个相反的要求。再者,像发电机装置监视的例子那样,数据监视模块必须要嵌入到数据库中(在实际的嵌入式数据库中,这些监视模块主要是通过用户自定义的函数来实现数据的收集、监视和报警等)。
5.1.5 宇宙航空和机器人
现在,嵌入式数据库在宇宙航空和机器人等方面有很多实际应用。例如木星探查伽利略计划,卫星观测系统,地上测定、命令处理系统,卫星控制系统,天气预报的发布系统,战争模拟游戏等。除此以外,还有许多其他的宇宙航空项目和机器人项目中使用了嵌入式数据库嵌入式数据库在宇宙航空以及机器人的应用程序中起着核心的作用。在数据库中保存着全部的程序、指令、可执行的模块,并将这些制作成基于知识(knowledgebased)或者基于规则(rule based)的系统。可执行模块将根据传感器的信息执行各种动作或命令。将来,保存于数据库中的执行模块很可能实现自动执行的功能。
5.1.6 车载导航
车载导航系统在日本等发达国家已经普及,在中国实际使用者应该也有很多。不过对日常使用的车载导航,了解它的内部构造的人并不多。这里就有关车载导航的系统构造进行简单说明。
车载导航GPS(Global Position System,全球定位系统)是利用装有车速脉冲、罗盘传感器等的“自动导航法”装置,为正在驾车的驾驶员进行现在的位置及驶向目的地行驶路线导航的一种电子仪器。
车载导航刚开始开发时,只使用“自动导航法”装置。由于靠装置自身来推算出车辆的位置,因此行驶开始后有必要对行驶到一定地点的行驶方向和行驶角度进行小调整。现在GPS方法非常盛行 。该方法通过GPS推算出车辆的位置。不过只靠GPS,不管怎样设计总会有某种程度的误差。因此,现在的车载导航通过对GPS和“自动导航法”装置组合的方法来弥补双方的缺点,以推算出车辆的位置。
因篇幅问题不能全部显示,请点此查看更多更全内容