三层度量模型BerkeleyDB与SQLite系统评测研究
2015-03-07陈亚峰郭一帆
陈亚峰,郭一帆
(1.河南省轻工业学校,河南 郑州 450000;2.河南建筑职业技术学院,河南 郑州 450000)
三层度量模型BerkeleyDB与SQLite系统评测研究
陈亚峰1,郭一帆2
(1.河南省轻工业学校,河南 郑州 450000;2.河南建筑职业技术学院,河南 郑州 450000)
针对在嵌入式系统设计时难以抉择采用何种数据库的现状,提出适用于嵌入式数据库评测的三层质量特性度量模型及其指标体系。在分析嵌入式数据库系统特点的基础上,参考目标问题度量(goal-question-metric,GQM)范式,建立包含质量特性、质量子特性和子特性的度量元三层度量评测模型和指标体系。依据该模型分析阐述Berkeley DB和SQLite的系统性能,验证该评测模型。通过仿真实验,进一步验证其有效性。结论表明能为开发者在实际应用中选择何种嵌入式数据库提供参考。
嵌入式数据库;三层度量模型;Berkeley DB;SQLite;系统评测
0 引 言
随着嵌入式系统的应用日益广泛,仅适用于PC机、体积庞大、延时较长的数据库技术已不能满足嵌入式系统开发的需求[1]。不同的嵌入式数据库在体系结构、计算能力、存储方法等方面的性能千差万别,在嵌入式系统设计时决定采用何种数据库,需要设计者有一个切实的系统评测结果[2]。同时,合适的评测方案能提高测试效率,避免目标系统遇到的不能保证可靠性、实时性、并发性等瓶颈,此外完善的嵌入式数据库的评测需要更多细致的工作。目前,国外通用的数据库测试是事物处理性能委员会(TPC)组织[3]制定的测试标准和规范,对嵌入式数据库则无对应的标准和规范。嵌入式实时测试领域中,比较有代表性的有CodeTest、LogiScope,专门针对嵌入式数据库的测试工具较少。国内李庆诚和董洁等[4-5]针对嵌入式数据库已展开相关研究,但未形成成熟的理论体系。
基于此,本文建立了基于三层质量度量模型的嵌入式数据库评测比较模型和指标体系,并针对应用较为广泛、技术较为稳定的Berkeley DB和SQLite进行了验证。
1 嵌入式数据库系统
嵌入式数据库通常与嵌入式操作系统及其应用集成在一起,由程序直接调用相应的API就可实现对数据的存取。在特定的开发环境下,嵌入式数据库系统具有如下特点:
1)体积适当。由于嵌入式系统自身的特点,对数据的存储和程序的运行都具有较强的空间限制,所以嵌入式数据库就必须占用尽量少的ROM、RAM和CPU等系统资源。因此,要求嵌入式数据库具有微小内核,以便实现嵌入系统的功能。
2)系统的可靠性、可管理性和安全性是对所有数据库普遍的要求,嵌入式数据库系统也不例外。同时由于嵌入式系统自身的特点和嵌入式数据库运行存在的要求,使得对嵌入式数据库在此方面的要求更加苛刻。
3)可移植性。由于嵌入式系统的开发和应用平台种类繁多,为了得到更加广泛的应用,嵌入式数据库应该具备较好的移植性和平台无关性。
4)具备运行速度快、资源利用率高以及开发环境尽可能简化等性能要求。
5)多任务、多数据类型的支持需求。嵌入式数据库总是与操作系统集成应用,由于不需要独立的数据库引擎,使得嵌入式数据库必须适应嵌入式操作系统的要求,必须支持多任务、多数据类型。
6)在功能上,嵌入式数据库系统应该支持对记录的插入、删除、修改和查询等操作,支持表的创建、删除、排序、索引、归并等操作。
7)基于对数据库本身的要求,嵌入式数据库还必须支持数据库的备份和恢复以及维护等工作[6]。
2 三层质量框架度量模型
对于一个系统软件的评测首先要制定具体的测试方案,该方案取决于所采用的评测度量模型[7]。在分析嵌入式数据库系统特点的基础上,参考目标问题度量(goal-question-metric,GQM)范式[8],构建了三层质量框架度量模型。
三层质量框架度量模型是将评测指标框架分为要评测的质量特性、质量子特性和子特性的度量元,然后根据评测需要构建度量模型的方法,其结构如图1所示。
图1 三层质量框架度量模型的结构图
首先确定的第1层是被评测系统的质量特性(quality character,QC),每一个质量特性代表了被评测对象质量的一个方面,根据GJB 2434——1995《军用软件测试与评估通用要求》的规定,一般包括功能性、可靠性、易用性、效率、可维护性和可移植性6个方面。
其次确定第2层,即各质量特性细化后的子特性。例如,根据GJB 2434——1995的规定,一般功能性的子特性包括合适性、准确性、互用性、依从性和安全性5个方面。可靠性的子特性包括成熟性、容错性和易恢复性等方面。与确定质量特性框架指标的原则一样,该层可根据系统的特点和评测的目的选择其中若干个指标进行评测即可。
再次确定指标框架的第3层,即被评测系统要测试的子特性的度量元(measurement flement,ME)以便进行定量测评。度量元可用文字表述来表明子特性的满足程度,或用分级表述来表明子特性的等级,也可用属性表述来表明子特性是否满足等。根据这些要素对系统进行打分评定,综合各要素的评分就可以得到相应的子特性值和特性值。
最后,给要评测的质量特性(质量子特性)规定一个衡量标准,即定义质量需求。同时定义评价等级和综合评测准则和方法。
3 嵌入式数据库系统评测框架体系
嵌入式数据库除了具有传统数据库的一般特性外,还具备不同的应用特性和设计特性。在衡量其优劣时还必须考虑嵌入式特性,因此在设计嵌入式数据库评测时,质量特性包括应用特性、嵌入式特性和设计特性3个方面。
3.1 应用特性
应用特性包括支持语言接口、适用系统、适用场合、成本高低和易用性5个子特性,其度量元分别为支持的语言及其数量,支持平台系统及其数量,适合微、小、中、大型系统中的类型,是否开源或免费,难、中、易程度等。
支持语言接口:不仅要有应用于嵌入式场合的C/C++接口,同时为便于嵌入式数据库产品的标准化,也要有SQL语言。
适用系统:要适应嵌入式系统广阔的应用空间,嵌入式数据库应支持多平台。
适用场合:嵌入式数据库需要根据不同场合选型。成本高低:低成本是嵌入式数据库必须考虑的。易用性:一种软件是否易用、友好是衡量该软件质量的一个重要体现及推广阶段重点考虑的因素。
3.2 嵌入式特性
嵌入式特性包括精简性、移植性、扩展性、管理性、高效和开发难易6个子特性,其度量元分别为占用空间大小(KB),支持平台及数量,是否支持扩展,是否需要管理,基本操作效率,最大数据量,并发访问量,开发难、中、易程度等。
精简性:目标代码在达到一定嵌入式性能指标下,应尽可能降低其尺寸,以减少对有限内存资源的占用量。
移植性:嵌入式领域中,种类繁多,必须做到接口尽量简单,便于系统的移植。
扩展性:为验证软件与其所在环境的依赖程度,需要对嵌入式数据库进行可扩展性评测。
可管理性:通常不需要人工参与,因此嵌入式数据库需要实现零管理。
高效性:通常从数据处理能力和并发控制能力两个方面衡量。
3.3 设计特性
设计特性包括体系结构、数据类型、存储方式、存储模式、DB模式、SQL支持、开发语言、可靠性8个子特性,其度量元分别为是否简洁清晰,支持的数据类型,支持的存储方式,支持的存储模式,是否为DB模式,是否支持SQL,开发的语言种类,错误处理、加密强弱等。
体系结构:一般为系统属性,体现其设计思想。
数据类型:决定了数据被访问和操作的方式。
存储方式:整个实时数据库系统的高性能就是以内存数据库作为底层支持的,所以存储方式是衡量因素。
存储模式:索引结构重点解决时空开销,合适的存储模式可以有效使用有限资源来加快执行速度。
DB模式:将数据库服务器作为函数的形式,能解决进程间通信带来的系统开销,剔除不定性从而提高运行效率。
SQL支持:考察其对SQL语言的支持程度以及对开放数据库互连(open database connectivity,ODBC)的支持程度。
可靠性:错误处理能力以及加密强弱。
4 Berkeley DB和SQLite系统性能评测
4.1 Berkeley DB系统性能分析
Berkeley DB是一个适合嵌入式应用领域的数据库[9],在从嵌入式系统到大型系统的多种场合均有很好的适用性,能够运行在Unix、Linux、Win32、WinCE、VxWorks、PIOSIX system等操作系统。Berkeley DB以源代码的形式开源发放,大部分均可以免费从www.sleepycat.com网站上下载,并可以自由应用于其他开放源代码的项目中。它为数据访问和管理提供了简单的函数调用,支持的API语言有C、C++、Java和Dbm/Ndbm等,支持的脚本语言有Perl、Tel和PHP等。但是,从易用性的角度来讲,Berkeley DB的设计较为复杂。
BerkeleyDB本身很精简(文本空间少于300 KB),它支持高并发度,工作容量可为上万个用户同时提供服务,单文件的容量也达到了256TB,它采用内进程执行模型,调用API函数简单,管理几乎零开销。传统的数据库一般作为独立服务器工作,而Berkeley DB是软件开发库,开发者将它嵌入到应用程序中,应用程序本身就是一个服务器。因为只是利用嵌入式数据库开发来实现定制的数据库逻辑,避免了与应用服务器进程间的通信开销,所以Berkeley DB具有较高运行效率。Berkeley DB可以运行于几乎所有的Unix和Linux系统及其变种系统、Windows操作系统以及多种嵌入式实时操作系统之上,在32位和64位系统上均可以运行,具备很强的移植性,已经被许多高端的因特网服务器、台式机、掌上电脑、机顶盒、网络交换机以及其他一些应用领域所采用。在用Berkeley DB开发时,要求开发者具有一定的专业水准。
Berkeley DB由5个子系统构成,包括数据存取(access methods)管理子系统、内存池(memory pool)管理子系统、事务(transaction)管理子系统、锁(locking)子系统和日志(logging)管理子系统,其体系结构如图2所示。
图2 Berkeley DB体系结构
Berkeley DB不是关系型数据库,不能应用标准的SQL语句对数据库操作,而是需要调用专用的API。这些API提供了查询、插入、删除等功能。在大多数场合只需按照统一的接口标准进行调用就可以完成基本操作。Berkeley DB提供的开发语言接口主要是C和Java两种语言。Berkeley DB提供了专门的函数来捕获错误代码并将之转变成具体的错误描述。当有错误发生时,首先由函数db-strerror返回指向错误消息的指针,该函数对于系统错误和Berkeley DB自身的错误都可以处理;然后再由Db-err或Db-errx来格式化输出错误信息。整体而言,Berkeley DB的加密功能也是比较强的。
4.2 SQLite系统的性能分析
SQLite嵌入式数据库也提供了源代码,可以从www.sqlite.org网站上完全免费下载,要在众多的硬件平台进行移植[10],可以根据不同平台对源码进行交叉编码来实现。SQLite高速、有效、可升级,可以运行于ARM/Linux到SPARC/Solaris等多种中小型系统硬件平台上。SQLite嵌入式数据库与POSIX和Win32系统兼容,支持语言较多,如C、Tel等。
SQLite嵌入式数据库体积足够小,总共不到3万行C代码和占用不大于250KB的空间容量,支持大至2TB数据库。它支持ACID事务、零配置、数据库文件,可以在不同字节顺序的机器间自由共享。它的速度较快、移植性强、开发环境简单,但由于自身设计需求,其扩展性较弱,不支持XML;其并发性也不够高,仅仅对单用户写操作具备并发性。
SQLite有着优雅、标准化的设计,其逻辑架构采用流式设计,体系结构模块简洁、关系清晰,主要分为顶层、SQL编译和底层3大模块,细分为8个子模块,SQLite体系结构如图3所示。
由图可以看到,SQLite的8个子模块分别为接口、标记处理器、分析器、分析器生成器、虚拟机、B-树驱动、页面高速缓存和操作系统接口。SQLite体系结构的核心是虚拟数据库引擎(virtual database engine,VDBE),它完成与数据操作相关的全部任务,并且是客户和存储之间信息交换的中间单元。
图3 SQLite体系结构
作为基于关系数据库模式的SQLite,支持绝大多数标准的SQL92语句[11]。在很大程度上实现了ANSI SQL92标准,特别是支持视图、触发器、事务,支持嵌套SQL。在操作语句上更类似关系型数据库的产品,非常方便。此外,SQLite也有API的概念,而且极易于使用。与Berkeley DB提供的存储模式不同,SQLite只提供BTree存储数据的模式,存储方式也只能是ASCII码,即对二进制数据不能直接保存,必须进行转化为ASCII码后才能保存。
SQLite支持C语言开发,其数据类型属于无数据类型。虽然在生成表结构的时候,要生成每个域的数据类型,但是SQLite并不做任何检查,开发人员要靠自己的程序来控制输入和读出数据类型。SQLite的错误处理是非常粗略的,其加密功能也相对较弱。
表1 Berkeley DB与SQLite的评测比较
4.3 Berkeley DB与SQLite的评测比较
依据评测模型及其框架体系和前面的分析,对Berkeley DB与SQLite系统性能进行了评测,其结果如表1所示。可知二者在应用特性、嵌入式特性和设计特性各自具有不同的特点,在不同的应用场合有不同的应用价值。在具体设计嵌入式系统时,可以根据实际需要选择合适的数据库。
4.4 仿真实验
为进一步验证该评测模型,进行了仿真实验。实验环境:平台为Linux PC机,处理器3.0 GHz,内存容量2.0GHz,分别调用数据库提供的不同API函数。首先进行打开(Open)、增加(Add)、更新(Update)、删除(Remove)、关闭(Close)等操作,然后进行查询(Getonly)操作。测试的次数为5次,操作完成的单位为ms。测试结果如表2、表3和表4所示。
表2 Berkeley DB的测试结果
表3 SQLite的测试结果
表4 Berkeley DB与SQLite的测试结果对比
可知,二者各操作完成的时间相差很大,原因是体系结构、存储模式等方面的差异。比如Berkeley DB体系结构为包含式架构由5个子系统组成,同时存储时需要调用专用的API导致完成时间较长,而SQLite为流式架构由3大模块组成,所以打开和关闭数据库、更新和查询记录时Berkeley DB明显慢于SQLite;由于Berkeley DB的存储方式为原样存储,而SQLite还需要转换格式,增加记录时SQLite速度却低于Berkeley DB。
5 结束语
从目前广泛应用的Berkeley DB和SQLite两个嵌入式数据库入手,利用构建的三层度量模型对二者的系统性能进行阐述和分析,并在此基础上进行评测比较和仿真实验,为开发者在实际应用中选择何种嵌入式数据库提供重要的参考。本研究的创新主要在于:1)对Berkeley DB和SQLite两个开源嵌入式数据库系统性能的分析阐述全面详尽;2)建立了基于三层质量度量模型的嵌入式数据库评测模型和指标体系;3)基于三层质量度量模型对Berkeley DB和SQLite系统性能评测比较和仿真实验,验证了该模型的有效性,同时为开发者在实际应用中选择何种嵌入式数据库提供重要的参考。
[1]李明月.基于嵌入式数据库的分布式应用与实现[D].长春:吉林大学,2011.
[2]张钦伍.实施系统级软件确认评测的构想[J].计算机工程与科学,2000,22(5):100-103.
[3]TPC-B measures throughput in terms of how many transactions per second a system can perform[EB/OL]. http://www.tpc.org/tpcb/default.asp,2009.
[4]李庆诚,卢涛,刘嘉欣.嵌入式数据库评测框架构建研究[J].计算机工程与设计,2008,29(1):123-125.
[5]董洁,贺红卫,耿鸿月,等.嵌入式数据库测试技术的研究[J].计算机工程与设计,2010,31(12):2733-2735.
[6]黄布毅,张晓华.基于ARM-Linux的SQLite嵌入式数据库技术[J].单片机与嵌入式系统应用,2005(4):21-24.
[7]金澈清,钱卫宁,周敏奇,等.数据管理系统评测基准:从传统数据库到新兴大数据[J].计算机学报,2014(11):78-79.
[8]Olsson T,Runeson P.V-GQM:a feedback approach to validation of a GQM study[C]∥Proc of the 7th International Software Matric Symposium,Washtington,2001:236-245.
[9]万玛宁,关永,韩相军.嵌入式数据库典型技术SQLite与Berkeley DB的研究[J].微计算机信息,2006,22(2):91-93.
[10]郝瑞.基于虚拟可信平台的软件可信性研究[D].太原:太原理工大学,2013.
[11]康小芳.SQLite第三版总览[EB/OL].http:∥www.sqlite.org/ appfileformat.html.
Research of the evaluation of Berkeley DB and SQLite system based on the three-layer measurement model
CHEN Yafeng1,GUO Yifan2
(1.He’nan Light Industry School,Zhengzhou 450000,China;2.He’nan Technical College of Construction,Zhengzhou 450000,China)
In view of the design of embedded system is hard to decide which database was choosen,three layers of quality measurement model and its index system are proposed,which is suitable for embedded database evaluation.Based on the analysis of embedded database system character and GQM(goal-question-metric)method,one three layer quality measurement model and index system are established,which contains quality characteristics,quality characteristics and the characteristics of measurement.Based on the analysis of the performance of the system of the Berkeley DB and SQLite,that evaluation method is appropriate.The validity is further verified by simulation experiments.Results show that can provide important reference when the developer chooses what kind of embedded database in practice.
embedded database;three layer measurement model;Berkeley DB;SQLite;system evaluation
A
:1674-5124(2015)07-0099-05
10.11857/j.issn.1674-5124.2015.07.023
2014-10-10;
:2014-12-18
河南省信息技术教育研究重点项目(ITE12051)作者简介:陈亚峰(1982-),男,河南项城市人,讲师,硕士,主要从事嵌入式系统研究。