嵌入式数据库的现状和未来

数据库
随着微电子技术和存储技术的不断发展,嵌入式系统的内存和各种永久存储介质容量都在不断增加。这也就意味着嵌入式系统内数据处理量会不断增加,那么大量的数据如何处理问题变得非常现实。

1.嵌入式数据库产生及运用的必然性

嵌入式系统在现代人的生活中随处可见,其中软件的比例越来越大,软件开发的投入也越来越大。

随着微电子技术和存储技术的不断发展,嵌入式系统的内存和各种永久存储介质容量都在不断增加。这也就意味着嵌入式系统内数据处理量会不断增加,那么大量的数据如何处理问题变得非常现实。人们不得不将原本在企业级运用的复杂的数据库处理技术引入到嵌入式系统当中去,应用于嵌入式系统的数据库技术也就应运而生。

但是,事情总是比想象复杂。在嵌入式的世界,无论是通讯领域的嵌入式设备还是其它领域中,各种中间环节逐渐设备化,成为独立的相对封闭的系统,对外留有接口。设备中数据种类和处理方法有一定的共同规律也有自己的特殊规律。这使得嵌入式数据库不能像企业级数据库那样几乎是一个解决方案走遍天下,而是有着很大的差异性。同时,也为嵌入式数据库的合理运用带来了挑战,这是嵌入式数据库差异化的一个基本原因。

随着嵌入式系统的扩大,嵌入式产品的开发不再像过去那样几个人就可以完成整个系统的开发,需要更多的人组成团队进行合作。嵌入式软件的需求分析和品质管理也变得越来越复杂,开发周期也逐渐拉长。为了解决这些问题,引进第三方成熟的中间件或解决方案也变得非常现实。专业的嵌入式数据库厂商也逐渐进入了人们的视野。因为,运用成熟的嵌入式数据处理中间件可以降低开发成本、缩短开发周期,使开发者能够将更多的精力放在业务逻辑的处理上,而不用花大把的金钱和精力来处理数据,对整个社会的资源也是一种节约。

2.嵌入式数据库的基本特点

按照马克思的哲学理论,事物发展的进程可以用螺旋式上升来描述。嵌入式数据库和我们现在常见的企业级数据库的基本关系也是一个螺旋上升式的关系。虽然,从名字上看,二者有着太多的相似性,但却有着本质的根本性的区别。外在的形式的相似性,并不能代表二者的实现方式和运用方式的相似。恰恰相反,嵌入式数据库的实现和运用方式和企业级的数据库有着很大的区别。

在国外,嵌入式数据库已经发展了30多年,典型的代表是Empress嵌入式数据库。它的特点也基本代表了现阶段嵌入式实时数据库的基本特点。下面就介绍一下Empress嵌入式数据库所具有的区别于企业级数据库的几个主要特点。

嵌入性是嵌入式数据库的基本特性。嵌入式数据库不仅可以嵌入到其他的软件当中,也可以嵌入到硬件设备当中。Empress的方法之一就是使数据库以组件的形式存在,并发布给客户,客户只需要像调用自己定义的函数那样调用相应的函数就可以创建表、插入删除数据等常规的数据库操作。客户在自己的产品发布时,可以将Empress数据库编译到自己的产品内,变成自己产品的一部分,最终用户是感受不到数据库的存在的,也不用特意去维护数据库。

实时性和嵌入性是分不开的。只有具有了嵌入性的数据库才能够第一时间得到系统的资源,对系统的请求在第一时间内做出响应。但是,并不是具有嵌入性就一定具有实时性。要想嵌入式数据库具有很好的实时性,必须做很多额外的工作。比如:Empress实时数据库将嵌入性和高速的数据引擎、定时功能以及防断片处理等措施整合在一起来保证最基本的实时性。当然,不同的场合实时性要求比较高时,除了软件的实时性外,硬件的实时性也是必须的,具体情况需要有具体和切实的解决方案,不能一概而论。

