第9 章嵌入式数据库程序设计
随着数据存储的快速发展,数据库应用的范围更加深入和具体。那些仅适用于PC机、体积庞大、延时较长的数据库技术已不能满足针对性较强的嵌入式系统开发的需求。而且随着嵌入式系统的内存和各种永久存储介质容量都在不断增加,嵌入式系统内数据处理量会不断增加,那么大量的数据如何处理问题变得非常现实。一种全新的数据库产品——嵌入式数据库系统应运而生。
9.1 嵌入式数据库概述
9.1.1 嵌入式数据库的内涵
数据库的目标是实现对数据的存储、检索等功能。传统的数据库产品除提供了基本的查询、添加、删除等功能外,也提供了很多高级特性,如触发器、存储过程、数据备份恢复等。但实际上用到这些高级功能的时候并不多,应用中频繁用到的还是数据库的基本功能。于是,在一些特殊的应用场合,传统的数据库就显得过于臃肿了。在这种情况下,嵌入式数据库开始崭露头角。嵌入式数据库是一种具备了基本数据库特性的数据文件,它与传统数据库的区别是:嵌入式数据库采用程序方式直接驱动,而传统数据库则采用引擎响应方式驱动。嵌入式数据库的体积通常都很小,这使得嵌入式数据库常常应用在移动设备上。由于性能卓越,所以在高性能的应用上也经常见到嵌入式数据库的身影。
嵌入式数据库的名称来自其独特的运行模式。这种数据库嵌入到了应用程序进程中,消除了与客户机服务器配置相关的开销。嵌入式数据库实际上是轻量级的,在运行时,它们需要较少的内存。它们是使用精简代码编写的,对于嵌入式设备,其速度更快,效果更理想。嵌入式运行模式允许嵌入式数据库通过 SQL 来轻松管理应用程序数据,而不依靠原始的文本文件。嵌入式数据库还提供零配置运行模式,这样可以启用其中一个并运行一个快照。
在嵌入式系统中,对数据库的操作具有定时限制的特性,因而把应用于嵌入式系统的数据库系统称为嵌入式数据库系统或嵌入式实时数据库系统(ERTDBS)。
9.1.2 嵌入式数据库的特征
嵌入式数据库和我们现在常见的企业级数据库有很大的区别。虽然,从名字上看,二者有着太多的相似性,但却有着本质的根本性的区别。由于嵌入式实时数据库系统在运行环境和运行方式上与常见的企业级数据库管理系统有很大差别,因此,传统的企业数据库如Oracle、Sybase等在实时嵌入式环境下很难发挥作用,尤其在一些实时性要求很高的控制系统中,传统数据库更显得无能为力。嵌入式数据库一般具有以下特征:
1. 嵌入性
嵌入式数据库不仅可以嵌入到其他的软件当中,也可以嵌入到硬件设备当中。由于嵌入式系统自身的特点,对数据的存储和程序的运行都有较强的空间限制,所以嵌入式数据库首先应该保证适当的体积。并且由于API 是根据用户数据特征产生的,调用这些API就可以使用嵌入式数据库管理实时数据,因此,嵌入式数据库可以天然地与用户程序集成在一起。
2.实时性
嵌入式系统通常是紧凑系统,即小系统。对于大量实时数据需要管理,实时性和嵌入性是分不开的。只有具有了嵌入性的数据库才能第一时间得到系统的资源,对系统的请求在第一时间内做出响应。但是,并不是具有嵌入性就一定具有实时性。要想嵌入式数据库具有很好的实时性,必须做很多额外的工作。
如McObject公司的eXtremeDB 首先是一个实时数据库,而后才是嵌入式数据库。由于实时数据管理对时间空间效率的要求非常高,完成同样工作的资源要求更少。因此,在资源紧凑型系统中, 其优点就显示出来了。所以, eXtremeDB 开销较小并与应用程序天然集成实现嵌入,这并不意味着 eXtremeDB 只能管理小系统中的数据。数据库是嵌入式的,但并不要求应用系统是嵌入式的。应用系统可以是嵌入式系统如手机、家庭网关、机顶盒、数字电视等,也可以是桌面系统或服务器系统如核心路由器、呼叫中心、金融交易系统等。
3. 可靠性
嵌入式实时数据库系统通常作为嵌入式系统的应用软件出现,系统常常在无人干预的情况下运行,需要具备较高的可靠性。同时要求数据库操作具备可预知性,而且系统的大小和性能也都必须是可预知的,这样才能保证系统的性能。
4. 可定制性
从目前嵌入式应用的发展趋势来看,嵌入式数据库的实现必须充分体现系统的可定制性,即系统选择的技术路线要面向具体的行业应用。
5. 跨平台
嵌入式系统硬件和软件平台千差万别、种类繁多,因此嵌入式数据库应有一定的可移植性,以适用于不同的软硬件平台。
9.1.3 嵌入式数据库的应用领域及未来趋势
嵌入式数据库在国外30多年的历史中以其优越的性能,应用于各行各业的实时数据管理中,在全球各个关键任务平台中担任重要角。
1.消费电子及网络设备
目前在中国消费类电子比较火热,它包含的范围也非常广。如:个人消费相关的PND(便携式导航设备)、移动电话、PDA、智能手机等;信息家电和智能办公相关的机顶盒、家用多媒体盒、互联网电视接收装置。用户可以通过智能手机、PDA等设备直接访问企业后台的相关应用数据库,实时处理关键业务,以提升企业一线业务人员的工作效率。
2.军工和航空航天
嵌入式数据库以其良好的可靠性和卓越的实时性被广泛地应用于军事、航空航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。
3.工业控制
工业控制的基本方式是一个反馈的闭环或半闭环的控制方式。随着工业控制技术的发展,简单的数据采集方式和反馈方式基本上很难满足要求。采用嵌入式数据库即能够进行高速的数据采集,也能够快速地反馈。因此,在一些核电站监控装置、化学工厂系统监控装置、电话制造系统监控装置、汽车引擎监控装置及工业级机器人中有广泛应用。
此外,还有其它一些专门的移动应用,如铁路交通控制系统、医疗电子等方面。嵌入式数据库将随着
各种移动设备、智能计算设备、嵌入式设备的发展而迅速发展。
随着嵌入式系统的扩大,嵌入式产品的开发不再像过去那样几个人就可以完成整个系统的开发,需要更多的人组成团队。嵌入式软件的需求分析和品质管理也变得越来越复杂,开
发周期也逐渐拉长。为了解决这些问题,引进第三方成熟的数据库技术或解决方案变得非常现实。专业的嵌入式数据库厂商也逐渐进入了人们的视野。
对于未来嵌入式数据库的发展趋势,美国McObject公司亚太区副总裁杜虎生先生认为,“运用成熟的嵌入式数据库技术可以降低开发成本、缩短开发周期,使开发者能够将更多的精力放在业务逻辑的处理上,而不用花大把的金钱和精力来处理数据,对整个社会的资源也是一种节约。”杜虎生先生还表示,嵌入式数据库与各种硬件设备的广泛结合,不仅能够将企业现有的信息以各种方式联合起来。更重要的是,企业因此可以将更多的设备集成到企业IT系统中来加以利用和控制,这将是下一代嵌入式数据库和下一代嵌入式系统所能够带来的利益。目前国内许多嵌入式软件技术人员经过数据处理的困惑,经过开源的摸索和自主开发的尝试,许多开发者正逐渐意识到商用数据库的必要性。
嵌入式数据库将会使人们希望随时随地存取任意数据信息的愿望成为现实,嵌入式数据库将无处不在。
9.2 常用的嵌入式数据库
9.2.1 Berkeley DB
Berkeley DB是由美国Sleepycat Software公司开发的一套开放源码的嵌入式数据库的程序库(database library),它为应用程序提供可伸缩的、高性能的、有事务保护功能的数据管理服务。Berkeley DB为数据的存取和管理提供了一组简洁的函数调用API接口。它是一个经典的C-library模式的toolkit,为程序员提供广泛丰富的函数集,是为应用程序开发者提供工业级强度的数据库服务而设计的。其主要特点如下:
1. 嵌入式:它直接链接到应用程序中,与应用程序运行于同样的地址空间中,因此,无论是在网络上不同计算机之间还是在同一台计算机的不同进程之间,数据库操作并不要求进程间通讯。
Berkeley DB为多种编程语言提供了API接口,其中包括C、C++、Java、Perl、Tcl、P ython和PHP,所有的数据库操作都在程序库内部发生。多个进程,或者同一进程的多个线程可同时使用数据库,有如各自单独使用,底层的服务如加锁、事务日志、共享缓冲区管理、内存管理等等都由程序库透明地执行。
2. 轻便灵活:它可以运行于几乎所有的UNIX和Linux系统及其变种系统、Windows操作系统以及多种嵌入式实时操作系统之下。它在32位和64位系统上均可运行,已经被好多高端的因特网服务器、台式机、掌上电脑、机顶盒、网络交换机以及其他一些应用领域所采用。一旦Berkeley DB被链接到应用程
序中,终端用户一般根本感觉不到有一个数据库系统存在。
3. 可伸缩:这一点表现在很多方面。Database library本身是很精简的(少于300KB 的文本空间),但它能够管理规模高达256TB的数据库。它支持高并发度,成千上万个用户可同时操纵同一个数据库。Berkeley DB能以足够小的空间占用量运行于有严格约束的嵌入式系统,也可以在高端服务器上耗用若干GB的内存和若干TB的磁盘空间。
Berkeley DB在嵌入式应用中比关系数据库和面向对象数据库要好,有以下两点原因: 1. 因为数据库程序库同应用程序在相同的地址空间中运行,所以数据库操作不需要进程间的通讯。在一台机器的不同进程间或在网络中不同机器间进行进程通讯所花费的开销,要远远大于函数调用的开销;
2. 因为Berkeley DB对所有操作都使用一组API接口,因此不需要对某种查询语言进行解析,也不用生成执行计划,大大提高了运行效。
9.2.2 SQLite
sql server手机版下载SQLite属于轻量级别数据库,它的源代码是C,其源代码完全开放。SQLite第一个Alpha 版本诞生于2000年5月。目前的最新版本是SQLite3.5。SQLite有以下特性:
1. 支持ACID事务。ACID,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity)、
一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
2. 零配置而无需安装和管理配置;
3. 储存在单一磁盘文件中的一个完整的数据库;
4. 数据库文件可以在不同字节顺序的机器间自由共享;
5. 支持数据库大小至2TB;
6. 足够小,全部源码大致3万行c代码,250KB;
7. 比目前流行的大多数数据库对数据的操作要快;
8. 独立,没有额外依赖;
9. SQL语言很大程度上实现了ANSI SQL92标准。
正因为Sqlite3数据库小巧、速度快、使用方便,本教程主要讲授该数据库的移植和使用。
SQLite的学习资源:
1.Sqlite的中文网站:www.sqlite/
主要有编程介绍、开源论坛
2.sqlite:/
提供源码下载、Getting Started、C/C++参考、各种其他文档、开发者论坛等。
9.2.3 eXtremeDB
eXtremeDB 是美国McObject 公司的产品。该公司位于华盛顿州,在编译器、实时编程、数据管理及内核级驱动程序方面有30 多年的从业经验。McObject 产品包括eXtremeDB 内存式数据库、SQL 功能支持eXtremeSQL 、交易日志支持eXtremeLog 、高可用性支持eXtremeHA 及eXtremeWS 嵌入式Web Server 等。其中eXtremeDB 是其基本产品;eXtremeSQL 提供SQL 支持功能;eXtremeLog 提供交易日志支持功能;eXtremeHA 为eXtremeDB 提供高可用性功能;eXtremeWS 与eXtremeDB 无缝集成,使得用户可以通过Web 方式访问、使用数据库。
eXtremeDB的主要特点:
1. 内存数据库,eXtremeDB将数据以程序直接使用的格式保存在主内存之中,不仅剔除了文件I/O的开
销,也剔除了文件系统数据库所需的缓冲和Cache机制。其结果是每个交易一微秒甚至更少的极限速度,相比于类磁盘数据库而言,速度成百上千倍地提高。作为内存数据库,eXtremeDB不仅性能高,而且数据存储的效率也非常高。为了提高性能并方便程序使用,数据在eXtremeDB中不做任何压缩,100M的空间可以保存高达70M以上的有效数据,这是其他数据库所不可想象的。
2. 混合数据库,eXtremeDB不仅可以建立完全运行在主内存的内存数据库,更可以建立磁盘/内存混合介质的数据库。在eXtremeDB,我们把这种建立在磁盘、内存或磁盘+内存的运
行模式称为eXtremeDB Fusion融合数据库。eXtremeDB Fusion兼顾数据管理的实时性与安全性要求,是实时数据管理的台阶性进步。
3. 嵌入式数据库,eXtremeDB内核以链接库的形式包含在应用程序之中,其开销只有50 KB~130KB。无论在嵌入式系统还是在实时系统之中,eXtremeDB都天然地嵌入在应用程序之中,在最终用户毫不知情的情况下工作。eXtremeDB的这种天然嵌入性对实时数据管理至关重要:各个进程都直接访问eXtremeDB数据库,避免了进程间通信,从而剔除了进程间通信的开销和不确定性。同时, eXtremeDB独特的数据格式方便程序直接使用的,剔除了数据复制及数据翻译的开销,缩短了应用程序的代码执行路径。
4. 由应用定制的API,应用程序对eXtremeDB数据库的操作接口是根据应用数据库设计而自动产生,
不仅提升了性能,也剔除了通用接口所必不可少的动态内存分配,从而提高了应用系统的可靠性。定制过程简单方便,由高级语言定制eXtremeDB数据库中的表格、字段、数据类型、事件触发、访问方法等应用特征,通过eXtremeDB预编译器自动产生访问该数据库的C/C++ API接口。
5. 可预测的数据管理
eXtremeDB独特的体系结构,保证了数据管理的可预测性。eXtremeDB不仅更快、更小,而且更确定。
9.2.4 Firebird 嵌入式数据库
从Interbase开源衍生出的Firebird,充满了勃勃生机。虽然它的体积比前辈Interbase缩小了几十倍,但功能并无减弱。为了体现Firebird短小精悍的特,开发小组在增加了超级服务器版本之后,又增加了嵌入版本,最新版本为2.0。
Firebird的嵌入版有如下特:
1、数据库文件与Firebird网络版本完全兼容,差别仅在于连接方式不同,可以实现零成本迁移。
2、数据库文件仅受操作系统的限制,且支持将一个数据库分割成不同文件,突破了操作系统最大文件的限制,提高了IO吞吐量。
3、完全支持SQL92标准,支持大部分SQL-99标准功能。
4、丰富的开发工具支持,绝大部分基于Interbase的组件,可以直接使用于Firebird。
5、支持事务、存储过程、触发器等关系数据库的所有特性。
6、可自己编写扩展函数(UDF)。
9.2.5 mSQL嵌入式数据库
mSQL(mini SQL)是一个单用户数据库管理系统,个人使用免费,商业使用收费。由于它的短小精悍,使其开发的应用系统特别受到互联网用户青睐。mSQL(mini SQL)是一种小型的关系数据库,性能不是太好,对SQL语言的支持也不够完全,但在一些网络数据库应用中是足够了。由于mSQL较简单,在运行简单的SQL语句时速度比MySQL略快,而MySQL在线程和索引上下了功夫,运行复杂的SQL语句时比mSQL,PostgreSQL等都要快一些。
mSQL的技术特点:安全性方面,mSQL通过ACL文件设定各主机上各用户的访问权限,缺省是 全部可读/写。mSQL缺乏 ANSI SQL 的大多数特征,它仅仅实现了一个最最少的API,没有事务和参考完整性。mSQL与Lite(一种类似C的脚本语言,与分发一起发行)紧密结合,可以得到一个称为 W3-mSQL的一个网站集成包,它是JDBC、ODBC、Perl和PHP API。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论