blog » 计算机基础 » 嵌入式数据库无所不在

嵌入式数据库无所不在

随着移动通信和网络技术的进步,人们对随时随地无所不在的计算、信息处理和信息交换的需求不断提高,与各种电子设备紧密结合的嵌入式数据库技术得到飞速发展。可以预见,未来嵌入式数据库将无所不在,人们希望能够随时随地存取任意数据的愿望终将成为现实。

一、嵌入式数据库(eDB)——重要性日益凸现

首先通过几个实例阐明电子设备中为什么需要嵌入式数据库。

实例一:汽车电子

随着汽车中的电子装置越来越多,所产生的数据越来越复杂,数据量也越来越大,嵌入式数据库必将成为汽车环境中进行数据管理的最佳、也是惟一的选择。以节省汽车油耗的控制系统为例(图1):通过安装在气缸和尾气排放口的传感器,可以实时获取气缸内的压力和温度、尾气温度和CO2含量等数据并保存到嵌入式数据库中,同时触发数据库内的处理过程,判断采集得到的数据是否符合相应要求(如:节能减排的指标要求),然后根据预定策略计算调整参数,将计算结果传给控制器,以控制喷油嘴和引擎,达到环保节能的目的。

实例二:电信和移动

在电信和移动应用中有许多场合(如:电话呼叫中心、短信中心、无线网络中心、电信实时计费系统等)对数据的快速处理和响应要求很高:电信的计费系统如果不能及时得到数据响应,必然会给客户带来损失;短信中心如果不能及时将短信送达目标设备,也会给客户带来沟通上的不便。实践已经证明:使用嵌入式数据库是实现快速处理和响应的最佳方案。

短信网关是短信中心的一部分,访问量非常大,嵌入式数据库可实时查询出被叫手机所在位置,将短信打包、存储、转发,并与后台的大型数据库进行数据同步。Web网关也是短信中心的一部分,同样要借助于内存数据库来保证对客户的快速响应,并与后台数据库进行数据同步。

实例三:行星探测器

嵌入式数据库在行星探测器中的应用可分为四个层面:

1.用嵌入式数据库实时处理各种复杂数据(星云和大气信息、温度信息、各种传感器信息等),然后探测仪把这些数据发送到地面控制中心;
2.收集各种遥感数据和天体信息以及飞船的空间几何数据信息,根据这些信息给科学仪器提供具体的遥感观测指令;
3.管理航天器的运转信息(电池电压、燃料供应、旋转、高度和定位)和遥测数据(图像数据收集和卫星转发);
4.实时处理所有的用户信息、地面状态信息和卫星数据值,以便对卫星进行控制以及回放和分析。。

二、什么是嵌入式数据库

根据维基百科的定义,嵌入式数据库是与那些需要存取数据的应用紧密集成的DBMS,应用的终端用户感觉不到它的存在,并且只需要很少的维护或者不需要维护。我们可以这样理解该定义:嵌入式数据库是嵌入式设备上的数据管理软件,提供给设备的生产商或应用的开发商,直接生成在嵌入式系统和应用之中,从而实现可定制的、更为客户化的数据管理。为了更好地说明嵌入式数据库的基本概念,我们将其与传统数据库进行比较。这种比较可以分别从应用层面和技术层面进行展开。从应用层面来看,嵌入式数据库的特点在于以下几个方面:

  1. •小内核:可嵌入应用程序和处理能力受限的硬件环境;
  2. •高性能:比企业级数据库速度快,实时性要求高;
  3. •低成本:可嵌入手机、车载导航等批量生产的系统里;
  4. •可裁减:能够根据实际需要增加或者减少必要的功能模块;
  5. •嵌入性:能够嵌入到软件系统或者硬件系统中,对于终端用户来说是透明的。

从技术层面而言,与传统数据库的区别体现在:

1.数据处理方式不同

传统企业级数据库,如:Oracle、DB2等,有庞大的数据库服务器,并且有独立运行的数据库引擎,数据处理方式是引擎响应式。而嵌入式数据库由于软硬件资源有限,不能安装服务器,只需要数据库产品的一些基本特性,并且由程序调用相应的API实现对数据的存取操作,是程序驱动方式。

2逻辑模式不同

