嵌入式数据库介绍--姜庆东_第1页
嵌入式数据库介绍--姜庆东_第2页
嵌入式数据库介绍--姜庆东_第3页
嵌入式数据库介绍--姜庆东_第4页
嵌入式数据库介绍--姜庆东_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式数据库简介、议程、嵌入式数据库概述SQLite简介V6数据库简介、嵌入式存储需求、便捷的信息存储和查询功能是系统软件必不可少的基本服务,嵌入式系统也不例外关系数据库技术经历了几十年的发展,相关概念深入人心,成为信息存储和检索的最重要手段。与现有的通用计算机系统相比,嵌入式系统的操作环境要求更高。同时,不同的系统也有非常不同的性能要求。嵌入式数据库系统、高性能嵌入式系统、电信和网络设备、航空航天工业自动化控制、中型嵌入式系统、机载电子设备、全球定位系统机器人、微嵌入式应用、个人数字助理(PDA)、智能手机、微嵌入式应用、智能卡、智能玩具、高性能嵌入式系统的应用分类,以及高可靠性:通常通过备份、冗余等手段;要求系统具有分布式特征:分布式存储、分布式事务;高性能:需要数据库系统的实时特性;多平台适应性;多用途内存数据库模式,使用非易失性存储介质作为备份;存储数据的类型很复杂;中型嵌入式系统,广泛的平台适应性:WCE、Linux、VxWorks等。存储的数据类型复杂多变:多媒体数据、地理信息数据等。存储介质有很多种类型:内存、与非门/非闪存、磁盘/内存、微盘等。通常有响应时间要求;要求界面简单,易于开发;微嵌入式环境,对资源的使用、存储空间、处理能力等都有一定的限制。(尽管这一限制对一些高端车型来说并不大);需要广泛的平台适应性:WCE、Linux等。要求有丰富的数据类型(多媒体数据、地理信息数据);各种存储设备:存储器、与非门/非闪存、标准磁盘/内存、微盘等。对查询响应时间的要求不高,能够满足人机交互的要求。需求和外部数据库同步能力(DataSync)、微嵌入式环境(智能卡)、苛刻的操作环境:要求最大限度地减少资源占用。存储的数据类型简单,数据量小。各种存储介质、硬盘驱动器、随机存取存储器、闪存、其他(电可擦可编程只读存储器等。),硬盘驱动器(HDD),直接存储设备,相对于随机存取存储器,具有大的存储容量,但也有大的开销。传统的数据库在如何使用硬盘上有更多的经验和技术。一些嵌入式系统需要考虑节能。随机存取存储器对传统数据库技术提出了挑战。一些传统的数据库优化技术不适合它。随机存取存储器是易失性存储器,需要非易失性存储器作为备份。传统的交易处理技术需要重新审视。闪存相当于相对较慢的内存写入速度,必须在写入前擦除。在设计数据库时必须考虑到这一点。NANDVersusNOR,NANDVersusNOR,Source : ToshiBaadetimesMarch 8,2004,典型性NANDLayout,K9F1208U0M,ChallengesOfNANDFlash,Factorybadblocksbitreaderrprogramanadererorsareserasecycleliminations,the challenge of embedded databases,传统的RDBMS是以DASD(如磁盘/磁鼓)为存储介质,而嵌入式系统中常见的存储介质(如闪存和DASD)在特性上有很大的不同,传统RDBMS的许多假设已不复存在传统的关系数据库管理系统的优化策略是基于最小系统资源占用来提高系统的吞吐量,而嵌入式关系数据库管理系统可能面临非常不同的优化目标。嵌入式RDBMS系统面临着苛刻的软硬件操作环境,这就要求考虑数据库结构。嵌入式数据库有多种运行环境和存储介质,因此几乎不可能用单一的体系结构“吃掉所有的”。由于嵌入式系统本身的特点,对数据的存储和程序的运行有很强的空间限制,所以嵌入式数据库应该首先保证一个合适的容量。此外,它占用尽可能少的只读存储器、随机存储器和中央处理器资源。可移植嵌入式系统有很多平台,所以嵌入式数据库应该是可移植的,以适应不同的软件和硬件平台。特别地,有必要考虑不同存储介质的特性,例如“与非”的读取特性。编程接口很简单,不需要提供完整的SQL和数据库连接方法。代码开源开源代码不仅可以降低产品开发过程中的开发成本,还可以为以后的维护、完善和稳定运行提供最彻底的解决方案。介绍了两个嵌入式数据库,小数据库(KDB)上实现的开源SQLite 6/V7,介绍了SQLite,东强,概述,SQLite介绍了SQLite的发展,SQLite的优势,SQLite的内部结构,SQLite的命令行界面,SQLite的命令行,SqLiTe数据库的编程接口C/等。C接口简单应用程序自定义简单函数自定义聚合函数自定义排序函数PERL接口SQLite数据库应用程序ASTRAL SQLite应用程序多级关联SQLite应用程序IPIS SQLite应用程序在网上,谷歌手机平台使用SQLite,SQLite,SQLite介绍,SQLite的开发始于2000年的D.RichardHipp。2001年,发布了2.0V。2004年,发布了3.0v(使用不同的数据文件格式和编程接口)。3.5.3的最新版本旨在易于管理、操作、维护、定制并提供易于使用的编程界面。SQLite介绍。SQLite的优点是内存占用小,SQL92的兼容性比MySQL(2倍)、PostgreSQL(20倍)、ACID兼容性(原子性、一致性、独立性、持久性)、支持视图、子查询、触发器,单个库文件包含数据库引擎和接口,并且它的操作不依赖于其他库。数据可以放在一个文件中,为C/C、Perl、PHP和其他应用程序提供免费的接口。源代码开发允许向SQL命令集动态添加自定义函数(简单函数和聚合函数),而无需重新编译SQLite库。SQLite的内部结构由以下组件组成:SQL编译器、内核、后端和附件。SQLite通过使用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展SQLite的内核更加方便。所有的SQL语句都被编译成可读的程序集,可以在SQLite虚拟机中执行。1.该接口将SQL语句传输到SQL编译器2。SQL编译器选择将SQL分解为令牌3。令牌被传递给解析器进行解析4。代码生成器生成虚拟机代码5。由虚拟机执行6生成的程序。SQLite库以B树的形式组织在磁盘上(每个表和索引都有自己独立的B树,所有B树都存储在同一个文件中)。7.操作系统层的操作。SQL92是兼容的。alterTableanalyzeattachDatabaseBeginAtionCommittTransactionCreateIndexCreateTableCreateTriggerCreateViewCreateVirtualtableDeleteTachDataB ASDROPINDEXDROPTABLE,DROPTRIGGERROPvieendtransactiononexplainexpressioninsertonconflict clausepromagareindexeplacelolback transferationselectupdatevacuum,使用sqlite数据库。sqlite命令行界面除了库本身之外,sqlite还包括一个命令行界面。sqlite/sqlite3可在$SQLITE_HOME/bin下找到。命令行函数描述了操作模式:sqliteDBFile获取运行SQLite的提示。帮助(请注意,SQLite命令行提供的命令都以“.”开头您可以看到sqlite命令行界面提供了以下功能。SQLite命令行函数简介。SQLite命令行函数简介DML/DDL语句的使用和以前一样,没有介绍。数据库列出了数据库文件名。桌子?模式?名单?模式?匹配的表名。importFILETABLE将数据从文件导入到文件中。垃圾场?桌子?生成一个形成数据库表的SQL脚本。输出文件名将输出导入指定的文件。output将输出打印到屏幕上。模式模式?桌子?设置数据输出模式(csv,html,tcl空值字符串用指定的字符串替换输出空值字符串。读取文件名在指定的文件中执行SQL语句。模式?桌子?打印创建数据库表的SQL语句。分隔符字符串用指定的字符串替换字段分隔符。show打印所有SQLite环境变量的设置。退出退出命令行界面,使用SQLite命令行函数。以下示例说明了SQLite命令行的正常使用:SQLITE数据导入创建一个数据文件。这个文件可能来自其他程序的输出等等。现在我们只手动创建以下数据文件数据。创建数据库表。五种数据类型文本、数字、整数、实数、无数据类型的转换被转换为保存的目标类型。如果TEXT保存为intEGER,请尝试将文件转换为数字(INT或float)。如果转换失败,则将其保存为文件。数据库表是用shell SQLite3Test创建的。dbsqliteCreateTableEmployee(IDINTERGEPRIMARYKEY,NameText,GenderText,AgeInteger);SQLite命令行函数,数据导入SqLite . import data . TxTempLoyeeSqLite提示:data . txt line 1: expered 4 columnsofdatabutfound 1;根据经验,应该看到字符分隔符有问题。让我们先看看系统使用什么提示:在显示之后,我们可以看到分隔符:“|”,也就是说,系统的默认分隔符是“|”面不是“|”。对分隔符: SQLite进行以下更改。分隔符, SQLite。IMPORTDATA。TXTEMPLOYEES SQLETEXT * from EmployeeWheed 2;SQLite select * frommeloyeewherename 999999999999;上面的句子用来解释textinteger(这与比较字符内部代码的结果相同)比较空选择ID 2,名称“DONG”,GENER=“男性”来自雇员;0,1,10,1,01,1,11,0,11,1,1,SQLite命令行函数的使用,下面的例子说明了SQLite命令行的一般用法:SQLITE数据导出将数据表导出到数据创建脚本sqlite.dumpemployee上面的命令可以得到与数据表相关的SQL语句,为了将输出保存在文件中,执行下面的命令。SQLite。输出创建。sqlsqlite。dumpemployeesqlite。输出stdout(将输出恢复到标准输出)将特定数据导出成数据文件SQLite。output data _ tmp。html SQLite从员工中选择* .SQLite。modehtmlemployeeskeliteselect *来自员工;sqlite.outputstdout上面的几条命令将雇员中的数据以html的格式保存到data_tmp.html中。shellsqlitetest.db .转储 | sedes/dq/dongqiang/| SQLite 3测试2。db上面的命令行操作将test.db中的dq全部替换为东强然后导入test2.db中创建索引createindexemployee _ IDonemployee(id);创建触发器createTriggerinsert _ Triggerafterinternemployeebegin/动作,比如记数,修改时间等结束,SQLite的编程接口简介,SQLite3C/C常见接口intsqlite 3 _ open();/数据库的打开,包括文件和内存数据库两种(:memory),intsqlite 3 _ close();/数据库的关闭longlongintsqlite 3 _ last _ insert _ row id(Sqlite 3 *);/最后插入的数据的行号longlongintsqlite 3 _ progress _ handler(SQlite 3 *);/查询的进度,参数为空删除进度信息(实验中)SQLite3的不同执行方式执行一行或多行结构化查询语言语句并在查询结果的每一行上执行回调函数intsqlite 3 _ exec();动态构造结构化查询语言语句char * sqlite3 _ mprintf(const char *,);char * SQLite 3 _ vmprintf(常量char *,va _ list);/构造语句,由sqlite3_exec执行intsqlite 3 _ exec _ printf();/构造查询语句,并执行void SQlite 3 _ free(char * z);/释放sqlite3_(v)mprintf分配的内存预编译结构化查询语言语句,减少结构化查询语言分析的时间int SQLite 3 _ prepare();/预编译intsqlite 3 _ step(SQlite 3 _ stmt *);/执行一次,或者多次int SqLite 3 _ reset(SqLite 3 _ stmt *);/重置sqlite3_stmt(来自SQLite 3 _ prepare()intsqlite 3 _ finalize(SQlite 3 _ stmt * PStmt);/释放利用对sqlite3_exec()的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论