移动性是目前在国内提的比较多的一个说法,这和目前国内移动设备的大规模应用有关。可以这么说,具有嵌入性的数据库一定具有比较好的移动性,但是具有比较好的移动性的数据库,不一定具有嵌入性。比如,一个小型的C/S结构的数据库也可以运用在移动设备上,而具有移动性。但这个数据库本身是一个独立存在的实体,需要额外的运行资源,本质上讲和企业级数据库区别不大。所以不具有嵌入性,也基本上不具备实时性。Empress是优秀的嵌入式实时数据库,毫无疑问也是非常优秀的移动数据库。

伸缩性在嵌入式场合显得尤为重要。首先嵌入式场合硬件和软件的平台都是千差万别,基本都是客户根据需要自己选择的结果。

所以嵌入式场合的数据库必须能够支持非常多的平台,如Empress目前支持6000多种平台。同时,数据存储要支持常见的存储设备,如CF/Flash/HD等。多进程和多线程是必备的,现在的嵌入式系统已经远远不是当初的简单的编程,代码量增大,功能日益复杂,所以必然要支持多线程和多进程。C/C++和SQL接口的支持也是必备的,作为数据库当然要有大家熟悉的SQL,但同时不要忘记嵌入式场合用的最多的标准的C/C++接口。某种程度上说,嵌入式场合的数据比企业级应用的数据还要复杂,所以要支持各种类型的数据,如多媒体数据和空间数据等,要支持各种数据结构,除了传统的关系型,还要能处理树状结构和网状结构。

当然,肯定要具备企业级数据库所具有的一些共性。比如,一致性是数据库所必需的特性。通过事务、锁功能和数据同步等多种技术保证数据库内的各个表内的数据的一致性,同时也保证数据库和其他同步或镜像数据库内数据的一致性。安全性也是必不可少的。在保证物理信息本身的安全的同时,也要保证用户私有信息的安全。

3. 80%和20%

嵌入式的应用场合和通用PC或服务器架构上的应用有着很大的不同。嵌入式系统中虽然也有不少的标准和组件,但种类繁多,环境千差万别,应用特殊化的地方非常之多。所以在嵌入式场合无论成熟的产品和组件一般只能够满足客户的80%的要求。余下20%的要求是需要产品提供方和客户共同来努力解决的特化的部分。当然,每个行业都有自己的特点,如果能够为某个行业提供完整的特殊化解决方案,那么在同行业中特化的部分也就不会再有这么高的比例。

这些特殊化工作比较多,下面列举一两个:

针对不同平台和环境的移植。虽然大部分操作系统都声称支持标准的POSIX接口,但实际上要在上面高效运行实时的嵌入式数据库还是比较困难的。有的实时性非常高的操作可能还需要直接调用CPU的处理指令。所以最好在客户使用嵌入式数据库之前,将数据库移植到客户的环境中去。对于那些部分支持,或者不支持POSIX标准的操作系统就只能做移植了。

在客户平台上做出性能测试报告和优化。嵌入式场合很多应用是非常苛刻的,所以必须保障嵌入式数据库在客户的平台上能够达到客户要求的性能指标。最佳的评价方就是嵌入式数据库的提供方在客户平台上做的性能测试报告,并在必要的地方对数据处理方式进行优化。

根据应用的要求实现个性化的功能。既然数据统一由数据库引擎进行管理,那么许多特殊的功能在这一层实现是最佳的选择。所以,嵌入式数据库进入一个新的行业以后,都会产生一些新的应用构件。这些构件直接和引擎打交道,同时对用户层留有接口。

这种差异化也导致了嵌入式数据库的技术支持变得比较重要,厂家一般都会提供有偿或无偿的技术支持。#p#

4.嵌入式数据库的分类

嵌入式数据库的分类方法很多,可以按照嵌入的对象不同分为:软件嵌入数据库、设备嵌入数据库、内存数据库。也有人将它们粗略的分为:嵌入数据库、移动数据库、小型的C/S结构数据库等。笔者更偏向于按照下面的方式进行划分:

小型C/S数据库。这种数据库其实是企业级数据库的一个缩小版,缩小以后可以在一些实时性要求不高的设备内运行。它只和操作系统有关,一般只能支持一些常见的移动操作系统,如,Linux和Windows CE系列。

