版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
永4屛总女學GuangxiUniversityofScienceandTechnology外文翻译外文题目:SQLiteEmbeddedDatabaseSystemResearchandImplementation院(系):计算机科学与通信工程学院专业:计算机科学与技术(软件工程方向)班级:姓名:学号:指导教师:2016年5月4日SQLiteEmbeddedDatabaseSystemResearchandImplementationIntroductionWiththewiderangeofembeddedsystemapplicationsanduserdataprocessingandmanagementofincreaseddemand,avarietyofsmartdevicesanddatabasetechnologiesworkintandemtogetattention.Thisdatabasenotonlyhasthemainfunctionofthetraditionaldatabase,butalsohasembeddedandmobiletechnologytosupporttwocharacteristics,itisoftenusedinPocketPC,PDA,vehicleequipment,mobilephonesandotherembeddeddevices.Theriseofthisdatabasetechnologysothatpeoplenolongersubjecttoasingleoperatingsystemrestrictions,anytime,anywherebusiness,andimpartinformation.Canbesaidthatthedevelopmentofembeddeddatabasetoimprovetheuniversalityofaccesstodata,anytime,anywhereaccesstoinformationsothatpeopledesiretobecomepossible.1embeddeddatabasesystemarchitectureembeddeddatabaseandoperatingsystem,databasesystemandapplication-specificintegratedtorunonavarietyofsmartembeddeddevices.Comparedwithtraditionaldatabasesystems,whichgenerallyaresmallerandhaveastrongportabilityandeaseofuse,andfunctionalitytoachieveamorecompleteuserdatamanagementoperations.However,duetoresourceconstraintsofembeddedsystems,itcannotasacompletedatabasetoprovidelargevolumesofdatamanagement,andembeddeddevicescanbeplacedanywhere,influeneedbytheenvironment,datareliabilityislow.Inpractice,inordertocompensateforsmallembeddeddatabasestoragecapacity,reliabilityandlowenough,usuallyintheback-enddatabaseonaPCconfiguredtoachievehigh-capacitydatastorageandmanagement.Embeddeddatabaseasthefront-endequipment,youneedaGUIinterfacetoachievehuman-computerinteractiononembeddeddevicesandthePCthroughtheserialportandthemaindatasourceontheexchangeofdatabetweentoachieveserver-sidedatamanagementsystem,receivingtheembeddedterminalsofthedataanddownloaddatatotheembeddedterminalandotheroperations.2、SQLite'sarchitectureanddevelopmentoftechnologyD•RichardHeapSQLiteisdevelopedwithasmallClibraryimplementationofapowerfulembeddedrelationaldatabasemanagementsystem.ItprovidessupportformostoftheSQL92:moretables,indexes,transactions,views,triggers,andaseriesofuserinterfaceanddriver.2.1SQLiteArchitectureSQLitecanbedividedintoeightmajorsubsystems,showninFigure1.Topismarkedprocessor(tokenizer)andanalyzer(parser).Highlyoptimizedanalyticsgeneratorcanquicklygenerateefficientcode.ThebottomisbasedonKnuthoptimizedB-tree.Thispagecanberunonadjustablebuffer(pagecache)thathelptofindthediskwillbereducedtoaminimum.Furtherdownthepagecache.ItsroleintheOSabstractionlayerontopofsuchanarrangementhelpstomovethedatabase.Architectureisthecoreofthevirtualdatabaseengine(VDBE).VDBEcompletewithalldatarelatedtotheoperationoftheclientandstorageoperationsandexchangeofinformationbetweenthemiddleoftheunit.ItistheSQLitecore.AfteranalyzingtheSQLstatementis,VDBEintoplay.Codegeneratorwilltranslateintoapocket-sizedtreeanalysisprogram,thentheseproceduresarecombinedintoapocket-sizedvirtualmachineswithVDBEexpressedinaseriesoflanguageinstruction.Thisbackandforth,VDBEeachinstruction,thefinalcompletionofrequirementsspecifiedinthequerySQLstatement.VDBEmachinelanguagebythedatabasemanagementofaround128operationcode(op-code)form.Fortheopentable,queryindexing,storage,anddeletedatabaserecords,andmanyotheroperationshavecorrespondingopcode.VDBEineachinstructionopcodebytheoneandthreeoperand(operand)composition.Someinstructionsuseallthreeoperands,someinstructionsarenotause.Italldependsonthenatureofinstruction.Forexample,Opencommandtoopenatablepointer,useallthreeoperands:thefirstoperand(P1)containstheIDnumberofpointers,thesecondoperand(P2)thattherootofthetable(ortablesHomeposition),thethirdoperandisthenameofthetable.2.2SQLitedevelopmenttechnologySQLite'sAPIiseasytouse,only3toexecuteSQLandgetdatafunction.Itisextensible,allowingprogrammerstocustomizethefunction,thencallback()functionsetsin.Opensourcecommunityhasextendedanumberofcustomerinterfaces,adapters,drivers,etc.,whichmakesuseofSQLiteinotherlanguagesarealsopossible.UsingtheClanguageAPIrequiresonlythreesteps.First,providethefilenameandaccessmode,tocallsqlite_open()connecttothedatabase.Then,performcallback()function,SQLiteimplementationbyeachrecordcallback()functiontoobtainfromthedatabasegetresults.Finally,ifyouwanttoexecuteaSQLqueryandgetacallback()functionpointer,youcancallsqlite_exec().Youcanalsocallsqlite3_get_table()functiontoobtainthedatacontentsoftheform.SQLitealsoprovidesaccesstobinarylargeobject(BLOB)method,whilethethread-safe,databasemanagement,APIextensions,itisalsoconvenienttoprovideastrongtechnicalsupport.3SQLitecompiledintheARM9developmentboardandacopySQLiteofficialwebsiteatwww.sqlite.orgdownloadSQLite-3.3.8version,extracttheterminalgeneratesSQLite-3.3.8directory.Intothisdirectory,forsqlite/src/sqliteInt.htomakecertainchangestoensurebtree(Btree)havethecorrectvariablesize.DifferentarchitecturesofLinuxwillbesomedifferences.ARM-Linuxcanbefoundforthefollowingcomponents:ifndefINTPTR_TYPEifSQLITE_PTR_SZ==4defineINTPTR_TYPEintelsedefineINTPTR_TYPElonglongendifBeforethecodeaboveplus#defineSQLITE_PTR_SZ4Sothefollowing"typedefINTPTR_TYPEptr;"isdefinedas"int"type,ratherthan"longlong".Modifythecontentsoftheconfigurefile,commentouttherelevantcode,letthesystemdonotcheckthecross-compilerenvironment,oranerror,cannotgeneratetheMakefile.Thencreateanewfoldersqlite-arm-linuxtosavethelibraryfilewillbegenerated,runthefollowingcommandtoconfigure:./configure--disable-tcl--prefix二/../sqlite-arm-linux/--host-arm-linuxWillgeneratetheMakefileinthisdirectory.ModifytheMakefileinthefollowingstatement,specifyingthehostcompilertoGCC:-#BCC=agrm-linux-gcc-g-02BCC=gcc-g-O2Thenyoucanrunmake&&makeinstallcommandstocompile,unlessotherwiseerrorwillbein/../Sqlite-338/sqlite-arm-linux/libdirectorytogeneratelibraries.Mainlibsqlite3.so,libsqlite3.so.O,libsqlite3.so.O.8.6threedocuments.Atthesametimeinthebinfolderswellsintoanexecutablefilesqlite3.Inordertoreducethesizeoftheexecutablefile,usestriptoremoveoneofthedebugcommandprocessinginformation.Libraryfileisgenerated,throughNFS(NetworkFileSystem)totherelevantlibraryfilesarecopiedtotheARMdevelopmentboard,setuptheNFSserverhost,startthetargetboard,run:mount-tnfs01:/../sqlite-arm-linux/mnt-onolockcp-arf/mnt/lib/libsqlite3.solibsqlite3.so.O.libsqlite3.so.0.8.6/usr/sqlite/libcp/mnt/lib/sqlite3/usr/sqlite/binOneNFSserver01isIP,soputthefolderwherethesqlitelibrarytothetargetboardmount,withtheattention-arfcopyoption,becauselibsqlite3.soandlibsqlite3.so.OislinkedtoIibsqlite3.so.O.8.6.4embeddeddatabasesystemdesignandimplementationofembeddedsystems,apowerfulgraphicaluserinterfacetomakethesystemmorefeature-rich.TherearemanyGUIavailable,takingintoaccountthelicensingandpricingfactorsinQt/Embeddedbasedonthedevelopmentofadatabaseinterfaceprogramtocompletethedesignofembeddeddatabasesystem.QtQtgoodpackagemechanismallowsaveryhighdegreeofmodularity,reusabilitybetter.ThebasicstructureofembeddeddatabasesystemshowninFigure2.
systemlceinMaitiinteiiaceofsvsrem
figure2EmbeddeddatabasesystemconfigurationdiagramByQt'sQTableformcontrolstodisplaydatabyQListView,QC20mBoboxandQTextEditandotherformsofchoicefordatacontrol,dataentry,datatablewiththePushButtoncontroltocreate,delete,anddataquery,add,delete,modificationandotheroperations.Inthisway,thebasicmanagementofdatabasesystems,andcanusetheserialinterfaceanddataexchangebetweenback-enddatabase.ThesysteminterfacesusingQtDesignertoachievetherapiddevelopmentofthedatabaseandtheAPIbycallingtheSQLitedatabaseinterfacefunctionstoachievethebasicoperation.ThefollowingbriefoverviewofthedevelopmentdatabaseinterfacewithQtDesignerthebasicmethodsandkeycode.CreateanewC++projects,onthebasisofanewwidget,thewidgettoaddaTablecontroltodisplaytheformasadatainterface.Anotherasneeded,addPushButtoncontroltoachievetheappropriateaction.Inthewindowclass,createanewslot,namedSelectSlot().Connecttherelevantbuttonsignal,thekeycodeisasfollows:voidMainWindow::SelectSlot(){sqlite3*pDB=NULL;char*errMsg=0;introws=0,columns=0;char**selectResult;intrc=sqlite3_open("test.db",&pDB);//Queryandreturnsthedatatablecontentsrc=sqlite3_get_table(pDB,selectstr,&selectResult,&rows,&columns,&errMsg);if(rc==SQLITE_OK){QMessageBox::information(this,"selecttable","selecttablesuccessful!");tableView(char**selectResult,introws,intcolumns);}else{QMessageBox::information(this,"selecttable","selectfailed!");}sqlite3_close(pDB);}TableViewfunctionwhichistheroleofthequerytogetthedatatabledisplayedinaTablecontrol.Functionbodyproceduresareasfollows:voidMainWindow::tableView(char**selectResult,introws,intcolumns){maintable->setNumRows(rows+1);maintable->setNumCols(columns);for(intj=O;j<rows+1;j++)for(intk=0;k<columns;k++){maintable->setText(j,k,selectResult[j*columns+k]);}Terminalintotheprojectdirectory,modifythe*.profile,andaddthefollowing:Heretojointhelibraryfilesneededtocompiletheprogrampathandsqlite.hheaderfile.Thisisallready,startthecompilation.tmake-oMakefileEDBMS.progeneratedMakefile,whichwillbuildtoolstoarm-linux-g++,withcross-compiletherelevantlibraryfile.Thenmaketocompile,generateARMdevelopmentboardtoruninthebinaryfile,andNFSmountedtothedevelopmentboard.Run./EDBMS,,aswedesignthewindowinterface.QuerythecontentsofatableanddisplayedinQTablecontrol,themaineffectoftheinterfaceshowninFigure3.Inaddition,thesystemusesSQLServqr.2000asaback-enddatabase,usingVB6.Odevelopment,anddatabaseviaODBCconnection,toachieveback-enddatabasemanagement,andisresponsibleforreceivingandprocessingclientrequests.EndPCandembeddeddevicescancommunicatethroughtheserialport,toimprovesystemfunctionality.Inthisway,amorecompleteembeddeddatabasesystemtobuildup.ConclusionInthispaper,characteristicsoftheembeddeddatabase,basedonthedesignofanembeddeddatabasesystemarchitecture.Combinedwiththecharacteristicsoftheembeddeddatabase,theuseofSQLiteinARM-Linuxplatformtobuildembeddeddatabasesystem.Onthisbasis,adatabaseinterfaceusingQtDesignertousetheSQLitedatabaseAPItoachievethebasicoperation.Finally,theback-enddatabaseconfigurationandserialcommunicationmechanismforabriefintroduction,completeconstructionoftheembeddeddatabasesystem.译文SQLite嵌入式数据库系统的研究与实现引言随着嵌入式系统的广泛应用及用户对数据处理和管理需求的不断提高,各种智能设备与数据库技术的紧密结合得到重视。这种数据库不仅具有传统数据库的主要功能,还具有嵌入式和支持移动技术两种特性,因此通常被用在掌上电脑、PDA、车载设备、移动电话等嵌入式设备中。这种数据库技术的兴起使人们不再受单一操作系统的限制,可以随时随地处理业务、传递信息。可以说,嵌入式数据库的发展提高了数据信息接入的普遍性,使人们随时随地获取信息的愿望成为可能。1嵌入式数据库系统的体系结构嵌入式数据库将数据库系统与操作系统和具体应用集成在一起,运行在各种智能嵌入式设备上。与传统的数据库系统相比,它一般体积较小,有较强的便携性和易用性,以及较为完备的功能来实现用户对数据的管理操作。但是,由于嵌入式系统的资源限制,它无法作为一个完整的数据库来提供大容量的数据管理,而且嵌入式设备可随处放置,受环境影响较大,数据可靠性较低。在实际应用中,为了弥补嵌入式数据库存储容量小、可靠性低的不足,通常在PC机上配置后台数据库来实现大容量数据的存储和管理。嵌入式数据库作为前端设备,需要一个GUI交互界面来实现嵌入式终端上的人机交互,并通过串口实现和PC机上主数据源之间的数据交换,实现系统服务器端数据的管理,接收嵌入式终端上传的数据和下载数据到嵌入式终端机等操作。2SQLite的体系结构及开发技术SQLite是D•理查德•希普开发的用一个小型C库实现的一种强有力的嵌入式关系数据库管理体制。它提供对SQL92的大多数支持:多表、索引、事务、视图、触发和一系列的用户接口及驱动。SQLite的体系结构SQLite可以分成8个主要子系统,如图1所示。顶层是标记处理器(tokenizer)和分析器(parser)。高度优化的分析生成器可以快速生成高效率的代码。底部是基于Knuth经过优化的B树。这样可以运行在可调整的页面缓冲(pagecache)上,有助于将对磁盘的查找减到最少。再往下是页面高速缓存。它作用在OS的抽象层之上,这样的安排有助于数据库的移动。体系结构的核心是虚拟数据库引擎(VDBE)。VDBE完成与数据操作相关的全部操作并且是客户和储存之间进行信息交换的中间单元。它是SQLite的核心。在SQL语句被分析之后,VDBE开始起作用。代码生成器将分析树翻译成一个袖珍程序,随后这些袖珍程序被组合成用VDBE虚拟机器语言表示的一系列指令。如此往复,VDBE执行每条指令,最终完成SQL语句指定的查询要求。VDBE的机器语言由围绕数据库管理的128个操作码(op—code)组成。对于打开表、查询索引、存储和删除记录以及很多其他数据库操作都有对应的操作码。VDBE里的每条指令由1个操作码和3个操作数(operand)组成。一些指令使用全部3个操作数,也有些指令一个也未使用。这完全取决于指令的性质。例如Open指令用于打开一个表的指针,使用了全部3个操作数:第1个操作数(P1)包含指针的ID号,第2个操作数(P2)指出表的根位置(或者表的首页位置),第3个操作数是表的名字。SQLite开发技术SQLite的API易于使用,只需要3个用来执行SQL和获得数据的函数。它还是可扩展的,允许程序员自定义函数,然后通过callback()函数集合进去。开放源码团体已经扩展了众多的客户接口、适配器、驱动等,这就使得其他语言使用SQLite也成为可能。使用C语言API只需要三步。首先,提供文件名和访问模式,来调用sqlite_open()连接数据库。然后,执行callback()函数,SQLite通过对每个记录执行callback()函数获得从数据库那里得到的结果。最后,如果想执行一个SQL查询并获得一个callback()函数的指针,可以调用sqlite_exec()。另外还可以调用sqlite3_get_table()函数获得数据表单的内容。SQLite还提供了存取二进制大对象(BLOB)的方法,同时在线程安全、数据库管理、API的扩展等方面也都提供了强大方便的技术支持。3SQLite在ARM9开发板上的编译及拷贝在SQLite官方网www.sqlite.org下载SQLite-3.3.8版本,在终端解压生成SQLite-3.3.8目录。进入此目录,对sqlite/src/sqlitelnt.h作一定的修改,以确保btree(B树)有正确的变量大小。不同体系结构的Linux会有些差别。对于ARM-Linux可找到如下部分:ifndefINTPTR_TYPEifSQLITE_PTR_SZ==4defineINTPTR_TYPEintelsedefineINTPTR_TYPElonglongendif在上面的代码前加上defineSQLITE_PTR_SZ4这样后面的“typedefINTPTR_TYPEptr;”就定义为“int”类型,而不是“longlong"。修改configure文件的内容,注释掉相关代码,让系统不去检查交叉编译环境,否则会出现错误,不能生成Makefile文件。然后新建一个文件夹sqlite-arm-linux来保存将要生成的库文件,运行以下命令进行配置:./configure一disable-tcl一prefix=/../sqlite-arm-linux/——host—arm—linux将在本目录下生成Makefile文件。修改Makefile文件中如下语句,指定主机编译器为GCC:-#BCC=agrm-linux-gcc-g-02BCC=gcc-g-O2这时就可以运行make&&makeinstall命令开始编译,若无其他错误提示,则会在/../sqlite-3.3.8/sqlite-arm-linux/lib目录下生成库文件。主要有libsqlite3.so、libsqlite3.so.0、libsqlite3.so.O.8.6三个文件。同时在bin文件夹下生成了可执行文件sqlite3。为了减小执行文件大小,用strip命令处理去掉其中的调试信息。库文件生成后,可以通过NFS(网络文件系统)把相关库文件拷贝到ARM开发板上,设置好主机NFS服务器,启动目标板后,执行:mount-tnfs01:/../sqlite-arm-linux/mnt-onolockcp-arf/mnt/lib/libsqlite3.solibsqlite3.so.0.libsqlite3.so.0.8.6/usr/sqlite/libcp/mnt/lib/sqlite3/usr/sqlite/bin其中192.168.1.101为NFS服务器IP,这样就把sqlite库文件所在文件夹挂载到了目标板上,拷贝时注意加上-arf选项,因为libsqlite3.so和libsqlite3.so.0是链接到libsqlite3.so.0.8.6的。4嵌入式数据库系统设计及实现对嵌入式系统而言,强大的图形用户接口使系统的功能更加丰富。目前有众多的GUI可供使用,考虑到授权和价格的因素,我们在Qt/Embedded基础上进行数据库界面程序的开发,完成嵌入式数据库系统的设计。Qt良好的封装机制使Qt的模块化程度非常高,可重用性较好。嵌入式数据库系统的基本结构如图2所示。系统登陆系统主界面通过Qt的QTable控件来实现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年商品房买卖合同:带装修及车位赠送版12篇
- 2025年度日游包车客运服务绿色出行合同3篇
- 2024年高端制造业关键零部件采购合同模板5篇
- 2024年车库销售合同
- 2024年执行流程再造与效能提升合作协议3篇
- 2024排水沟施工与智慧城市建设合作协议3篇
- 2024年离婚子女抚养权合同参考版
- 2025年度机场ATM设备场地租赁与增值服务合同3篇
- 2024年采购协议修订范例版A版
- 2024年生态园林景观养护劳务分包合同3篇
- 小学国庆节主题活动方案设计(四篇)
- 行政事业单位内部控制培训课件
- 2009别克昂科雷维修手册gd扉页
- 数字化转型对企业创新能力的影响研究
- 替人追款协议书
- 六西格玛(6Sigma)详解及实际案例分析
- 周期性麻痹-课件
- 《推进家政服务提质扩容:家政服务业发展典型案例汇编》读书笔记模板
- XX半导体公司厂务工程项目管理制度规定
- 检测与转换技术课后习题和例题解答
- 有机硅产品分布图、单体工艺流程、聚合工艺
评论
0/150
提交评论