第九讲-嵌入式数据库-嵌入式软件设计开发-教学课件_第1页
第九讲-嵌入式数据库-嵌入式软件设计开发-教学课件_第2页
第九讲-嵌入式数据库-嵌入式软件设计开发-教学课件_第3页
第九讲-嵌入式数据库-嵌入式软件设计开发-教学课件_第4页
第九讲-嵌入式数据库-嵌入式软件设计开发-教学课件_第5页
已阅读5页,还剩177页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式软件设计开发BeiHangCollegeofSoftware康一梅

kangyimei@嵌入式软件设计开发BeiHangCollegeofSo第九讲嵌入式数据库第九讲嵌入式数据库主要内容9.1概述9.2嵌入式数据库的分类

9.3嵌入式数据库设计技术指标

9.4嵌入式数据库管理系统设计9.5嵌入式数据库应用设计9.6几种嵌入式数据库主要内容9.1概述9.1嵌入式数据库概述数据库,人们为解决特定的任务,以一定的组织方式存储在一起的相关的数据的集合。实时数据库嵌入式数据库9.1嵌入式数据库概述数据库,人们为解决特定的任务,以一9.1嵌入式数据库概述

嵌入式数据库,是指可在嵌入式设备中独立运行的一种数据库系统,用以处理大量的、时效性强且有严格时序的数据,它以高可靠性、高实时性和信息吞吐量为目标,其数据的正确性不仅依赖于逻辑结果,而且依赖于逻辑结果产生的时间。9.1嵌入式数据库概述嵌入式数据库,是指9.1嵌入式数据库概述9.1.1特点

与大型数据库相比,嵌入式数据库具有以下特点:

1.占用存储空间小

2.可靠性、可管理性和安全性

3.互操作性和可移植性

4.可剪裁性

嵌入式(实时)数据库指事务和数据都可具备显式定时限制的数据库管理系统。9.1嵌入式数据库概述9.1.1特点与大型数9.1嵌入式数据库概述9.1.2嵌入式数据库的体系结构

典型数据库系统体系结构由管理员输入命令,对命令进行分析,传给执行引擎。将可利用的主存空间分割成缓冲区,用于存放数据。保证数据操作的原子性、持久性将用户的查询翻译成内部形式,称作查询计划接受DLL命令,经过索引、文件和记录管理器来改变元数据。9.1嵌入式数据库概述9.1.2嵌入式数据库的体系结构9.1嵌入式数据库概述9.1.2嵌入式数据库的体系结构

嵌入式数据库系统体系结构9.1嵌入式数据库概述9.1.2嵌入式数据库的体系结构9.1嵌入式数据库概述9.1.3嵌入式数据库系统发展现状目前各种应用解决方案中,大多采用以下所示的体系结构:应用程序嵌入式数据库嵌入式操作系统硬件平台9.1嵌入式数据库概述9.1.3嵌入式数据库系统发展现9.1嵌入式数据库概述9.1.3嵌入式数据库系统发展现状目前各种嵌入式数据库系统提供应用定制的方法主要有编译法和解释法:编译法:将应用所使用的数据管理操作固定在应用中,在应用生成后。如果需要调整操作,参数也要重新生成。解释法:将数据操作的解释器集成在应用中,生成后的应用对新的操作也能够起作用。9.1嵌入式数据库概述9.1.3嵌入式数据库系统发展现9.1嵌入式数据库概述9.1.3嵌入式数据库系统发展现状国外现状:

Sybase公司:SybaseSQLAnywhereStudio7.0;

Oracle公司:OracleLite;

IBM公司:DB2Satellite和DB2Everyplace。国内现状: 人民大学:金仓的“小精灵”系统; 东北大学:OpenBASEMini; 北京大学:ECOBASE。这些嵌入式数据库对资源要求较低,占用内存空间较小,从几十K到几百K不等;支持C语言API函数和标准SQL子集的开发接口,并提供了数据同步的功能。9.1嵌入式数据库概述9.1.3嵌入式数据库系统发展现9.1嵌入式数据库概述/TechHotspot/TH_embeddedDB.asp9.1嵌入式数据库概述/Te9.1嵌入式数据库概述Sybase公司:SybaseSQLAnywhereStudio/products/databasemanagement/sqlanywhere9.1嵌入式数据库概述Sybase公司:Sybase9.1嵌入式数据库概述SQLAnywhere

SybaseAnywhere-MobileandEmbeddedDatabaseTheindustry-leadingmobileandembeddeddatabase,providingdatamanagementandexchangetechnologiesthatenableapplicationsforfrontlineenvironments.

SQLAnywhereprovidesdatamanagementandexchangetechnologiesdesignedfordatabase-poweredapplicationsthatoperateinfrontlineenvironmentswithoutonsiteITsupport.Itoffersenterprise-caliberfeaturesinadatabasethatiseasilyembeddedandwidelydeployedinserver,desktop,remoteofficeandmobileapplications.9.1嵌入式数据库概述SQLAnywhere9.1嵌入式数据库概述金仓的“小精灵”系统“小精灵”嵌入式移动数据库系统是由中国人民大学数据与知识工程研究所、人大金仓信息技术有限公司自主开发。

技术特点:核心精巧,占用内存小于100KB;执行代码为100K~300K;支持基本的SQL功能;具有与远程数据库进行数据交换的功能并保持数据同步;与其它数据库(Oracle、Sybase、SQLServer)数据交换;具有可裁减性;具有简单清晰的类ODBC的API;支持多种平台HOPEN,WinCE,嵌入式Linux。9.1嵌入式数据库概述金仓的“小精灵”系统9.1嵌入式数据库概述金仓的“小精灵”系统支持低端产品:主要面向移动信息采集,处理终端,户外工作等;由本地DBMS和简单的同步服务器构成