面向软件嵌入数据库。它将数据库作为组件嵌入到其他的软件系统中。一般用在对数据库的安全性、稳定性和速度要求比较高的系统中。这种结构资源消耗低,最终用户不用维护数据库,甚至感受不到数据的存在。

面向设备嵌入数据库。它将关系型数据库嵌入到设备当中去,作为设备数据处理的核心组件。这种场合要求数据库有很高的实时性和稳定性,一般运行在实时性非常高的操作系统当中。为了达到这些要求有的厂商采用关系型的数据结构,有的采用非关系型的数据结构。有时候甚至直接和硬件打交道。当然,这种结构在实时性要求不高的移动场合更能够胜任。

内存数据库。数据库直接在内存内运行,数据处理更加高速,不过安全性等方面需要额外的手段来保障。

当然,相同类型的嵌入式数据库肯定会有很多不同的版本。如,Empress具有上述所有种类的嵌入式数据库,且每种都有很多版本,就在一年前刚刚针对日本市场比较特殊的操作系统iTRON开发了一个专用的嵌入式数据库版本。

5.嵌入式数据库的构件

嵌入式数据库包含的构件很多,不过大部分嵌入式数据库包含的构件差别是不大的,以Empress嵌入式数据库为例包括以下一些构件。

用户接口级构件。这些构件主要是方便用户对数据库进行操作和访问。如,标准的C语言应用程序接口(C KERNEL API);标准的SQL语句(EMBEDDED SQL);JDBC/ODBC接口;数据流处理(Data Streaming)、网络处理(Embedded Network API)以及数据恢复处理(Data Recovery API)等。

应用级构件。该部分的构件包括一些主要应用所必需的构件,当然随着应用的不同,构件也是可以裁剪和添加的。

引擎级构件。主要包含事务处理(Transaction)、索引(Index)、多进程/多任务(Multi Proc/Task Access)、可配置数据库内核(Configurable Database Kernel)、断电恢复管理(Power Down Recovery)和存储介质引擎(Storage Engine)。但具体的Empress产品中远不止这么多。

6.应用现状

嵌入式数据库在国外已经有30年的历史,应用领域也非常广泛,下面仅结合Empress嵌入式数据库的部分应用,介绍一些大家感兴趣的领域。

医疗领域 北美和欧洲的一些著名的厂商利用Empress的数据库开发过完整的电子病历系统,同时将数据库嵌入到医疗器械当中。如,血液分析装置、乳癌的检测装置、医学图像装置等。这样医疗系统的各个环节可以无缝地和各种医疗设备进行数据交流,并轻松地处理这些设备送过来的数据信息,在必要的时候共享给有权限查看的用户。

军事设备和系统 一些著名的军事机构和全球著名的武器生产商将Empress数据库运用到他们的系统控制装置、战士武器、军舰装置、火箭和导弹装置中。这些场合用的数据库有很多的安全设定和特化设定,基本上严格按照每个客户的技术标准的要求来特化引擎级构件。具体的应用级的构件由客户自己完成。

地理信息系统 地理信息包括的范围很广,在国外地理信息系统已经发展了很多年,国内这几年也逐渐加大对地理信息系统方面的投入。Empress在地理信息系统方面的应用非常广泛。如,空间数据分析系统、卫星天气数据、龙卷风和飓风监控及预测、大气研究监测装置、天气数据监测、相关卫星气象和海洋数据的采集装置、导航系统等等。几乎涉及到地理信息的方方面面。

工业控制 工业控制的一个基本方式是一个反馈的闭环或半闭环的控制方式。随着工业控制技术的发展,简单的数据采集方式和反馈方式基本上很难满足要求。采用Empress嵌入式数据库即能够进行高速的数据采集,也能够快速的反馈。正因为如此,在一些核电站监控装置、化学工厂系统监控装置、电话制造系统监控装置、汽车引擎监控装置及工业级机器人中有广泛应用。

网络通讯 随着互联网的发展,网络越来越普及,网络设备的处理能力越来越强、各种要求也越来越高,运用嵌入式数据库也成了必然趋势。我们现在日常见到的很多网络设备和系统都已经使用了嵌入式数据库。Empress在一些企业内部互联网装置、网络传输的分布式管理装置、语音邮件追踪系统、VoIP交换机、路由器、基站控制器等系统中都有应用。