都是三级模式,但传统数据库基本上采用关系模型,而嵌入式数据库除采用关系模型外,还会采用网状模型或两者的结合体,主要是为了避免关系模型中数据冗余和索引文件的空间开销。

3.优化重点不同

传统数据库由于面向通用的应用,优化重点是:高吞吐量、高效的索引机制、详尽的查询优化策略。而嵌入式数据库是面向特定应用的,并且资源有限,优化重点是:实时性、开销大小、系统性能、可靠性、可预知性和底层控制能力,即如何针对选用的实时OS和嵌入式硬件平台设计合理的数据模型和物理结构。

4.关键技术不同

嵌入式数据库的很多关键技术与传统数据库不同,如:备份恢复、复制与同步(通过上载、下载或混合方式,加上复杂的同步控制,来实现服务器和前端设备的数据同步)、事务和安全性(因为设备具有较高的移动性、便携性加上非固定的工作环境,存在诸多不安全的因素)等。嵌入式数据库的应用领域可分为水平应用与垂直应用两大类。其中,水平应用是指通用性较强的应用,包括:移动应用,公共数据库信息存取,监控系统,基于GPS和GLS的应用、模拟等等;而垂直应用指的是专用性较强的应用系统,包括:零售业、电信业、医疗业、银行业和运输业等等。

三、嵌入式数据库的组成和研究内容

嵌入式数据库的体系结构如图4所示。

从图中可以看出:嵌入式数据库是位于操作系统和应用程序之间的系统软件,主要是利用操作系统提供的文件系统来访问数据库中的数据。应用程序开发人员可利用特定接口(SQL/CLI、DDL解析工具、实用工具集等)与嵌入式数据库进行交互。嵌入式数据库的主要研究内容包括:数据库例程、内存和缓冲区管理、并发控制、系统故障恢复、访问接口控制、数据定义和数据存储等。

四、嵌入式数据库的发展

较早的关于嵌入式数据库的论文出现在1987年第13届VLDB会议上,由丹麦哥本哈根大学A.Christensen等人发表了题为《A Comparison of Self-Contained andEmbedded Database Languages》的论文。

早期的嵌入式数据库产品有1979年的Micro RelationSystem,后来版本几经更新,成为现在的Empress;1984年Raima推出db_Vista,后改名为RDM(Raima DatabaseManager);1998年ObjectStore推出PSE Pro 3.0,是第一个被Windows CE和PersonalJava操作系统同时认证的嵌入式数据库;1999年McObject推出的eXtremeDB是第一个为实时嵌入式系统设计的内存数据库;2000年出现的DB4o是第一个面向对象的嵌入式数据库。

五、嵌入式数据库的主要产品

嵌入式数据库产品分类

1.移动C/S数据库

企业级数据库的一个缩小版,在一些对实时性要求不高的设备内运行。它只和操作系统有关,一般只能支持一些常见的移动操作系统,如Linux和WindowsCE系列。

2.嵌入软件的数据库

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

3.嵌入设备的数据库

将数据库嵌入设备,作为设备数据处理的杨心组件。要求数据库有很高的实时性和稳定性,一般运行在实时操作系统中。

4内存数据库

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

国内外市场状况

Oracle的嵌入式数据库产品线比较完整,包括BerleleyDB、TimesTen、Lite三种。其中Berleley DB适合嵌入到设备中使用;TimesTen为内存型实时关系数据库;Lite提供完整的集成式环境,用于开发、实施和管理移动应用。

Sybase SQL Anywhere属于移动C/S数据库:提供企业级特性,同时实现高度的自管理。

IBM Solid属于内存数据库。

SQLite:开源数据库,具有系统开销小、检索效率高的特性,适用于手机、PDA、机顶盒等设备。

EMPRESS:产品线完整,包括Memory Embedded、Lite、Ultra Embedded、RDBMS Suite。具有实时、稳定、免维护、易裁剪等特性。

人大“小精灵”:支持移动平台。

六、我们的研究工作

目前我们的研究工作主要在以下几个领域展开:

1.嵌入式数据库体系结构

•数据库的核心直接和应用程序编译在一起