支持高端产品:主要面向移动通讯、GPS的应用需求,可适用于智能交通管理、军队指挥系统、消防、警察等;由本地DBMS和支持事务一致性的同步服务器构成支持信息电器的嵌入产品:具有极精简的嵌入DBMS和因特网访问功能,广泛适用机顶盒、手机、车载设备等9.1嵌入式数据库概述金仓的“小精灵”系统支持低端产品:9.1嵌入式数据库概述东北大学:OpenBASEMiniOpenBASEMini在最初的设计时就定位在易学、易用、安全、标准的前提上。易学,使用户在具备了一定的数据库开发经验的基础上只需要简单的学习就可以掌握OpenBASEMini系统的开发;易用,系统维护方便,系统各种操作简单;安全,为用户提供了安全可靠的系统管理手段;标准,支持目前国际通用的各种数据库标准,方便系统的开发和移植。9.1嵌入式数据库概述东北大学:OpenBASEMi9.1嵌入式数据库概述东北大学:OpenBASEMini

技术特点:具有微小内核结构,最小系统50K左右;提供了对标准SQL的支持;具有事务处理功能;具有完善的数据同步机制,支持主动同步,支持与异构数据源的同步,实现了冲突检测并提供了多种冲突解决方案;具有强大的系统管理工具,方便实现系统的建立和管理;提供了多种灵活的编程接口,便于嵌入式开发;支持多种嵌入式操作系统,目前系统可以支持WinCE和Palm两种主流的嵌入式操作系统。9.1嵌入式数据库概述东北大学:OpenBASEMi9.1嵌入式数据库概述东北大学:OpenBASEMiniOpenBASEMini的成功推出为嵌入式系统,提供了方便、可靠的数据管理手段。它在如下的领域中得到广泛的应用:医疗、保险、零售、

金融、电信、军事9.1嵌入式数据库概述东北大学:OpenBASEMi9.1嵌入式数据库概述北京大学:ECOBASE/projects/ecobase/9.1嵌入式数据库概述北京大学:ECOBASEhttp9.1嵌入式数据库概述

技术指标:存储量:占用内存70KB;运行工作空间:基本内核执行代码140KB;支持的数据类型:int、numeric、float、decimal、char、date、long;支持基本的SQL功能包括:表的创建与撤消,不带子查询的增删改查语句,支持事务的概念。北京大学:ECOBASE9.1嵌入式数据库概述技术指标:北京大学9.2嵌入式数据库的分类9.2.1基于内存方式(MainMemoryDatabaseSystem)

