嵌入式数据库的背景
嵌入式系统在现代人的生活中随处可见,其中软件的比例越来越大,软件开发的投入也越来越大。
随着微电子技术和存储技术的不断发展,嵌入式系统的内存和各种永久存储介质容量都在不断增加。这也就意味着嵌入式系统内数据处理量会不断增加,那么大量的数据如何处理问题变得非常现实。人们不得不将原本在企业级运用的复杂的数据库处理技术引入到嵌入式系统当中去,应用于嵌入式系统的数据库技术也就应运而生。
但是,事情总是比想象复杂。在嵌入式的世界,无论是通讯领域的嵌入式设备还是其它领域中,各种中间环节逐渐设备化,成为独立的相对封闭的系统,对外留有接口。设备中数据种类和处理方法有一定的共同规律也有自己的特殊规律。这使得嵌入式数据库不能像企业级数据库那样几乎是一个解决方案走遍天下,而是有着很大的差异性。同时,也为嵌入式数据库的合理运用带来了挑战,这是嵌入式数据库差异化的一个基本原因。
随着嵌入式系统的扩大,嵌入式产品的开发不再像过去那样几个人就可以完成整个系统的开发,需要更多的人组成团队进行合作。嵌入式软件的需求分析和品质管理也变得越来越复杂,开发周期也逐渐拉长。为了解决这些问题,引进第三方成熟的中间件或解决方案也变得非常现实。专业的嵌入式数据库厂商也逐渐进入了人们的视野。因为,运用成熟的嵌入式数据处理中间件可以降低开发成本、缩短开发周期,使开发者能够将更多的精力放在业务逻辑的处理上,而不用花大把的金钱和精力来处理数据,对整个社会的资源也是一种节约。
嵌入式数据库的分类
嵌入式数据库的分类方法很多,可以按照嵌入的对象不同分为:软件嵌入数据库、设备嵌入数据库、内存数据库。也有人将它们粗略的分为:嵌入数据库、移动数据库、小型的C/S结构数据库等。笔者更偏向于按照下面的方式进行划分:
小型C/S数据库。这种数据库其实是企业级数据库的一个缩小版,缩小以后可以在一些实时性要求不高的设备内运行。它只和操作系统有关,一般只能支持一些常见的移动操作系统,如,Linux和Windows CE系列。
面向软件嵌入数据库。它将数据库作为组件嵌入到其他的软件系统中。一般用在对数据库的安全性、稳定性和速度要求比较高的系统中。这种结构资源消耗低,最终用户不用维护数据库,甚至感受不到数据的存在。
面向设备嵌入数据库。它将关系型数据库嵌入到设备当中去,作为设备数据处理的核心组件。这种场合要求数据库有很高的实时性和稳定性,一般运行在实时性非常高的操作系统当中。为了达到这些要求有的厂商采用关系型的数据结构,有的采用非关系型的数据结构。有时候甚至直接和硬件打交道。当然,这种结构在实时性要求不高的移动场合更能够胜任。
内存数据库。数据库直接在内存内运行,数据处理更加高速,不过安全性等方面需要额外的手段来保障。
当然,相同类型的嵌入式数据库肯定会有很多不同的版本。如,Empress具有上述所有种类的嵌入式数据库,且每种都有很多版本,就在一年前刚刚针对日本市场比较特殊的操作系统iTRON开发了一个专用的嵌入式数据库版本。
嵌入式数据库的特点
按照马克思的哲学理论,事物发展的进程可以用螺旋式上升来描述。嵌入式数据库和我们现在常见的企业级数据库的基本关系也是一个螺旋上升式的关系。虽然,从名字上看,二者有着太多的相似性,但却有着本质的根本性的区别。外在的形式的相似性,并不能代表二者的实现方式和运用方式的相似。恰恰相反,嵌入式数据库的实现和运用方式和企业级的数据库有着很大的区别。
在国外,嵌入式数据库已经发展了30多年,典型的代表是Empress嵌入式数据库。它的特点也基本代表了现阶段嵌入式实时数据库的基本特点。下面就介绍一下Empress嵌入式数据库所具有的区别于企业级数据库的几个主要特点。
嵌入性是嵌入式数据库的基本特性。嵌入式数据库不仅可以嵌入到其他的软件当中,也可以嵌入到硬件设备当中。Empress的方法之一就是使数据库以组件的形式存在,并发布给客户,客户只需要像调用自己定义的函数那样调用相应的函数就可以创建表、插入删除数据等常规的数据库操作。客户在自己的产品发布时,可以将Empress数据库编译到自己的产品内,变成自己产品的一部分,最终用户是感受不到数据库的存在的,也不用特意去维护数据库。
实时性和嵌入性是分不开的。只有具有了嵌入性的数据库才能够第一时间得到系统的资源,对系统的请求在第一时间内做出响应。但是,并不是具有嵌入性就一定具有实时性。要想嵌入式数据库具有很好的实时性,必须做很多额外的工作。比如:Empress实时数据库将嵌入性和高速的数据引擎、定时功能以及防断片处理等措施整合在一起来保证最基本的实时性。当然,不同的场合实时性要求比较高时,除了软件的实时性外,硬件的实时性也是必须的,具体情况需要有具体和切实的解决方案,不能一概而论。
移动性是目前在国内提的比较多的一个说法,这和目前国内移动设备的大规模应用有关。可以这么说,具有嵌入性的数据库一定具有比较好的移动性,但是具有比较好的移动性的数据库,不一定具有嵌入性。比如,一个小型的C/S结构的数据库也可以运用在移动设备上,而具有移动性。但这个数据库本身是一个独立存在的实体,需要额外的运行资源,本质上讲和企业级数据库区别不大。所以不具有嵌入性,也基本上不具备实时性。Empress是优秀的嵌入式实时数据库,毫无疑问也是非常优秀的移动数据库。
伸缩性在嵌入式场合显得尤为重要。首先嵌入式场合硬件和软件的平台都是千差万别,基本都是客户根据需要自己选择的结果。
所以嵌入式场合的数据库必须能够支持非常多的平台,如Empress目前支持6000多种平台。同时,数据存储要支持常见的存储设备,如CF/Flash/HD等。多进程和多线程是必备的,现在的嵌入式系统已经远远不是当初的简单的编程,代码量增大,功能日益复杂,所以必然要支持多线程和多进程。C/C++和SQL接口的支持也是必备的,作为数据库当然要有大家熟悉的SQL,但同时不要忘记嵌入式场合用的最多的标准的C/C++接口。某种程度上说,嵌入式场合的数据比企业级应用的数据还要复杂,所以要支持各种类型的数据,如多媒体数据和空间数据等,要支持各种数据结构,除了传统的关系型,还要能处理树状结构和网状结构。
当然,肯定要具备企业级数据库所具有的一些共性。比如,一致性是数据库所必需的特性。通过事务、锁功能和数据同步等多种技术保证数据库内的各个表内的数据的一致性,同时也保证数据库和其他同步或镜像数据库内数据的一致性。安全性也是必不可少的。在保证物理信息本身的安全的同时,也要保证用户私有信息的安全。
嵌入式数据库的构件
嵌入式数据库包含的构件很多,不过大部分嵌入式数据库包含的构件差别是不大的,以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产品中远不止这么多。
主流的嵌入式数据库
嵌入式数据库在国外发展已有30多年的历史,在国内最近几年才有了重视。在国内外市场上近几年比较活跃并且越来越受到广泛重视和应用的是商用级嵌入式实时数据库系统。
当前主流的嵌入式数据库,具有支持多个平台、面向多种开发语言、具有多个灵活的接口等特点,主流的嵌入式数据库有:Oracle 公司的 Berkeley DB、Sysbase Adaptive Server Anywhere、Linter 以及SQLite 等,国内的科研机构也积极开展这方面的研究并推出了自己的产品,主要有方舟公司的Noahbase,人大金仓Kingbase ,以及华中科技大学ARTs-EDB等
嵌入式数据库的应用
嵌入式数据库在国外已经有30年的历史,应用领域也非常广泛,下面仅结合Empress嵌入式数据库的部分应用,介绍一些大家感兴趣的领域。
网络通讯 :随着互联网的发展,网络越来越普及,网络设备的处理能力越来越强、各种要求也越来越高,运用嵌入式数据库也成了必然趋势。我们现在日常见到的很多网络设备和系统都已经使用了嵌入式数据库。Empress在一些企业内部互联网装置、网络传输的分布式管理装置、语音邮件追踪系统、VoIP交换机、路由器、基站控制器等系统中都有应用。
消费类电子 :目前在中国消费类电子比较火热,它包含的范围也非常广。如:个人消费相关的PND、移动电话、PDA、SmartPhone、数码产品等;信息家电和智能办公相关的机顶盒、家用多媒体盒、互联网电视接收装置、打印机、一体机等;还有汽车电子等。在欧美和日本Empress不仅在这些方面已经有不少的成功应用和技术积累,还正在和亚太的一些着名厂商积极展开新的合作和研发,目前已经取得实质性的成果。
医疗领域 :北美和欧洲的一些着名的厂商利用Empress的数据库开发过完整的电子病历系统,同时将数据库嵌入到医疗器械当中。如,血液分析装置、乳癌的检测装置、医学图像装置等。这样医疗系统的各个环节可以无缝地和各种医疗设备进行数据交流,并轻松地处理这些设备送过来的数据信息,在必要的时候共享给有权限查看的用户。
军事设备和系统 :一些着名的军事机构和全球着名的武器生产商将Empress数据库运用到他们的系统控制装置、战士武器、军舰装置、火箭和导弹装置中。这些场合用的数据库有很多的安全设定和特化设定,基本上严格按照每个客户的技术标准的要求来特化引擎级构件。具体的应用级的构件由客户自己完成。
地理信息系统 :地理信息包括的范围很广,在国外地理信息系统已经发展了很多年,国内这几年也逐渐加大对地理信息系统方面的投入。Empress在地理信息系统方面的应用非常广泛。如,空间数据分析系统、卫星天气数据、龙卷风和飓风监控及预测、大气研究监测装置、天气数据监测、相关卫星气象和海洋数据的采集装置、导航系统等等。几乎涉及到地理信息的方方面面。
工业控制 :工业控制的一个基本方式是一个反馈的闭环或半闭环的控制方式。随着工业控制技术的发展,简单的数据采集方式和反馈方式基本上很难满足要求。采用Empress嵌入式数据库即能够进行高速的数据采集,也能够快速的反馈。正因为如此,在一些核电站监控装置、化学工厂系统监控装置、电话制造系统监控装置、汽车引擎监控装置及工业级机器人中有广泛应用。
空间探索 :一些全球着名的机构将Empress用在一些着名的空间探索装置中,如大家熟知的一些太阳系内行星的探测器等。
当然,嵌入式数据库的应用应该远不止这么多,不过笔者只能结合自己的经验向大家介绍一些我了解的,同时也是关注比较多的领域。