嵌入式数据库的现状和未来
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标准的操作系统就只能做移植了。
在客户平台上做出性能测试报告和优化。嵌入式场合很多应用是非常苛刻的,所以必须保障嵌入式数据库在客户的平台上能够达到客户要求的性能指标。最佳的评价方就是嵌入式数据库的提供方在客户平台上做的性能测试报告,并在必要的地方对数据处理方式进行优化。
根据应用的要求实现个性化的功能。既然数据统一由数据库引擎进行管理,那么许多特殊的功能在这一层实现是最佳的选择。所以,嵌入式数据库进入一个新的行业以后,都会产生一些新的应用构件。这些构件直接和引擎打交道,同时对用户层留有接口。
这种差异化也导致了嵌入式数据库的技术支持变得比较重要,厂家一般都会提供有偿或无偿的技术支持。
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 Recover
提交
中国联通首个量子通信产品“量子密信”亮相!
国家重大装备企业齐聚高交会 中国科技第一展11月深圳举行
东土精彩亮相华南工博会,展现未来工业前沿技术
ATMS邀请函 | 以智驭新,协作创造汽车行业新质生产力
直播定档!见证西门子与中科摩通联手打造汽车电子智能制造新范式