嵌入式数据库采用嵌入式库的模型,将数据库的核心直接和应用程序编译在一起,享有相同的地址空间,这样基本上消除了进程的上下文切换,降低了CPU的开销。不仅如此,由于没有了进程间的IPC通信或网络报文传递,系统的负担将进一步降低,宝贵的内存资源得以节约。此外,无须担心嵌入式库的方式会导致应用程序可执行二进制文件的膨胀,因为我们可以使用共享库的方式,在这种方式下,多个应用程序共享嵌入式库的代码。

•SQL/CLI的前端和DML查询处理的函数库模式

前端是指嵌入式数据库与应用程序的接口,以SQL/CLI函数集形式提供,该函数集可以扩展。应用程序访问数据库是通过该函数集实现的。前端以库的形式提交,应用程序开发人员需要将应用程序和它编译在一起。数据的查询和更新通过DML处理模块实现。同前端一样,它也以库的形式提交,应用程序开发人员需要将应用程序和它(以及前端)都编译在一起。DML处理模块主要包括两个子模块,即DML语法解析模块和数据存取模块。

•利用文件系统提供的系统调用来操作数据库

实现数据访问的功能,如:打开/关闭数据库的数据字典文件、数据文件、索引文件,以及读写这些文件中的数据。

2内存管理

为提高闪存数据访问的效率,数据库内部建立了缓冲区机制。为最小化内存资源消耗,并使它可控,我们使用了内存池技术,用自己的动态内存管理技术为各个模块提供服务。它是数据库内部的公共部分。

•数据库内部建立缓冲区机制

缓冲区机制是指为减少Flash或磁盘I/O而在主存和二级存储器之间架设了一块内存空间,其职责是在查询处理过程中让数据存取模块得到所需的元组,数据存取模块通过某种访问方法(如顺序扫描或索引扫描)从这些缓冲区读写元组,写入元组也是写到缓冲区上,而不需要直接访问Flash文件或磁盘系统。

•动态内存管理技术

系统使用了自己的动态内存管理方法取代系统的malloc和free,也就是预分配+内存池技术。其主要优点有:1)系统内部的动态数据结构其长度基本上都落在预定义类别的块上,而块又按等长的片断组织,内存管理的算法大大简化了,提高了分配和回收的效率;2)系统的动态内存分配和释放只在预留的存储空间上,基本不会干扰系统堆,使得在嵌入式系统中常发生的堆破碎可能性几乎降为零,大大增强了系统的可靠性;3)系统的内存占用处于我们可以控制的范围,用户根据应用的规模在系统初始时可进行配置;4)一定程度上节约了内存资源。缺省系统堆的内存管理为了能分配各种长度,会在所分配的动态内存前面存储一些控制信息,这些控制信息至少占8字节。采用预分配+内存池技术后,不再需要这些控制信息。

3自主知识产权的嵌入式数据库研究开发

基于国产的嵌入式操作系统,开发具有完全自主知识产权的嵌入式数据库,并进行应用示范。满足手持式计算和移动计算、智能设备、嵌入式系统和智能卡等新兴领域对数据管理的要求。能够方便、可靠地集成到现有的企业级应用中。在充分考虑系统性能(如:内存资源占用、CPU开销)的基础上,使得嵌入式数据库系统具有专用性、微型化、健壮性、可伸缩性、零管理、互操作性和可移植性等特点。

4.合作研究

为了更好地进行嵌入式数据库的研发和推广工作,我们正在与华东计算技术研究所、加拿大Empress公司和上海互惠公司开展合作。与华东计算技术研究所合作方面,我们计划在ReWorks操作系统上开发实时嵌入式数据库ReData,计划用三年时间完成系统开发。

结语

随着嵌入式系统的广泛应用及嵌入式操作系统的不断普及,嵌入式环境中处理的数据量不断增加,对数据的处理效率、并发处理能力等方面的要求越来越高,需要利用数据库技术来管理和处理嵌入式环境中的各种数据。据IDC等国内外权威机构预测,将会出现数以亿计的嵌入式设备存在数据管理的需要,从而极大地推动嵌入式数据库的技术发展和市场应用。(感谢上海互惠信息技术有限公司的欧书云先生提供了部分资料)

This post has already been read 1020 times!

Related posts

RSS 2.0 | leave a response | trackback

发表评论