嵌入式内存数据库引擎的研究与设计
- 格式:doc
- 大小:35.50 KB
- 文档页数:4
基于嵌入式数据库的智能手机数据管理系统设计白凯【摘要】本文主要针对目前移动型手持设备的功能越来越强,为了达到高效访问的目的,采用了嵌入式数据库在嵌入式设备的数据管理上,设计了一个对硬件要求低且效率高的数据管理系统,该系统主要应用于移动型手持设备的数据管理上,通过测试后证明该系统可靠度高,功耗低,访问速度快.【期刊名称】《仪器仪表用户》【年(卷),期】2012(019)004【总页数】4页(P34-37)【关键词】嵌入式;智能手机;EDBMS;SQLite【作者】白凯【作者单位】长江大学计算机科学学院,荆州434023【正文语种】中文【中图分类】TP390 引言近年来智能手机日益普及,这种高性能手机逐渐成为人们在生活工作的重要的移动信息终端,人们对手机的处理能力的要求也是越来越高,能够高速的上网和数据传送已经成为基本要求。
随着先进的嵌入式芯片和大容量的存储芯片的出现,提供了很强的硬件基础,它们作为智能手机的核心器件,使得手机数据存储和信息处理能力变得非常强劲。
与之相应发展的是手机中的数据类型越来越复杂,数据量越来越大,而智能手机在目前情况下还大不可能引入PC机中数据库管理系统。
目前手机主要还是从存储介质(如SIM卡,MiniSD,MMC这样的手机存储芯片)上直接读取短信数据,通讯录数据及通话记录等信息,而这种方式比较单一,无扩展能力,用户无法根据手机号码、通话时间,短信内容等自定义需求来查询这些信息,所以这就需要一个功能强大的,适合嵌入式领域特点的嵌入式数据库系统来统一管理各种数据信息。
1 开发平台特点及选型嵌入式数据库(EDBMS)定义为驻留在嵌入式系统中的数据库管理系统。
嵌入式数据库在模型上可以是层次、网状或者关系数据库,还可以是面向对象数据库,在这些方面与传统数据库系统相似;在功能上,它能够实现了数据库的组织、建立、存储、更新和数据访问等功能[1]。
以上都是传统数据库所具有的功能,但与传统数据库系统相比较,EDBMS所具有的特点是:1)占用存储空间少,占有硬件资源小;2)具有良好的可靠性、可管理性和安全性;3)系统的可移植性强[2]。
嵌入式系统应用技术的研究与开发嵌入式系统是一种电子计算机系统,它是特别设计用于执行特定功能的计算机系统。
这种系统常用于控制和监视系统,如智能手机、数字相机、车载音频系统等。
为了实现嵌入式系统的工作,需要使用一系列技术和工具来进行开发和应用。
本文将探讨嵌入式系统应用技术的研究与开发,包括嵌入式系统基本原理和常用技术,以及嵌入式系统应用开发的方法和工具。
一、嵌入式系统基本原理嵌入式系统本质上是一个计算机系统,它具有计算、存储、控制和通信等功能。
由于嵌入式系统的特殊应用环境,它的体积、功耗、成本和性能等方面都有较高的要求。
嵌入式系统通常由下列组成部分组成:1. 主处理器/控制器主处理器/控制器是嵌入式系统的核心,负责计算、控制和管理系统的硬件和软件资源。
主处理器/控制器的类型和性能直接决定了系统的功能和性能。
常见的主处理器/控制器有ARM Cortex系列、Intel x86系列、MIPS系列等。
2. 存储器存储器用于存储系统程序和数据。
由于嵌入式系统的体积和功耗都有限制,因此存储器通常采用闪存、EEPROM、SRAM等低功耗、小体积的型号。
3. 输入/输出设备输入/输出设备用于与外界进行数据交换,如键盘、鼠标、显示屏、声卡、网卡等。
嵌入式系统通常使用专用的输入/输出设备,以满足应用需求和耗能要求。
4. 网络设备网络设备负责系统与外部网络通信,如以太网卡、无线网卡、蓝牙模块等。
网络设备的选择和配置决定了系统的通信速度和稳定性。
二、嵌入式系统常用技术1. 硬件设计嵌入式系统的硬件设计主要涉及主处理器/控制器的选择、连通性设计、电源管理等方面。
硬件设计的质量和性能直接决定了嵌入式系统的稳定性和能耗水平。
2. 软件开发嵌入式系统的软件开发主要涉及核心程序设计、驱动程序编写、通信协议实现等方面。
软件开发的质量和可靠性直接决定了嵌入式系统功能的实现和应用效果的稳定性。
3. 中间件中间件是嵌入式系统开发中常用的技术。
嵌入式Linux组态软件实时数据库的设计1 引言实时数据库(real-time database, RTDB)作为组态软件设计与实现的核心内容解决了其所应对的现代工业生产现场环境中生产数据与控制数据类型复杂多样,数据处理与事件调度时间约束严格等难题[1]。
目前,国内外已经有多种基于Windows 操作系统平台的实时数据库产品在自动化过程控制领域中得到应用[2],随着Linux 操作系统的出现,这种开发平台单一的局面有望得到改观。
Linux 操作系统具有很多优秀的特性适于组态软件实时数据库系统的开发,特别是其完善的进程线程管理,进程间通信机制与并发控制,可靠的内存管理系统[3],更是为时间约束严格的实时数据库的开发提供了有力的支持。
因此,本文结合Linux 系统实时多任务方面的特性,采取能够满足数据实时响应要求的多级存储结构,研究并提出了一种基于嵌入式Linux 系统平台并可应用于监控组态软件的实时数据库实现方案。
2 实时数据库存储结构的分析与设计实时数据库是监控组态软件数据处理,事务调度,各应用程序间通信的中心。
图 1 即示出了组态软件实时数据库的数据处理流程。
2.1 实时数据库的数据流分析组态软件运行环境分为实时数据库管理系统(RTDBMS)和实时监控界面程序(real-time supervisory control interface, RTSCI)。
实时数据库管理系统需要把工业现场中复杂多样的过程和控制数据抽象为合理高效的数据结构,实时监控界面程序则利用实时过程数据为现场监控人员提供一个反映实际生产过程的可视化图形界面,在实际运行中二者构成客户端/服务器计算模式。
RTDBMS 作为数据服务的提供者,需要满足RTSCI 种类多样的数据需求。
为了形象的描绘工业现场的实际生产过程,RTSCI 由多种图形对象构成,根据不同的数据类型需求可分为实时显示,实时趋势,历史趋势,实时报警等。
而应用于现代工业生产现场环境的实时数据库还需要满足严格的数据存取与事件响应的定时限制。
1、前言有一些日子没有仔细关注SQLite了,今天打开其主页,发现其最新的版本已经是3.6.22了,更让我惊喜的是它的用户越来越多,而且邮件列表的关注者也越来越多,突然觉得自己已经太old了。
惊喜的同时,不得不聊上几句了。
首先,来看看都有哪些人在使用SQLite,主页上列举一长串NB的用户,其中不乏像Adobe,Apple,F irefox,甚至连google,Microsoft,SUN这样的用户。
Firefox:这是我的机器上V3.5.7安装目录下的文件:可以发现用的SQLite 3.6.16.1。
据说,Google在它的Desktop for Mac,Google Gears,以及Android,甚至Chrome中都用到S QLite,而且,Google的工程师对SQLite的全文检索功能作了很大的贡献(contribution)。
还有Apple,Micorsoft,SUN等等,这里就不列举了。
详细见/famous.html。
有这些公司的参与,对SQLite的发展应该有很大的帮助,尤其是像Google这样的用户。
2、实现与应用下面从实现及应用的角度来谈谈SQLite,先看看SQLite的特点(功能)吧。
特点简单(simple):SQLite是一个非常轻量级自包含(lightweight and self-contained)的DBMS:一个头文件,一个动态库文件,你就拥有了关系数据库的所有功能了。
简单,是SQLite最明显的哲学。
它提供的API少而简单。
只需要一个DLL文件,你的程序马上就拥有了一个功能强大的数据库引擎,这是一件很美妙的事。
小巧(small):我用VS 2005在Windows下编译的3.6.11,Release版为368K,用时不到20秒——而编译MySQL时,要花上几分钟。
而当我插入10000条int数据时,内存开销660K,磁盘开销92 K。
事务(transaction):事务是现代商业数据处理系统最基本的要求,而Access,不论是在可执行文件大小(看了一下Access2003的可执行文件大小为6.32M,两者不是一个量级),还是事务特性,都是不能和SQLite 相比的。
EDBMS的研究与开发摘要:该文主要针对嵌入式数据库系统进行了研究,对基于liod 开发板的linux系统和windows ce系统内核进行了裁减和移植,并且设计实现了相应数据库管理系统。
关键词:edbms;嵌入式;数据库中图分类号:tp312 文献标识码:a 文章编号:1009-3044(2013)08-1749-03随着微电子和存储技术的迅速发展,嵌入式系统需要处理的数据不断增多,嵌入式数据库管理系统(简称edbms)越来越展现出其不可替代的优越性。
嵌入式数据库产品层出不穷,嵌入式数据库管理系统在消费类电子产品等各领域已得到广泛应用。
1 嵌入式数据库简介嵌入式数据库系统是一种与操作系统以及应用软件集成在一起的数据库管理系统,用来支持和嵌入式系统的特定用途相关的应用。
edbms从本质上是由通用数据库管理系统发展而来的,但它们在运行环境和应用领域等各个方面还有所不同,edbms具有数据同步、高安全性和可靠性、零管理以及硬件速度慢等特点。
嵌入式数据库管理系统一般需要嵌入式操作系统的支持,例如嵌入式linux 系统、windows ce系统等。
1)linux系统下数据库linux系统对数据库提供了全面支持,几乎所有大型数据库系统都可以基于linux运行。
目前流行的大型数据库系统有oracle、sybase、informix等,中小型数据库系统有mysql、firebird、berkeley db等。
2)windows ce系统下数据库伴随掌上电脑的流行,其使用的windows ce操作系统也因此倍受瞩目。
windows ce包含一个适合动静态内存存储的文件系统和一个win32 api子集以及新增加的一些api。
其中,数据库定位于对象存储。
对象存储是用于存储windows ce数据库、注册表及永久文件的。
windows ce提供的pocket access数据库,使用户可以自己编程实现掌上电脑基本的数据库处理。
第9 章嵌入式数据库程序设计随着数据存储的快速发展,数据库应用的范围更加深入和具体。
那些仅适用于PC机、体积庞大、延时较长的数据库技术已不能满足针对性较强的嵌入式系统开发的需求。
而且随着嵌入式系统的内存和各种永久存储介质容量都在不断增加,嵌入式系统内数据处理量会不断增加,那么大量的数据如何处理问题变得非常现实。
一种全新的数据库产品——嵌入式数据库系统应运而生。
9.1 嵌入式数据库概述9.1.1 嵌入式数据库的内涵数据库的目标是实现对数据的存储、检索等功能。
传统的数据库产品除提供了基本的查询、添加、删除等功能外,也提供了很多高级特性,如触发器、存储过程、数据备份恢复等。
但实际上用到这些高级功能的时候并不多,应用中频繁用到的还是数据库的基本功能。
于是,在一些特殊的应用场合,传统的数据库就显得过于臃肿了。
在这种情况下,嵌入式数据库开始崭露头角。
嵌入式数据库是一种具备了基本数据库特性的数据文件,它与传统数据库的区别是:嵌入式数据库采用程序方式直接驱动,而传统数据库则采用引擎响应方式驱动。
嵌入式数据库的体积通常都很小,这使得嵌入式数据库常常应用在移动设备上。
由于性能卓越,所以在高性能的应用上也经常见到嵌入式数据库的身影。
嵌入式数据库的名称来自其独特的运行模式。
这种数据库嵌入到了应用程序进程中,消除了与客户机服务器配置相关的开销。
嵌入式数据库实际上是轻量级的,在运行时,它们需要较少的内存。
它们是使用精简代码编写的,对于嵌入式设备,其速度更快,效果更理想。
嵌入式运行模式允许嵌入式数据库通过 SQL 来轻松管理应用程序数据,而不依靠原始的文本文件。
嵌入式数据库还提供零配置运行模式,这样可以启用其中一个并运行一个快照。
在嵌入式系统中,对数据库的操作具有定时限制的特性,因而把应用于嵌入式系统的数据库系统称为嵌入式数据库系统或嵌入式实时数据库系统(ERTDBS)。
9.1.2 嵌入式数据库的特征嵌入式数据库和我们现在常见的企业级数据库有很大的区别。
嵌入式内存数据库引擎的研究与设计1 嵌入式内存数据库技术发展的现状数据库理论与技术的发展极其迅速,其应用日益广泛,在当今的信息社会中,它几乎无所不在。
以关系型为代表的三大经典(层次、网状、关系)型数据库在传统的(商务和管理的事务型)应用领域获得了极大成功,然而它们在现代的(非传统)工程和时间关键型应用面前却显得软弱无力,面临着新的严峻的挑战,由此而导致了嵌入式实时数据库的产生和发展。
在实时应用中,事务在运行前的操作逻辑(操作类型、顺序等)、数据集及其结构、行为以及时间的相关性等都是可预分析的。
然而,对磁盘数据库而言,数据的I/O 是造成事务执行时间不确定、预报不准确的关键因素。
为此,要求以大内存作为实时数据库的主要存储介质,使一个事务在活动期间没有I/O,以达到较准确的预报,从而满足实时事务的定时限制。
但这要解决两个问题,就是适当的数据安置和适时的内外存交换。
随着内存技术的高速发展,内存数据库技术日益成熟,在非实时系统中也得到了广泛的应用。
内存数据库(MMDB)把数据库的主拷贝(即“工作版本”)常驻在内存,使系统性能得到了极大的提高。
但是,由于所有操作直接作用于内存中的数据库主拷贝上,数据库极易受到操作系统和应用软件错误造成的破坏,而且,数据库恢复所包含的I/O 操作(如做日志、备份等)在事务运行不需要I/O 操作的内存数据库系统中也显得极为突出。
因此,内存数据库的恢复机制对系统性能有重要的影响作用,内存数据库的恢复较之传统的磁盘数据库的恢复要复杂得多,也关键得多。
数据恢复是内存数据库可靠、实用的关键,恢复技术的研究已成为MMDB 研究领域最热门的课题。
2 内存数据库的定义内存数据库的定义不应涉及内存的大小、存取数据所需I/O 的多少、数据何时进入及怎样才能留驻内存等这些具体的实现技术,而只包含数据库常驻内存(而不是磁盘)、事务(不是系统)的数据存取只涉及内存的意思。
其本质特征是其“主拷贝”或“工作版本”常驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。
显然,它要求较大的内存量,但并不要求任何时刻整个数据库都能存放在内存,即内存数据库系统还是要处理I/O。
传统的磁盘数据库即使缓冲区足够大,以致可以容纳所有数据也不能算是一个MMDB。
因为它是针对磁盘特性、在数据库常驻磁盘的假定下设计的。
例如,索引结构还是针对磁盘存取的,数据的存取仍必须经过缓冲区管理等。
内存数据库的组织与管理要求新的适于内存特点的数据结构和算法,对于数据的组织与安置、数据库存取、内外存数据交换、查询处理及优化、并发控制及数据库恢复都需要研究新的策略与机制。
内存数据库是一个较新的研究领域,结合各方面参考,现给出如下定义:定义:设有数据库DB,DBM(t)是t 时刻DB 在内存中的数据集,DBM(t)真包含于DB; T S 为所有事务的集合,A T(t)是t 时刻的活动事务集,A T(t)真包含于T S;D t(T)为T 在t 时刻的操作数据集,D t(T)真包含于DB;若在任一时刻t,均有:对任一事务有T∈A T(t),D t(T)真包含于DBM(t)成立,则称DB 为一个内存数据库,简记为MMDB 。
按此定义,MMDB 的“工作版本”(当然也可以是整个数据库)常驻内存,任何一个事务在执行过程中没有内外存间的数据I/O。
显然,它需要一定的内存容量,但并不要求整个数据库都必须常驻在内存。
3 内存数据库的特点3.1 内存数据库数据存储的组织和管理一个MMDB的逻辑整体主要由两个部分构成,即内存版本与外存版本。
主存储器是易失内存,它存放MMDB的“工作版本”。
它在逻辑上被划分为若干分区,一个分区用来存放一个关系的数据。
每个分区又物理地由若干相互链接的块组成。
一块是一个固定长度的连续区域,它是内外存I/O的单位,也是内存分配、回收以及对MMDB进行恢复的单位。
索引与数据记录分离存放。
NV-RAM(NO V ola tile RAM)兼有内存读写速度快和在后备电池维护的情况下非易失的特点,但价格昂贵,不便插拔,广泛用于嵌入式系统,并可与Flash-RAM配合使用,充当Flash-RAM 写缓冲区。
NV-RAM是主存储器的拓延,目前可用UPS、固态磁盘或磁盘Cache等实现。
主存数据与NV-RAM数据一起统称为MMDB的“内存版本”。
磁盘存储器用来存放未在内存的那一部分数据库数据,同时也用作数据库恢复的备份,我们称之为“外存版本”。
为便于实现内外存间的数据交换,可将磁盘数据在逻辑上划分为与内存块同样长度的定长块,建立相同类型的索引。
3.2 事务处理当内存数据库用于非实时系统时,除了日志和系统恢复的具体方式跟传统数据库差异比较大以外,事务处理过程与传统数据库的事务处理相似;然而,当内存数据库用于实时系统时,既实时内存数据库中,事务处理由于受到了时间上的限制,传统数据库的事务处理已经不再适用。
传统的“ACID”的事务概念及模型对实时事务不适合。
实时事务表现出了许多不同的特征,如实时性和相关性。
虽然实时事务的正确性与传统事务一样,也包括数据库状态正确性和事务执行正确性两个方面,但其含义与内容有很大的不同。
在实时事务中,数据库状态正确性包含内部一致性和时间一致性,事务执行正确性则包含其结果正确性、行为正确性、结构正确性和时间正确性等。
事务调度也要采取相关的实时调度算法。
本文中讨论的内存数据库引擎针对非实时系统。
3. 3 系统恢复数据库的备份是数据库的副本以及一些控制信息,在出现故障的情况下,可以随时用它进行恢复。
数据库备份最小化了数据丢失,能够让您使用恢复过程,从备份副本中重新构造失败的数据库。
有多种类型的失败导致需要恢复数据库。
其中包括语句失败、用户错误、进程失败、数据库实例失败、媒介失败等。
但不是所有类型的失败都需要进行人工交互。
但是,在内存数据库系统中,由于所有操作都直接作用于内存中的数据库主拷贝上,数据库极易受到操作系统和应用软件错误造成的破坏,因此MMDB的恢复技术如备份、检验点(Checkpoint)和重启动(restart)等都较常规的磁盘数据库(DRDB)复杂。
人们从体系结构、事务提交、日志系统到备份、检验点算法等各个方面进行了大量的研究和探索。
日志管理是内存数据库恢复机制中至关重要的一环。
由于内存有易失性,日志最好保存于另一稳妥的介质上(如磁盘、非易失内存等),而对日志的I/O操作又将在某种程度上影响MMDB的性能,可能成为瓶颈影响系统的事务吞吐量。
为此,人们研究了各种各样的解决办法,比如构造非易失内存用于保存部分日志;采用“成组提交”的技术,使用影子内存技术等来解决日志瓶颈问题。
在检验点方面,为了提高系统效率,通常力图使检验点操作和事务处理同时进行。
为了提高速度指标和综合性能,MMDB系统往往利用附加的硬件设备如非易失内存、专用的日志处理器、检验点处理器等来支持高效、快速的数据恢复。
4 面向3G平台嵌入式内存数据库引擎的设计4.1 3G平台中数据库子系统整体架构4.1.1 数据库系统各功能模块在3G平台系统中的位置3G软件平台包括6大软件子系统。
DataBase 子系统负责管理平台的物理资源和平台实现的信令、协议的配置信息,同时向其它子系统提供数据库访问接口。
它工作于操作系统之上。
承载子系统向业务子系统、信令子系统、OAM和网管子系统提供ATM、IP、等方面的承载服务。
它工作于操作系统和DataBase 子系统之上。
信令子系统实现窄带No.7 信令、宽带No.7 信令、IP信令、网关控制信令,向业务处理子系统提供服务。
它工作于操作系统、DataBase子系统和承载子系统之上。
系统控制子系统负责对整个系统的监控、启动、版本下载等。
它工作于操作系统和DataBase 子系统之上。
OAM 和网管子系统提供平台与网管后台的统一接口,负责对平台的协议、信令进行配置和管理,以及提供必要的统计数据。
它工作于操作系统、承载子系统、DataBase子系统之上。
业务处理子系统实现系统提供的各种业务。
它工作于操作系统、承载子系统、信令子系统、DataBase子系统之上。
数据库子系统分布在3G 平台各处理器上。
从结构上看数据库子系统属于分布式数据库系统;主要为平台各个子系统提供数据支持,并为将来其上的扩展业务提供支持易扩充机制的数据库模型。
4.1.2 数据库子系统内部模块划分数据库子系统内部划分五大功能模块,支持数据来源为RAM、FLASH、硬盘特定格式以及商用数据库等多种介质。
五大功能模块分别是:输入输出模块、对象管理模块、业务处理模块、维护管理模块及平台系统工具包。
输入输出模块(I/O模块)负责完成整个平台所有与硬件介质相关的数据、装载、转储、存储空间管理等等相关功能。
对象管理模块是整个平台的核心模块(DBCORE),完成主体功能,即对内存数据、表、索引、锁等等系列对象的核心组织功能,对整个系统的性能高低有决定性的影响。
提供简易的内部并发控制手段。
业务处理模块是针对数据库平台的用户提供的使用接口层,完成对内存数据库的访问服务。
可以支持API 方式及类SQL 访问方式。
支持分布式数据访问方式。
维护管理模块完成对整个平台系统的监控及管理,包括探针、告警、日志、实时业务跟踪、远程网络访问等等系列功能的实施。
平台系统工具包针对各模块均有完善的工具支持,具体如下:介质层工具:各类特定介质的数据存储文件检索、修改、生成。
对象管理模块工具:根据对象属性区别性选择生成主体程序框架,若无特殊要求,生成的代码可直接用于对象管理。
I/O 模块工具:根据内存数据库分布模型,生成数据装载、转储及内存数据存储空间管理等框架代码;业务处理子系统工具,常规API 代码生成。
维护管理模块工具:接口跟踪、日志等输出文件的检索、管理工具。
其他:各类对象(表、索引……)设计及相关说明文档生成。
4. 2 系统对象设计原理和处理流程本子系统是按照面对对象的方法进行设计的,因此在叙述系统处理流程时以子系统的各个对象为主线,而同步流程和监控流程设计上有其自身特点,对它们的叙述以过程为主线。
本子系统的数据分为数据表、索引、队列、同步实例、监控实例、单向资源队列六大类。
其中数据表为数据库组织的核心,然后为数据定位的方便建立索引,为资源管理的方便建立了队列,出于数据同步的需要建立了同步实例,出于资源监控的需要,建立了监控实例,而单向资源队列作为辅助数据表和同步实例的内存管理之用。
以上除单向资源队列外每一类数据都定义为系统的数据对象类,系统对于同一对象类的数据统一定义,统一管理。
一个具体的数据对象称为某一数据对象类的数据实例。
系统为表、索引、队列、同步、监控的所有数据实例统一分配唯一一个32 位整数加以标识,称为数据实例句柄。
对数据实例的存取都是通过数据实例句柄进行的。