空间探索 一些全球著名的机构将Empress用在一些著名的空间探索装置中,如大家熟知的一些太阳系内行星的探测器等。

消费类电子 目前在中国消费类电子比较火热,它包含的范围也非常广。如:个人消费相关的PND、移动电话、PDA、SmartPhone、数码产品等;信息家电和智能办公相关的机顶盒、家用多媒体盒、互联网电视接收装置、打印机、一体机等;还有汽车电子等。在欧美和日本Empress不仅在这些方面已经有不少的成功应用和技术积累,还正在和亚太的一些著名厂商积极展开新的合作和研发,目前已经取得实质性的成果。

当然,嵌入式数据库的应用应该远不止这么多,不过笔者只能结合自己的经验向大家介绍一些我了解的,同时也是关注比较多的领域。

7.未来的展望

未来的世界是一个“普适计算”或“泛在计算”(Pervasive Computing 或 Ubiquitous Computing)的世界。“普适计算”指的就是,“无论何时何地,只要您需要,就可以通过某种设备访问到所需的信息”。有一篇关于泛在计算领域著名的学者——坂村健先生的采访,标题就是“让整个世界变成一台巨型计算机”。

“普适计算”的世界将是继互联网之后给我们带来的另一个技术世界。在这个世界里有各种各样的设备(称为:计算节点),他们无时无刻地作为一个相对独立的单元参与整个世界的计算,能够满足人们日常生活的信息的需要。虽然这一天的到来还要依赖于微电子技术、RFID技术、智能传感器网络、软件技术等高、新、尖技术的发展。但我们可以预感到这一天会慢慢逼近。

从某种意义上讲,“普适计算”也可以描述成嵌入式设备处理大量信息的计算。这正是嵌入式数据库诞生和发展的原动力。所以,我可以很明显地感觉到嵌入式数据库必将广泛地被应用。

目前在中国Internet迅速普及和发展,并向个人和家庭不断扩展,使消费电子、计算机、通信(3C)一体化趋势日趋明显。中国的产业结构正在从低附加值的制造业向高附加值的高新技术领域过渡。尤其在一些发展较快的地区,如上海,必将抓住这个大的潮流加速自己的发展。我们几乎可以预见,在未来几年中国的消费类电子必然会蓬勃发展,应用的领域会越来越广泛,嵌入式数据库将会随着这些无处不在的计算节点而渗透到我们生活的每一个环节中。

目前,国内的许多嵌入式软件技术人员经过数据处理的困惑,经过开源的摸索,经过自主开发的尝试,许多开发者正逐渐意识到商用数据库的必要性。商用嵌入式数据库正在被逐渐被正确认识和接受。

【编辑推荐】

  1. DB2数据库移植常见问题全面解析
  2. 如何建立DB2服务器报表并在前端Access显示
  3. DB2数据库代码页不兼容解决方案
责任编辑:田超 来源: 中国计算机报
相关推荐

2011-03-11 11:19:05

嵌入式数据库

2011-03-07 09:57:24

Perst嵌入式数据库

2013-09-02 14:41:05

Java嵌入式SQLite

2013-09-22 10:39:00

MeayunDB

2011-07-08 10:45:19

SqlceSqlCeConnec

2011-06-15 10:18:12

Windows PhoPerst

2010-07-05 13:36:21

SQL Server

2011-08-05 09:11:56

2009-11-19 09:35:36

eXtremeDB嵌入式实时数据库McObject

2010-03-23 09:08:05

2010-05-18 16:20:15

数据库索引

2009-06-11 16:34:19

2010-02-24 16:02:45

PerstSilverlight

2012-03-09 09:45:29

Windows嵌入式操作系统

2024-03-05 18:40:15

LiteDB数据库NoSQL

2020-05-13 09:06:34

Java 数据库开发

2010-03-19 13:05:11

Perst Lite

2013-04-09 16:47:19

iOS嵌入式数据库SQLit

2022-05-30 09:43:06

数据库字节跳动数据规模

2021-08-31 11:06:28

嵌入式数据库MySQL
点赞
收藏

51CTO技术栈公众号