内存数据库是支持实时事务的最佳技术,本质特征是以其“主拷贝”或“工作版本”常驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。内存数据库要求较大的内存量,但并不是要求任何时刻整个数据库都能存放在内存。传统数据库适用的数据结构、事务处理算法与优化、并发控制及恢复等技术对内存数据库不一定合适,需独立设计。 实时内存数据库的设计应打破传统磁盘数据库的设计观念,考虑内存直接快速存取的特点,以CPU和内存空间的高效利用为目的,来重新设计、开发各种策略、算法、技术、方法和机制。9.2嵌入式数据库的分类9.2.1基于内存方式(Ma9.2嵌入式数据库的分类9.2.1基于内存方式(MainMemoryDatabaseSystem)

设有数据库DB,

DBM(t)是t时刻DB在内存中的数据集,DBM(t)真包含于DB;

TS为所有事务的集合,AT(t)是t时刻的活动事务集,AT(t)真包含于TS;

Dt(T)为T在t时刻的操作数据集,Dt(T)真包含于DB;

●若在任一时刻t,均有:对任一事务有T∈AT(t),Dt(T)真包含于DBM(t)成立,则称DB为一个内存数据库,简记为MMDB。9.2嵌入式数据库的分类9.2.1基于内存方式(Ma9.2嵌入式数据库的分类9.2.1基于内存方式(MainMemoryDatabaseSystem)eXtremeDBMcObject公司的商业版嵌入式实时数据库。支持QNX、VxWorks、WindowsCE、Linux、嵌入式Linux、Windows、UNIX、Quodros。可运行于主内存中。特点:空间开销非常小:包括实时操作系统在内的总空间开销为130K字节以内;提供数据管理的关键功能:包括任务间协调、高速灵活的导航并保证数据一致性;高效率性:越过文件I/O及大量消耗CPU资源的缓存过程,大大提高了eXtremeDB在数据管理时的效率;自检:提供自检API极大地提高了用户研发的效率;9.2嵌入式数据库的分类9.2.1基于内存方式(MaeXtremeDB

1.内存数据库,eXtremeDB将数据以程序直接使用的格式保存在主内存之中,不仅剔除了文件I/O的开销,也剔除了文件系统数据库所需的缓冲和Cache机制。其结果是每个交易一微秒甚至更少的极限速度,相比于类磁盘数据库而言,速度成百上千倍地提高。作为内存数据库,eXtremeDB不仅性能高,而且数据存储的效率也非常高。为了提高性能并方便程序使用,数据在eXtremeDB中不做任何压缩,100M的空间可以保存高达70M以上的有效数据,这是其他数据库所不可想象的。

2.混合数据库,eXtremeDB不仅可以建立完全运行在主内存的内存数据库,更可以建立磁盘/内存混合介质的数据库。在eXtremeDB,我们把这种建立在磁盘、内存或磁盘+内存的运行模式称为eXtremeDBFusion融合数据库。eXtremeDBFusion兼顾数据管理的实时性与安全性要求,是实时数据管理的台阶性进步。

3.嵌入式数据库,eXtremeDB内核以链接库的形式包含在应用程序之中,其开销只有50KB~130KB。无论在嵌入式系统还是在实时系统之中,eXtremeDB都天然地嵌入在应用程序之中,在最终用户毫不知情的情况下工作。eXtremeDB的这种天然嵌入性对实时数据管理至关重要:各个进程都直接访问eXtremeDB数据库,避免了进程间通信,从而剔除了进程间通信的开销和不确定性。同时,eXtremeDB独特的数据格式方便程序直接使用的,剔除了数据复制及数据翻译的开销,缩短了应用程序的代码执行路径。

4.由应用定制的API,应用程序对eXtremeDB数据库的操作接口是根据应用数据库设计而自动产生,不仅提升了性能,也剔除了通用接口所必不可少的动态内存分配,从而提高了应用系统的可靠性。定制过程简单方便,由高级语言定制eXtremeDB数据库中的表格、字段、数据类型、事件触发、访问方法等应用特征,通过eXtremeDB预编译器自动产生访问该数据库的C/C++API接口。

5.可预测的数据管理,

eXtremeDB独特的体系结构,保证了数据管理的可预测性。eXtremeDB不仅更快、更小,而且更确定。在80双核CPU的服务器上,eXtremeDB在1TB内存里保存15B条记录;无论记录数多少,eXtremeDB可以在八十分之一微秒的时间内提取一条记录。9.2嵌入式数据库的分类9.2.1基于内存方式(MainMemoryDatabaseSystem)eXtremeDB9.2嵌入式数据库的分类嵌入式数据库的分类9.2.2基于文件方式

文件型数据库是以文件为组织方式,数据被按照一定格式储存在磁盘里,使用时由应用程序通过相应的驱动程序甚至直接对数据文件进行读取。嵌入式数据库PocketAccess是文件型数据库,只要有一个文件就可以运行。9.2嵌入式数据库的分类9.2.2基于文件方式9.2嵌入式数据库的分类9.2.3基于网络的嵌入式数据库

根据数据库和应用存放的位置,可将嵌入式数据库分为本地和网络数据库。

嵌入式网络数据库系统

在嵌入式网络数据库中,数据放在远程服务器上。客户端通过网络协议,访问远程数据信息。实际上,嵌入式网络数据库是把功能强大的远程数据库映射到本地数据库,使嵌入式设备访问远程数据库就像访问本地数据库一样方便。嵌入式网络数据库主要包括:客户端、通信协议和远程服务器。9.2嵌入式数据库的分类9.2.3基于网络的嵌入式数据9.2嵌入式数据库的分类9.2.3基于网络的嵌入式数据库

嵌入式网络数据库系统的特点

嵌入式网络数据库系统具有如下的特点:

1.无需解析SQL语句;

2.支持更多的SQL操作;

3.客户端小,无需支持可剪裁性。

4.有利于代码重用,可移植性强。目前,通过GPRS/CDMA的通信速度较慢,因此嵌入式网络数据库只应用于数据流量较小的领域。9.2嵌入式数据库的分类9.2.3基于网络的嵌入式数据9.3嵌入式数据库设计技术指标9.3.1嵌入式数据库设计的数据模型

1.按照采集数据,数据分为:

周期性和非周期性。

2.按照数据状态,数据分为:

连续数据对象和离散数据对象。

3.按照数据来源,数据来源主要有三类:

外部设备、用户输入和外部数据。9.3嵌入式数据库设计技术指标9.3.1嵌入式数据库设计9.3嵌入式数据库设计技术指标9.3.1嵌入式数据库设计的数据模型

常见的嵌入式数据库有:关系型和面向对象型等数据模型。1.关系型模型最常见的,最常用的数据模型。着重于整体的吞吐量和平均性能(不适合嵌入式实时系统),但改良数据库的索引机制和并发控制机制可以提高关系模型的实时性能。提供厂商产品特点EmpressEmpressRDBMS可运行在大多数嵌入式操作系统上,支持SQL和可编程接口MicrosoftMSDE一个向上兼容微软数据库的数据库引擎,具有有限的并发处理能力。PolyhedraPolyhedra支持SQL的客户端数据库引擎,可运行在大多数的桌面、服务器和嵌入式系统平台上。SybaseSQLAnywhere支持具有特定查询功能的SQL数据库引擎,可与Sybase的企业级数据库同步。SolidSolidembeded提供对大多数服务器、嵌入式系统的数据库管理功能,具有ODBC、JDBC接口。9.3嵌入式数据库设计技术指标9.3.1嵌入式数据库设计9.3嵌入式数据库设计技术指标9.3.1嵌入式数据库设计的数据模型

2.面向对象模型面向对象模型的基础是将一个对象的相关数据和代码封装为一个单元。一个对象和系统其余部分的所有交互都要通过消息来完成。理论上,面向对象模型比较适合嵌入式实时数据库,但目前向对象技术的数据库比较少。提供厂商产品特点ObjectivityObjectivityDB支持C++、JAVA,支持桌面和服务器操作系统。但目前不支持嵌入式系统,且处理模型较复杂。PersistencePowerTier提供对大多数数据库的接口,支持JavaBeans和C++。POETSoftwarePOETObject提供C++和Java编程接口,以及对象一致性存储机制。9.3嵌入式数据库设计技术指标9.3.1嵌入式数据库设计9.3嵌入式数据库设计技术指标9.3.1嵌入式数据库设计的数据模型

3.其他数据模型 著名的嵌入式数据库BerkeleyDB采用的数据模型,即不属于关系型,也不属于面向对象型,采用key/data(关键值/数据)来区分数据。 BerkeleyDB类数据模型简单有效,适合于嵌入式数据库。KeyDataFruitOrangeSportFootballDrinkWater提供厂商产品特点CenturaSoftwareRDM,db.linux开源,RDM链接库和应用程序一同编译。支持主流的嵌入式操作系统。FreeSoftwareFoundationGdbm开源,提供对数据记录的简单API接口,不支持并发的读写访问控制。SleepycatSoftwareBerkeleyDB提供简单的可编程接口,可以按应用需求对数据库进行配置。可运行在桌面、服务器和嵌入式操作系统上。9.3嵌入式数据库设计技术指标9.3.1嵌入式数据库设计9.3嵌入式数据库设计技术指标常见的嵌入式数据库及其特性9.3嵌入式数据库设计技术指标www.常见的嵌入式数据库及BerkeleyDB厂商操作系统内存SleepycatSoftware,Inc.Linux、QNX、Win95/98/NT/2k、VxWorks315KB(FullPackage)网络连接同步安全性NoneNoneNoneAPI开发工具其他特性C/C++、Java、Perl、Tcl、PythonPortabletoanydevelopmenttoolssupportingtheAPIlanguagesB+tree、Hash、FixedandVariablelengthrecord,andPersistentQueueaccessmethods、transactionsupport、databaserecoverabilityBerkeleyDB厂商操作系统内存SleepycatLBirdStepDataBaseEngine3.0

厂商操作系统内存BirdstepTechnologyEPOC、PalmOS、Linux、Elate、VxWorks、OSE、Win95/98/NT/2k/CE、FreeBSD、QNX60K(min.size)网络连接同步安全性ODBC、JDBCSyncMLNoneAPI开发工具其他特性SQL、OLE-DB、ADO、JNIandJDBC、COMobjects、C++、XML、PythonWrapperBirdwalk、VisualC++XMLDOM、XMLparsing、Xpath、UnicodeBirdStepDataBaseEngine3.0厂Cloudscape

厂商操作系统内存Cloudscape/InformixEPOC、Linux、AIX、Win98/NT/CE、Solaris、HP-UX、OS/400、MacOS2MB网络连接同步安全性JDBC、HTTP、HTTPSbi-directionaData、OnewaySchemaand

applicationSignedJARfiles、LDAPandNIS+、SSLsupport、DES64-encryptionAPI开发工具其他特性JDBC、SQL-92、SQL-JCloudview、IBMVisualAge、VisualCafeTriggers、Autoreop-timization、Multico-lumnBTreeindexes、Transactionrollbackandisolation、Multi-threadconnections、ReferentialIntegrityCloudscape厂商操作系统内存CloudscapeEEmbeddedServer厂商操作系统内存PointBaseEPOC、WindowsCE、WindriverVxWorks、PalmOS800KB网络连接同步安全性JDBC、HTTPOneway,bi-directional,"hub&spoke"orP2P、SynchronizeswithOracle,IBM,DB2,MSSQLSQLSecurity&authentication;40/128-bitdataencryptionAPI开发工具其他特性JDBC、SQL-92、SQL-99VisualCafé、MicrosoftJ++、IBMVisualAge、InpriseJBuilderRow-Levellocking;FullReferentialIntegrity;EmbeddedServer厂商操作系统内存PointBaEmpressRDBMS厂商操作系统内存EmpressSolaris、SunO/S、HP-UX、AIX、DigitalUNIX、IRIX、WinNT、Linux、SCOQNXLYNXRTOS800KB(min.size)网络连接同步安全性ODBC;JDBCDataReplicationNoneAPI开发工具其他特性SQL、C/C++、FORTRAN、JDBCEmpHTML、EmpPerl、EmpTcl/Tk、JumpStartHTMLInterface、ReplicationServerEmpressRDBMS厂商操作系统内存EmpressSoEmpressRDBMS厂商操作系统内存MobileEditionEPOC、WindowsCE、WindriverVxWorks、PalmOS800KB网络连接同步安全性JDBC、HTTPOnewaybidirectional,"hub&spoke"orP2P;

SynchronizeswithOracle,IBM,DB2,MSSQLSQLSecurity、40/128-bitdataencryptionAPI开发工具其他特性JDBC、SQL-92、SQL-99VisualCafé、MicrosoftJ++、IBMVisualAge、InpriseJBuilderRow-Levellocking;FullReferentialIntegrityEmpressRDBMS厂商操作系统内存MobileEdOracle8iLite

厂商操作系统内存OracleWinCE、PalmOS、EPOC32750MB(WithallFunctionality)网络连接同步安全性ODBC、JDBC、iConnectthroughNET8,HTTP,wirelessandFTPDataReplication、SubquerySnapshots无API开发工具其他特性SQL-92、SQLJ、OKAPI、JavaAccessClasses、JDBCVisualC++、WindowsCEemulationmode、Oracle'sJDeveloper,JBuilde、VisualCafé、VisualBasic、Delphi;OracleLiteDesigner/NavigatorWeb-to-goSDKJavaStoredProceduresandTriggers;JavaServlet;Row-levellocking;Web-to-goApplicationBuilderOracle8iLite厂商操作系统内存OracleWPolyhedraReal-TimeEmbeddedDatabase厂商操作系统内存PolyhedraWindows98/NT/2k、LinuxSolaris、OSE、VxWorks-网络连接同步安全性ODBC、JDBC、HTTPMaster,Standby&ReplicasmodesofreplicationSQLSecurity&authenticationAPI开发工具其他特性SQL;JDBC;OLE/DB;C/C++Callback;GenericDeviceInterface(GDI)VisualBasic;VisualC++ActiveQueries;ControlLanguagescripting;JournalControlProcess;WebDatabaseServer;HistorianPolyhedraReal-TimeEmbeddedDSOLIDEmbeddedEngine

厂商操作系统内存SolidInformationTechnology

Windows95/98/NT/2k;Linux;VxWorks;Solaris;HP-UX;FreeBSD;ChorusOS;EPOC;EneaOS450KB(min.size)2MB(max.size)

网络连接同步安全性ODBC、JDBCbi-directional无API开发工具其他特性SQL-92;JDBCN/AStoredproceduresandcommands;Unions;Symmetricmulti-processing;Triggers;Multithreadprocessing

SOLIDEmbeddedEngine厂商操作系统内存SQLAnywhere

厂商操作系统内存SybaseWindowsCE、PalmOS、VxWorks、DOS、EPOC50K(min.size)网络连接同步安全性ODBC、DBC、Sybase

OpenClientMobilinksynchronizationthroughTCP/IPtoanyODBCcompliantdatabase;SybaseSQLRemotethroughFTPoremail;RiverBedScoutSync;PalmHotSync128-bitdataencryptionAPI开发工具其他特性EmbeddedSQL;Transact-SQL;SQL-92;C++;JDBCSybasePowerBuilder;VisualC++;CodeWarrior;VisualBasic;Delphi;Metrowerks;Tornado

SQLandJavaTriggersandStoredProcedures;ReferencialandentityIntegrity;cascadingdeletesandupdates;…SQLAnywhere厂商操作系统内存SybaseWiSQLServer2000WindowsCEEdition

厂商操作系统内存MicrosoftWindowsCE1MBWithallFunctionality网络连接同步安全性RemoteDataAccessthroughHTTPMergeReplication;RemoteDataAccess128-bitdataencryptionduringsynchronization;RSA128-bitdatafileencryption;DatabasepasswordauthenticationAPI开发工具其他特性Transact-SQL;ADOCE;OLEDBCEeMbeddedVisualTools3.0;PlatformBuilderFullreferencialIntegrity;Cascadingdeletesandupdates;DDL/DML;32indexespertable;NestedtransactionsSQLServer2000WindowsCEEdiSQLBase7.5厂商操作系统内存CenturaWin9X,NT

N/A网络连接同步安全性ODBC;

JDBCNonePasswordAuthentication;

40-bitdataencryptionusingcryptogramandDESAPI开发工具其他特性SQL;C/C++(DLLandlinked);

JDBC

SQLBaseEmbeddedDeploymentKit;

VisualBasicSynonyms;Views;StoredproceduresandTriggers;Nestedselects;Unions;ReferentialIntegritySQLBase7.5厂商操作系统内存CenturaWinTimesTen4.3

厂商操作系统内存TimesTenPerformanceSoftware

VxWorks5MB网络连接同步安全性ODBCN-wayreplication;P2PorcascadingreplicationClient/ServerAuthentication

API开发工具其他特性SQL;

C/C++

N/ASNNPevents&alerts;In-Memorydatabase;Checkpoints&DataRecovery

TimesTen4.3厂商操作系统内存TimesTen9.3嵌入式数据库设计技术指标9.3.2实时性

嵌入式系统的任务有一定的实时限制,尤其是硬实时任务的截止期限必须明确保证,否则会给系统带来灾难性后果,或者有较大的副作用。而影响实时性的主要因素有四方面:

1.数据和资源的冲突

2.事务间的相互依赖性

3.新事务的动态产生

4.磁盘数据I/O9.3嵌入式数据库设计技术指标9.3.2实时性9.3嵌入式数据库设计技术指标9.3.3可靠性

嵌入式系统可能需要在无人工干预的情况下运行,数据库系统必须能够实时检查运行状态,自动识别和纠正错误,比如:

●某个事务运行失败时是否能用替代事务继续执行;

●由于缺少空间导致写失败,系统应该清除一部分空间以使写操作成功;

●如果网络连接失败,系统必须能透明地将客户机改道到其它连接等。9.3嵌入式数据库设计技术指标9.3.3可靠性9.3嵌入式数据库设计技术指标9.3.4并发控制

数据库的事务处理要遵循ACID。实时数据库要保证数据正确性,同时保证时间的一致性,其并发控制相对于传统数据库要更加复杂:

1.很多情况可能会导致实时事务超出截止时限。

2.并发控制中任务抢占机制可能导致事务读取的数据时态上不一致。

3.并发控制需要保证数据的完整性。

4.当超载时,必然有某些事务不能在截止期内完成。原子性(Atomicaity)一致性(Consistency)独立性(Isolation)持久性(Durability)(1)原子性

事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。

事务的原子性要求,如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行。就是说事务的操纵序列或者完全应用到数据库或者完全不影响数据库。这种特性称为原子性。

假如用户在一个事务内完成了对数据库的更新,这时所有的更新对外部世界必须是可见的,或者完全没有更新。前者称事务已提交,后者称事务撤消(或流产)。DBMS必须确保由成功提交的事务完成的所有操纵在数据库内有完全的反映,而失败的事务对数据库完全没有影响。

(2)一致性

事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。这种特性称为事务的一致性。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。

一致性处理数据库中对所有语义约束的保护。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。例如,当数据库处于一致性状态S1时,对数据库执行一个事务,在事务执行期间假定数据库的状态是不一致的,当事务执行结束时,数据库处在一致性状态S2。

(3)分离性

分离性指并发的事务是相互隔离的。即一个事务内部的操作及正在操作的数据必须封锁起来,不被其它企图进行修改的事务看到。

分离性是DBMS针对并发事务间的冲突提供的安全保证。DBMS可以通过加锁在并发执行的事务间提供不同级别的分离。假如并发交叉执行的事务没有任何控制,操纵相同的共享对象的多个并发事务的执行可能引起异常情况。

DBMS可以在并发执行的事务间提供不同级别的分离。分离的级别和并发事务的吞吐量之间存在反比关系。较多事务的可分离性可能会带来较高的冲突和较多的事务流产。流产的事务要消耗资源,这些资源必须要重新被访问。因此,确保高分离级别的DBMS需要更多的开销。

(4)持久性

持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。即一旦一个事务提交,DBMS保证它对数据库中数据的改变应该是永久性的,耐得住任何系统故障。持久性通过数据库备份和恢复来保证。

持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。即对已提交事务的更新能恢复。一旦一个事务被提交,DBMS必须保证提供适当的冗余,使其耐得住系统的故障。所以,持久性主要在于DBMS的恢复性能。9.3嵌入式数据库设计技术指标9.3.4并发控制9.3嵌入式数据库设计技术指标9.3.5数据索引

基本的索引方式有两类,顺序索引和散列索引。适于嵌入式数据库的索引机制有:

1.B+树索引

2.AVL树和T树索引

3.散列表索引9.3嵌入式数据库设计技术指标9.3.5数据索引9.3嵌入式数据库设计技术指标9.3.6查询优化

较好地解决移动环境中客户机频繁的断接性问题的方法有两种:

客户缓存中存放的是数据库的一个副本,是整体数据库的一个子集。在客户机断接的情况下,用户可以从客户缓存中查询到全部或部分数据。

数据广播是将客户经常访问的热点数据以周期性广播的方式发送给客户机,即使是客户机处于断接情况下,同样可以收到服务器广播的数据。9.3嵌入式数据库设计技术指标9.3.6查询优化9.3嵌入式数据库设计技术指标9.3.7备份与恢复

嵌入式数据库中可以采用延迟的数据库修改策略,即采用REDO型日志。在系统中只需要记录两种类型的日志:

更新记录的日志和记录事务处理有关的日志。检验点可以采用模糊检验点的策略。9.3嵌入式数据库设计技术指标9.3.7备份与恢复9.4嵌入式数据库管理系统设计

考虑到与常规数据系统的兼容,嵌入式数据库可以采用标准的SQL92接口。子集元素=><<=>=!=notandor).变量数字+-*/%INANYALLBETWEENLIKEISNULLindexdatabase字符串逻辑子查询集合逗号creatinsertdeleteupdateselect9.4嵌入式数据库管理系统设计考虑到与常规9.4嵌入式数据库管理系统设计嵌入式数据库管理系统的设计步骤如下:了解数据库将要运行的软硬件环境确定设计目标嵌入式数据库体系结构设计设计实施方案根据实现方案实施数据库系统的设计支持SQL92子集;支持索引;整个系统可移植性强;支持可剪裁性(模块化);向上兼容性;具有良好的实时性;系统具有微内核结构;系统占用的内存、磁盘空间较小。物理层设计逻辑层设计用户接口层设计基本方案设计针对物理层结构的方案设计针对逻辑层结构的方案设计针对用户接口层结构的方案设计开发语言可剪裁性向上兼容性数据模型9.4嵌入式数据库管理系统设计嵌入式数据库管理系统的设计步9.5嵌入式数据库应用设计数据库应用设计分为几个阶段进行:1.分析和初始设计

建立能够满足业务需求的系统设计 为项目组所有成员建立公用的设计图2.建立数据库模型

映射模型 设计标准化3.优化数据库模型9.5嵌入式数据库应用设计数据库应用设计分为几个阶段进行:9.5嵌入式数据库应用设计数据库应用设计分为几个阶段进行:4.数据库设计 要注意以下几点: (1)主键不能为空; (2)域(属性类型); (3)多对多关联的实现; (4)一对多关联的实现; (5)面向对象设计时的一些问题; (6)不要用相同的属性来实现多个关联角色。5.数据库的物理实现

应重点考虑: (1)数据库大小; (2)数据库运行的环境; (3)数据的划分; (4)应用程序如何与数据库通信。9.5嵌入式数据库应用设计数据库应用设计分为几个阶段进行:9.6几种嵌入式数据库9.6.1非开源嵌入式数据库MiniSQLMiniSQL是一种小型关系数据库管理系统,占用资源少,由于是基于资源有限的嵌入式环境应用设计,所以不支持某些标准SQL的功能。OpenBASEMiniOpenBASEMini具有微小内核结构,最小的应用系统可以达到50K左右;提供了对标准SQL的支持;具有事务处理功能等优点。支持WinCE和PalmOS。9.6几种嵌入式数据库9.6.1非开源嵌入式数据库9.69.6几种嵌入式数据库9.6.1非开源嵌入式数据库InfoplusInfoplus是ASPEN公司设计的一款实时数据库平台,可以通过该公司的Active控件与浏览器相连,在WEB上实时浏览查询数据库。

Infoplus的核心是Setcim,具有透明的、开放式的访问全部、实时、历史和归档的数据的功能。Setcims具有极大的灵活性。基本数据结构可修改,或者用户可以重建自己的数据结构来满足需要,通过重建和修改,提供一种完全灵活的数据库性能。此外,Infoplus平台丰富的外层产品使得Setcim的功能异常强大。9.6几种嵌入式数据库9.6.1非开源嵌入式数据库9.69.6几种嵌入式数据库9.6.1非开源嵌入式数据库IndustrialSQLServer

InSQLServer是全球最流行的工厂实时/历史数据库之一,已经成功安装超过两万套,是Wonderware工业软件平台中的历史记录数据库。9.6几种嵌入式数据库9.6.1非开源嵌入式数据库9.69.6几种嵌入式数据库9.6.1非开源嵌入式数据库IndustrialSQLServer集成以下技术:

IndustrialSQL进一步利用了内嵌的MicrosoftSQLServer2000:对XML的支持;用于收发电子邮件的Exchange接口;用于在Internet上发布信息的InternetInformationServer;用于将信息分发到其它MicrosoftSQLServer或Oracle数据库应用程序的复制与分发服务等。例如,产品温度过高时可能会触发:相关标记值的快照;发送电子邮件给“生产管理部”;记录任何数量的标记的修改时间或值的死区;执行SQL查询;或对标记组进行汇总计算。系统也可简单地记录事件发生时间。9.6几种嵌入式数据库9.6.1非开源嵌入式数据库9.69.6几种嵌入式数据库IndustrialSQLServer

与IndustrialApplicationServer无缝集成强大的查询模式可以简化数据查询有效的数据存储对慢速与/或断续的数据网络的支持

MicrosoftWindows验证方式以及提高的系统日志高性能的历史数据库加速了来自上千个传感器的信息流面向任何应用规模的灵活性随时可用的易用性可以从任何来源采集数据集成强大的工具简单和快速的配置强大的过程事件监视对重要应用的高可用性强大的远程系统管理符合FDA21CFRPart11

远程管理9.6几种嵌入式数据库Industria9.6.2开源嵌入式数据库BerkeleyDB和SQLiteBerkeleyDB

1.开源的内嵌式数据库管理系统,能够为应用程序提供高性能的数据管理服务。应用它程序员只需要调用一些简单的API就可以完成对数据的访问和管理。(不使用SQL语言)

2.BerkeleyDB为许多编程语言提供了实用的API接口,包括C、C++、Java、Perl、Tcl、Python和PHP等。所有同数据库相关的操作都由BerkeleyDB函数库负责统一完成。

3.BerkeleyDB轻便灵活(Portable),可以运行于几乎所有的UNIX和Linux系统及其变种系统、Windows操作系统以及多种嵌入式实时操作系统之下。BerkeleyDB被链接到应用程序中,终端用户一般根本感觉不到有一个数据库系统存在。

4.BerkeleyDB是可伸缩(Scalable)的,这一点表现在很多方面。Databaselibrary本身是很精简的(少于300KB的文本空间),但它能够管理规模高达256TB的数据库。它支持高并发度,成千上万个用户可同时操纵同一个数据库。BerkeleyDB能以足够小的空间占用量运行于有严格约束的嵌入式系统。

BerkeleyDB在嵌入式应用中比关系数据库和面向对象数据库要好,有以下两点原因:(1)因为数据库程序库同应用程序在相同的地址空间中运行,所以数据库操作不需要进程间的通讯。在一台机器的不同进程间或在网络中不同机器间进行进程通讯所花费的开销,要远远大于函数调用的开销;(2)因为BerkeleyDB对所有操作都使用一组API接口,因此不需要对某种查询语言进行解析,也不用生成执行计划,大大提高了运行效。9.6几种嵌入式数据库9.6.2开源嵌入式数据库BerkeleyDB和SQLi9.6.2开源嵌入式数据库BerkeleyDB和SQLiteSQLite

1.支持事件,不需要配置,不需要安装,也不需要管理员;

2.支持大部分SQL92;

3.一个完整的数据库保存在磁盘上面一个文件,同一个数据库文件可以在不同机器上面使用,最大支持数据库到2T,字符和BLOB的支持仅限制于可用内存;

4.整个系统少于3万行代码,少于250KB的内存占用(gcc),大部分应用比目前常见的客户端/服务端的数据库快,没有其它依赖

5.源代码开放,代码95%有较好的注释,简单易用的API。官方带有TCL的编译版本。9.6几种嵌入式数据库9.6.2开源嵌入式数据库BerkeleyDB和SQLi9.6几种嵌入式数据库9.6.2开源嵌入式数据库BerkeleyDB和SQLiteSQLite采用C语言源码,其源代码完全开放。诞生于2000年,2006年推出了SQLite3。具有以下特性:1.支持ACID事务;2.零配置——无需安装和管理配置;3.储存在单一磁盘文件中的一个完整的数据库;4.数据库文件可在不同字节序的机器间共享;支持数据库大小至2TB;5.代码量小,全部源码大致3万行,250KB;6.比目前流行的大多数据库操作要快;7.支持事务功能和并发处理,应用Transaction既保证了数据的完整性,也会提高运行速度,;8.独立,没有额外依赖。特征BerkeleyDBSQLite开源是是源码C和JavaC大小300kb250kb(3万行c代码)可管理数据大小256TB2TB支持SQL标准不支持支持ANSISQL92标准调用方式数据库自带函数SQL语句存储模式Btree、Hash、Queue和RecnoBtree模式适用系统UNIX/POSIXsystems、Win32以及嵌入式操作系统WinCE、VxWorkPOSIX与Win32系统是否免费否是9.6几种嵌入式数据库9.6.2开源嵌入式数据库Berk9.6几种嵌入式数据库9.6.3SQLiteSQLite不同于其他大部分的SQL数据库引擎,因为它的首要设计目标就是简单化:易于管理易于使用易于嵌入其他大型程序易于维护和配置9.6几种嵌入式数据库9.6.3SQLiteSQLite9.6几种嵌入式数据库

SQLite简介SQLite的优势:内存占用量小比MySQL(2倍),PostgreSQL(20倍)快ACID兼容(原子性,一致性,独立性,可持久性),支持视图,子查询,触发器单个库文件中包含数据库引擎与接口,且其运行不依赖其它库可以将数据放进单个文件为C/C++,Perl,PHP等应用提供了接口免费允许为SQL命令集动态添加自定义函数(简单函数及聚集函数),而无需重编SQLite库9.6几种嵌入式数据库SQLite简介S9.6几种嵌入式数据库

SQLite简介SQLite的缺点(1)事务处理并发性SQLite通过数据库级上的独占性和共享锁来实现独立事务处理,这意味着当多个进程或线程在同一时间可以从数据库读取数据,但是只能有一个可以同时写入,在写入之前,必须获得独占锁,其它的读操作不允许发生。(2)性能在创建索引(CREATEINDEX)和删除表(DELTETABLE)时明显比其它数据库慢。(3)用户管理/安全数据库的访问是基于操作系统对文件的控制来控制的,不能通过用户来区分数据库中的不同数据库。9.6几种嵌入式数据库SQLite简介SSQLite的内部结构在内部,SQLite由以下几个组件组成:SQL编译器、内核、后端以及附件。SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展SQLite的内核变得更加方便。所有SQL语句都被编译成易读的、可以在SQLite虚拟机中执行的程序集。1、接口将SQL语句传给SQL编译器2、SQL编译器选将SQL分解成为Token3、将Token传递给解析器进行解析4、由代码生成器生成虚拟机代码5、由虚拟机执行生成的程序6、SQLite库在磁盘上以B树形式组织(每个表和索引都有自己单独的B树,所有的B树都保存的同一个文件里面)7、OS层的操作9.6几种嵌入式数据库

SQLite简介SQLite的内部结构在内部,SQLite由以下几9.6几种嵌入式数据库

SQLite简介因为SQLite数据库几乎不需要管理,因此对于那些无人值守运行或无人工技术支持的设备或服务,SQLite是一个很好的选择.SQLite能很好的适用于手机,PDA,机顶盒,以及其他仪器。作为一个嵌入式数据库它也能够很好的应用于客户端程序。9.6几种嵌入式数据库SQLite简介因SQLite命令行接口

SQLite除库本身外,还包含命令行接口,使得用户可以在命令行模式下使用SQLite。在SQLite安装目录下的$SQLITE_HOME/bin可以找到sqlite/sqlite3可执行文件。9.6几种嵌入式数据库

SQLite数据库命令行模式的使用运行方式:sqliteDBFile //DBFile为你要操作的数据库名shell>sqlite3test.db得到提示符sqlite>就能输入命令执行操作。sqlite>createtableemployee(idintegerprimarykey,nametext,gendertext,ageinteger);运行.help(sqlite命令行提供的命令都以”.”开头),可以看到sqlite命令行接口提供的功能.SQLite命令行接口9.6几种嵌入式数据库SQLite命令行功能简介.databases 列出数据库文件名.tables?PATTERN? 列出?PATTERN?匹配的表名.importFILETABLE 将文件中的数据导入的文件中.dump?TABLE? 生成形成数据库表的SQL脚本.outputFILENAME 将输出导入到指定的文件中.outputstdout 将输出打印到屏幕.modeMODE?TABLE? 设置数据输出模式(csv,html,tcl…

.nullvalueSTRING 用指定的串代替输出的NULL串.readFILENAME 执行指定文件中的SQL语句.schema?TABLE? 打印创建数据库表的SQL语句.separatorSTRING 用指定的字符串代替字段分隔符.show 打印所有SQLite环境变量的设置.quit 退出命令行接口9.6几种嵌入式数据库

SQLite数据库命令行模式的使用SQLite命令行功能简介9.6几种嵌入式数据库几种嵌入式数据库

SQLite的C/C++接口SQLite还提供了多个编程接口,以供程序员在C/C++程序中调用。SQLite最新的版本是3.0,部分函数的接口和之前的版本有改变。SQLite3.0一共有83个API函数,此外还有一些数据结构和预定义(#defines)。不过最简单的程序只要使用三个函数就可以完成:sqlite3_open(),sqlite3_exec(),和sqlite3_close()。9.6几种嵌入式数据库SQLite的C/C9.6几种嵌入式数据库

SQLite的C/C++接口打开关闭数据库函数原型:/*打开一个名为char*的数据库,sqlite3是得到的数据库结构体的指针,返回一个整数错误代码*/intsqlite3_open(constchar*,sqlite3**);/*关闭数据库*/intsqlite3_close(sqlite3*);9.6几种嵌入式数据库SQLite的C/C9.6几种嵌入式数据库

SQLite的C/C++接口执行SQL语句函数原型:staticintcallback(void*NotUsed,intargc,char**argv,char**azColName);

intsqlite3_exec(sqlite3*db,constchar*sql,callback,void*NotUsed,char**zErrMsg);

db:需要操作的数据库;*sql:用户输入的SQL命令,一次可以编译和执行零个或多个SQL语句。每执行一条SQL语句,并且返回一个结果,就执行一次回调函数callback;callback:回调函数;*NotUsed:在回调函数callback中有介绍;**

zErrMsg:返回的错误信息。9.6几种嵌入式数据库SQLite的C/C9.6几种嵌入式数据库

SQLite的C/C++接口回调函数callback回调函数callback必须是static的,也可以是类的成员函数。其中的形参argc,argv,azColName是sqlite_exec帮我们填写的。argc是查询语句返回的字段数目;argv是查询到的一条记录的各个字段;zaColName是每一列的域名。NotUsedsqlite3_exec()和callback()都具有的一个形式参数,我们可以从sqlite3_exec()传递一个对象的指针到callback()中,再把void*强制转换成原来的类型,然后来进行一列操作。不需要使用的时候就在sqlite3_exec()中设置为NULL。staticintcallback(void*NotUsed,intargc,char**argv,char**azColName)

9.6几种嵌入式数据库SQLite的C/C9.6几种嵌入式数据库

SQLite的C/C++接口比如这样一张表MYTABLEIDNAMEADDRESSAGE1trulyliuBeiJing252sunfyerBeiJing25执行select*fromMYTABLE

当查询到第一条纪录,回调函数被运行时argc=4

总共4个字段,argv和zaColName的值分别如下表:argv[0]argv[1]argv[2]argv[3]1trulyliuBeiJing25zaColName[0]zaColName[1]zaColName[2]zaColName[3]IDNAMEADDRESSAGE9.6几种嵌入式数据库SQLite的C/C9.6几种嵌入式数据库

SQLite的C/C++接口表MYTABLEIDNAMEADDRESSAGE1trulyliuBeiJing252sunfyerBeiJing25当查询到第二条纪录,回调函数被运行时argc=4

总共4个字段,argv和zaColName的值分别如下表:argv[0]argv[1]argv[2]argv[3]2sunfyerBeiJing25zaColName[0]zaColName[1]zaColName[2]zaColName[3]IDNAMEADDRESSAGE9.6几种嵌入式数据库SQLite的C/C9.6几种嵌入式数据库

SQLite的C/C++接口SQLite最大的特色之一就是可以用户定义函数。用户自定义函数可以像系统内置函数一样可以在注册之后像系统内置函数一样在SQL语句中使用。用户使用自定义函数类似存储过程,方便用户对常见功能的调用,也加快了执行速度。用户自定义函数整体上可以分为两种:简单函数和聚集函数。

intsqlite3_create_function(

sqlite3*, //数据库句柄

constchar*zFunctionName, //自定义的函数名

intnArg, //表明自定义函数的参数个数

inteTextRep, //表明传入参数的编码形式

void*pUserData,//在函数实现中用sqlite_user_data()得到/*回调函数:普通的函数只需要设置xFunc参数,而把

xStep和

xFinal设为NULL.聚合函数则需要设置

xStep和

xFinal参数,然后把

xFunc设为NULL*/

void(*xFunc)(sqlite3_context*,int,sqlite3_value**),

void(*xStep)(sqlite3_context*,int,sqlite3_value**),

void(*xFinal)(sqlite3_context*));

9.6几种嵌入式数据库SQLite的C/C9.6几种嵌入式数据库

SQLite的C/C++接口用户自定义简单函数:该函数在注册函数时,将用户的数据传入,然后调用自定义函数时,返回传入的值。在下面的例子中,将传入的数据插入到数据库中。voidget_key_func(sqlite3_context*ctx,intdummy1,sqlite3_value**dummy2){sqlite3_re

温馨提示

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

评论

0/150

提交评论