嵌入式移动数据库应用研究
“极致的崩溃”通过精心收集,向本站投稿了6篇嵌入式移动数据库应用研究,以下是小编为大家准备的嵌入式移动数据库应用研究,仅供参考,欢迎大家阅读。
篇1:嵌入式移动数据库应用研究
嵌入式移动数据库应用研究
摘要:随着移动计算技术的发展,移动数据库逐步走向应用,在嵌入式操作系统中移动数据库更显示出其优越性。本文分析移动数据库的特点、体系结构;介绍移动数据库系统中的一些关键性技术,并指出了移动数据库应用方向。关键词:嵌入式系统;移动数据库;移动计算;事务处理
0引言
数据库技术一直随着计算的发展而不断进步,随着移动计算时代的到来,嵌入式操作系统对移动数据库系统的需求为数据库技术开辟了新的发展空间。随着智能移动终端的普及,嵌入式移动数据库技术目前已经从研究领域逐步走向广泛的应用领域。
在数据库系统的研究历史中,传统的分布计算与分布式数据库的研究是基于有线网络和固定主机的。这些都采用了一些默认的隐含假设,例如固定网络连接、对等通信代价、主机节点固定不变等。但进入20世纪90年代以来,随着移动通信技术和网络技术迅速发展,加之移动计算机和移动通信设备的大量普及,许多计算节点可以在移动过程中与网络建立连接,使得上述假设条件不成立。移动计算环境具有移动性、低带宽、频繁断接性、网络通信的非对称性、电源电力的有限性等特点,使得传统分布式数据库中的方法和技术不能直接应用于移动数据库。
1嵌入式移动数据库的定义
从数据库技术的发展过程来看,计算环境和数据库技术基本保持着一种同步发展的态势,互相影响、互相促进。移动计算的概念是对“任何时间、任何地点的立即通讯”的扩展。在分布式计算的基础上,计算环境进一步扩展为包含各种移动设备、具有无线通信能力的服务网络,构成了一个新的计算环境,即移动计算环境。相应地,数据库系统先后出现了集中式数据库系统、分布式数据库系统、B/A/S多层结构的数据库系统、嵌入式数据库和移动数据库。当然,这些系统也可以共存在同一个计算环境中。
一般说来,嵌入式移动数据库可以从系统的体系结构方面来定义:嵌入式移动数据库系统是支持移动计算或某种特定计算模式的数据库管理系统,数据库系统与操作系统、具体应用集成在一起,运行在各种智能型嵌入设备或移动设备上。其中,嵌入在移动设备上的数据库系统由于涉及数据库技术、分布式计算技术,以及移动通讯技术等多个学科领域,目前已经成为一个十分活跃的研究和应用领域——嵌入式移动数据库或简称为移动数据库(EMDBS)。
2嵌入式移动数据库的体系结构及其主要特点
2.1体系结构
在传统的分布式计算系统中,各个计算节点之间是通过固定网络连接并保持网络的持续连接性的,而移动计算系统改变了这种假设条件。移动计算系统是固定节点和移动节点构成的分布计算系统。
移动计算的网络环境具有鲜明的特点:移动性、断接性、带宽多样性、可伸缩性、弱可靠性、网络通信的非对称性、电源能力的局限性等。移动环境中的分布式数据库就是移动数据库。它是传统分布式数据库系统的扩展,可以看作客户与固定服务器节点动态连接的分布式系统。移动数据库系统的体系结构如图1所示。
其中,移动客户机MC(Mobile Client)包括便携式电脑、PDA等;MSS(Mobile Support Station)支持移动计算的固定节点,具有无线通信接口;FH(Fixed Host)没有无线通信接口,安装有数据库和数据库管理系统。
2.2主要特点
移动数据库的计算环境是传统分布式数据库的扩展,它可以看作客户端与固定服务器节点动态连接的分布式系统。因此移动计算环境中的数据库管理系统是一种动态分布式数据库管理系统。由于移动数据库在移动计算的环境下应用在嵌入型操作系统之上,所以它具有:微小内核结构、对标准SQL的支持、事务管理功能、完善的数据同步机制、支持多种连接协议、完备的数据库管理功能和支持多种嵌入型操作系统的特点和功能需求。
在移动数据库中还需要考虑诸多传统计算环境下不需要考虑的问题,如对断接操作的支持、对位置相关查询的支持、对查询优化的特殊考虑以及对提高有限资源的利用率和对系统效率的考虑等等。为了有效地解决上述问题,诸如复制与缓存技术、移动事务处理、数据广播技术、移动查询处理与查询优化、位置相关的数据处理及查询技术、移动信息发布技术等技术仍在不断的发展和完善,它们会进一步促进移动数据库技术的发展。
3嵌入式移动数据库的关键技术
移动数据库涉及的理论和技术含盖了当今通信、计算机和嵌入式系统的最新成果,其中在移动环境下如何进行数据管理是实现移动数据库的关键。根据目前国际有关机构研究的研究表明这些关键技术主要集中在以下几个方面。
3.1数据复制与缓存
复制是在多个移动节点上维护数据的备份,包括服务器之间的复制和移动计算机上保存数据库的复制。一般前者称为复制后者称为缓存。复制的主要目的是提高分布式数据库系统的可用性、可靠性和访问性能。首要的问题是如何维护多个复制节点上数据状态的一致性。按照维护复制一致性的方式来划分,现有的复制协议可以分为严格一致协议和弱一致协议两种。严格一致协议要求任何时刻所有数据库的复制都是一致的;而弱一致协议允许各个复制之间存在暂时的不一致,但这种不一致总能够保持在一定的界限之内,而且总是能够趋于一致(收敛性)。目前,针对移动计算特点开展数据复制/缓存技术的研究最具代表性的是:J. Gray的两级复制机制、CODA系统以及缓存失效报告广播技术等,另外,SYBASE公司的移动数据库产品SQL ANYWHERE和SQL REMOTE也采用该技术来支持移动计算环境。
3.2数据广播
通俗地讲,数据广播是指在移动计算环境中,利用客户机与服务器通信的不对称性,以周期性广播的形式向客户机发送数据。其最大的优点是,广播开销不依赖移动用户数量的变化而变化,借助数据广播,可以在一定程度上解决移动数据库系统的断接问题。数据广播的`研究可分为服务器和客户机两个方面:服务器主要考虑如何组织广播数据,即数据广播的调度;移动节点主要考虑如何利用本地缓存进一步减少查询广播数据的时间。在国内,长沙国防科技大学的周兴铭院士对数据广播进行了深入研究,提出了数据广播的多盘调度算法。衡量数据广播调度算法好坏的参数是访问时间和调谐时间。
3.3位置相关查询优化
在移动数据库中,存在着与位置相关信息的查询及更新。查询通常是与位置相关的,即使是同一个问题,在不同的地方,所得查询结果是不同的,如“最近的超市在哪里?”。移动查询优化技术是指在传统分布式数据库查询优化技术的基础上,利用多种方法,消除带宽多样性、断接等因素造成的影响,使查询引擎能够根据当前可用网络条件采取恰当的优化策略;同时,针对移动计算机有限电源能力,合理地组织本地数据库管理、远程数据库访问等耗电能较多的操作,达到节能目的,延长关键数据的可用时间。
采用基于分割的地址更新策略时,由位置服务器维护的移动用户对象包含以下数据成员和方法:
分割集合——记录MSS的分割情况,例如{Cell1,Cell2},{Cell3,Cell4,Cell5};
LOC——记录移动用户最近报告的地址(无线单元的ID),例如Cell1 ;
ERR——移动用户当前所在的分割,例如,若LOC= Cell1 ,则ERR={Cell1,Cell2};
loc——一个方法,用于返回该用户的实际地址,即上面介绍的地址查询过程。
在移动查询的应用中,有各种各样涉及地址的查询,例如“请寻找一家校园附近的超市”,“查找X, Y, Z,这三人都在同一条公路上,且Y在X与Z之间”,等等。一般地,可以把这一类地址相关查询表示为:
SELECT x1 ,x2 ,…, xn
FROM Users
WHERE (x1.loc=l1 ∧…∧ xn.loc=ln ) ∧ C(l1,…,ln ) ∧ W(x1 ,…, xn )
其中C(l1, …, ln )是关于地址l1, …, ln 的n元约束条件,而 W(x1, …, xn ) 是关于对象x1 ,x2 , …, xn 非地址属性的n元约束条件,Users 是所有移动用户的集合。
3.4移动事务处理
事务处理是数据库管理系统的一个基本功能,主要用于维护数据的一致性,支持多用户的并发访问,使用户可以可靠地查询和更新数据库。一般来说,用户对数据库系统的访问都是通过事务来完成的。在传统的数据库系统中,一个事务由一系列读写操作组成。事务处理必须满足四个准则,即原子性、一致性、隔离性和永久性(简称ACID)。移动计算环境的特点,使传统数据库系统中的事务处理技术不能满足移动事务处理的要求。
通常,将移动客户机发出的事务叫移动事务,它属于分布事务。移动事务处理具有以下特点:
1) 移动性。这不仅指移动事务执行期间,发出事务的移动客户机是移动的,而且事务本身也在相应地移动。
2) 长事务。由于无线网络通信的低带宽、高延迟以及移动客户机的频繁断接性,都可能使移动事务成为长事务。
3) 易错性。由于移动客户机不如固定结点可靠,而且无线网络通信也不如固定网络稳定,因此,与一般事务相比,移动事务更容易出错。
4) 异构性。由于客户机的移动性,移动事务可能要访问分布的异构数据库系统。
总之,移动事务不同于传统事务,传统的ACID模型已不能很好地描述移动事务,需要为移动事务寻找更好的模型。维护数据的一致性和解决过区切换(handoff)问题是移动事务管理的重要任务。
4嵌入式移动数据库的应用方向
移动数据库技术的许多特性都与信息时代的不断进步的需求相吻合, 有着广阔的发展空间。
4.1嵌入式移动数据库在物流领域有着广阔的应用前景
物流的信息化在未来的物流发展中将发挥日益重要的作用,因为及时准确的信息有利于协调生产、销售、运输、存储等业务的展开,有利于降低库存,节约在途资金等。在运输方面,利用移动计算机与GPS/GIS车辆信息系统相连,使得整个运输车队的运行受到中央调度系统的控制。在存储环节,带有嵌入式移动数据库的手持计算机输入的信息通过无线通信网络写入中央数据库,大大提高了工作效率和信息的时效性,有利于物流优化控制。在配送环节,输入手持计算机的数据通过无线网络传入中央数据库。因此,在投递的同时,用户即可查询物品投递的情况。
4.2嵌入式移动数据库为移动银行铺平了道路
在我国,移动用户是最具消费潜力的群体,因此针对移动用户开发的移动银行业务将具有很大的市场潜力,而且能够推动移动电子商务的发展。移动银行可以使客户在异地对自己的帐务进行实时查询、交易,方便、省时,降低成本,同时安全可靠,机动灵活。客户可以在任何时间,任何地点进行交易,节约了去银行的时间。出差或旅游在外仍可享受银行服务。
4.3嵌入式移动数据库非常有助于提高实地调查/工作的效率
煤气、水电等公用事业检查员查验数据就是一个很好的应用实例,目前一般的检查员仍然是将检验的数据记录在纸上。如果利用移动计算机记录和传输数据,遇到纠纷时还可以实时地查询历史记录,这将使得我国的公用事业单位的收费工作大大地改善。
除了上述主要应用之外,移动数据库技术还在零售业、制造业、金融业、医疗卫生等领域展现了广阔的应用前景。随着移动计算、移动数据库和无线数据通信等相关技术迅猛发展,移动数据库将成为信息社会的重要支柱。
5.总结
本文给出嵌入式移动数据库的定义,描述了嵌入式移动数据库的体系结构并简单分析它的特点,然后详细分析了嵌入式移动数据库的关键技术,最后展望了嵌入式移动数据应用前景。嵌入式移动数据的相关技术研究不断取得进步,这为嵌入式移动数据的成熟应用打下了坚实的基础。
参考文献
1 李东,曹忠升,冯玉才,等. 移动数据库技术研究综述[J]. 计算机应用研究,(10): 4~7
2 Madria S K,Mohania M,et al. Mobile data and transaction management. Information Science 141 () 279~309
3 Antonio Si, Hong va Leng. Query optimization for broadcast database. Data & Knowledge Engineering 29 () 351~380
4 王珊,丁治明,张孝. 移动数据库及应用[J]. 计算机应用, 2000,20(9)
篇2:嵌入式移动数据库研究
3.1 嵌入式移动数据库管理系统的功能需求
移动计算环境中的数据库管理系统,是一种动态分布式数据库管理系统。由于嵌入式移动数据库管理系统运行在移动计算的环境之下,应用于嵌入式操作系统之上,所以它有自己的功能需求:
(1)微小内核结构
考虑到嵌入式设备的资源有限,嵌入式移动DBMS应采用微型化技术实现,可在满足应用的前提下,紧缩其系统结构以满足嵌入式应用的需求。
(2)对标准SQL的支持
嵌入式移动DBMS应能提供对标准SQL的支持。支持SQL92 标准的子集,支持数据查询(连接查询、子查询、排序、分组等)、插入、更新、删除多种标准的SQL 语句,以充分满足嵌入式应用开发的需求。
(3)事务管理功能
嵌入式移动DBMS应具有事务处理能力,可自动维护事务的完整性、原子性等特性;支持实体完整性和引用完整性。
(4)完善的数据同步机制
数据同步是嵌入式数据库最重要的特点。通过数据复制,可以将嵌入式数据库或主数据库的变化情况应用到对方,以保证数据的一致性。
(5)支持多种连接协议。
嵌入式移动DBMS应支持多种通信连接协议。可以通过串行通信、T C P /IP、红外传输、蓝牙等多种连接方式,实现与嵌入式设备和数据库服务器的连接。
篇3:嵌入式移动数据库研究
摘要: 嵌入式技术已在人们生活中得到广泛应用;移动计算更是给人们的生活带来了极大的方便。有移动计算技术推动发展的新的数据库技术让人耳目一新。嵌入式移动数据库技术因此产生。主要论述了嵌入式移动数据库的特点及应用,嵌入式移动数据库管理系统(EMDB)的功能需求及特点,嵌入式移动数据库的系统结构。
关键字: 嵌入式 移动计算 嵌入式移动数据库 EMDB 系统结构
1 引言
随着移动计算技术的发展,移动数据库逐步走向应用,在嵌入式操作系统中加入移动数据库,也越来越显示出其重要性。
1.1 嵌入式系统
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。
嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。
1.2 移动计算
移动计算是一种新型的技术,它使得计算机或其它信息设备,在没有与固定的物理连接设备相连的情况下,能够传输数据。移动计算的作用在于,将有用、准确、及时的信息与中央信息系统相互作用,分担中央信息系统的计算压力, 使有用、准确、及时的信息能提供给在任何时间、任何地点需要它的任何用户。移动计算环境比传统的计算环境更为复杂和灵活。 典型的移动计算环境有[1]:
(1) 智能计算设备+ 无线网络。通过无线网络,智能计算设备可以随时进入MCE 主网络;
(2) 智能计算设备+ 调制解调器+ 电话网络。在不同地点, 将调制解调器和附近的电话相连接, 通过电话网进入MCE 主网络;
(3) 移动用户+ 传统工作站+ 传统有线网络。移动用户在不同场地使用静态计算机获得MCE 的服务。
1.3 嵌入式移动数据库
数据库技术一直在随着计算的发展而不断进步。凡是有数据的地方,就要用到数据库来协助管理数据。移动计算也是对数据的处理,离开对数据的管理、处理,计算机就毫无意义。移动计算同时又强调其移动性,传统的PC机要做到移动,同时在苛刻的环境下作到良好的.运作也是不可能的。此时,嵌入式很好的满足了移动计算对移动客户端计算的要求。三者从这一点上结合就产生了当今数据库的一个新的发展空间:嵌入式数据库技术。移动数据库是指支持移动计算环境的分布式数据库。由于移动数据库系统通常应用在诸如掌上电脑、PDA、车载设备、移动电话等嵌入式设备中,因此,它又被称为嵌入式移动数据库系统。
篇4:嵌入式移动数据库研究
3 嵌入式移动数据库管理系统(EMDBMS)的特性
3.1 嵌入式移动数据库管理系统的功能需求
移动计算环境中的数据库管理系统,是一种动态分布式数据库管理系统。由于嵌入式移动数据库管理系统运行在移动计算的环境之下,应用于嵌入式操作系统之上,所以它有自己的功能需求:
(1)微小内核结构
考虑到嵌入式设备的资源有限,嵌入式移动DBMS应采用微型化技术实现,可在满足应用的前提下,紧缩其系统结构以满足嵌入式应用的需求。
(2)对标准SQL的支持
嵌入式移动DBMS应能提供对标准SQL的支持。支持SQL92 标准的子集,支持数据查询(连接查询、子查询、排序、分组等)、插入、更新、删除多种标准的SQL 语句,以充分满足嵌入式应用开发的需求。
(3)事务管理功能
嵌入式移动DBMS应具有事务处理能力,可自动维护事务的完整性、原子性等特性;支持实体完整性和引用完整性。
(4)完善的数据同步机制
数据同步是嵌入式数据库最重要的特点。通过数据复制,可以将嵌入式数据库或主数据库的变化情况应用到对方,以保证数据的一致性。
(5)支持多种连接协议。
嵌入式移动DBMS应支持多种通信连接协议。可以通过串行通信、T C P /IP、红外传输、蓝牙等多种连接方式,实现与嵌入式设备和数据库服务器的连接。
篇5:嵌入式移动数据库研究
2.1 嵌入式移动数据库特点
嵌入式移动数据库在实际应用中必须解决好数据的一致性(复制性)、高效的事务处理、数据的安全性等问题。
(1)数据的一致性
移动数据库的一个显著特点是,移动终端之间以及与服务器之间的连接是一种弱连接。即低带宽、长延迟、不稳定和经常性的断开。为了支持用户在弱环境下对数据库的操作,现在普遍采用乐观复制方法(Optimistic replication 或 Lazy replication)允许用户对本地缓存上的数据副本进行操作。待网络重新连接后再与数据库服务器或其它终端交换数据修改信息,并通过冲突检测和协调来恢复数据的一致性。
(2)高效的事务处理
移动事务处理要解决在移动环境中频繁的、可预见的、拆连情况下的事务处理。为了保证活动事务的顺利完成,必须设计和实现新的事务管理策略和算法,方法如下:
根据网络连接情况来确定事务处理的优先级,网络连接速度高的事务请求优先处理。
根据操作时间来确定事务是否迁移,即长时间的事务操作将全部迁移到服务器上执行,无需保证网络的一直畅通。
根据数据量的大小来确定事务是上载执行还是下载数据副本执行后上载。
事务处理过程中,网络断接处理时采用服务器发现机制还是采用客户端声明机制。
事务移动(如:位置相关查询)过程中的用户位置属性的实时更新。
完善的日志记录策略。
(3)数据的安全性
许多应用领域的嵌入式设备是系统中数据管理或处理的关键设备,因此嵌入式设备上的数据库系统对存取权限的控制比较严格。同时,许多嵌入式设备具有较高的移动性、便携性和非固定的工作环境,也带来潜在的不安全因素。同时某些数据的个人隐私性又很高,因此在防止碰撞、磁场干扰、遗失、盗窃等对个人数据安全的威胁上需要提供充分的安全性保证。保证数据安全的主要措施如下:
对移动终端进行认证,防止非法终端的欺骗性接入。
对无线通信进行加密,防止数据信息泄漏。
对下载的数据副本加密存储,以防移动终端物理丢失后的数据泄密[2]。
2.2 嵌入式移动数据库应用
目前,嵌入式移动数据库有两种应用,可划分为水平应用和垂直应用。所谓水平应用,是指应用方案能够用于多种不同行业,只需要极少的定制工作;而垂直应用则针对特定行业的应用,数据处理具有独特性。与水平应用相比,垂直型应用具有明显的行业特殊性,不同领域的应用之间差别较大,结果表示和服务器数据库的管理也有很大不同。主要涉及保险、银行业、航班信息、政府部门等具体的行业领域。如图所示[3]:
篇6:嵌入式Java运行平台数据库引擎的应用研究
嵌入式Java运行平台数据库引擎的应用研究
摘要:介绍某嵌入式Java运行平台的总体框架;在此基础上,详细讨论为该平台开发的数据库(DB)引擎组件的框架和结构组成,描述该组件实现的SQL子集和数据表达方式以及逻辑算法的设计思路;提出该组件今后的改进设想。关键词:数据库引擎 Java 嵌入式系统
引言
随着嵌入式系统CPU硬件从8位到32位的发展,嵌入式系统软件的开发环境也得到迅猛的发展,编程语言从10多年以前的汇编为主流发展到现在C、C++、Java为主流。另外,面向对象设计技术、组件技术等在嵌入式系统软件设计中的应用也日益引起人们的重视。
在嵌入式系统软件开发领域,Java是一门较新的异军突起的编程语言。其优点是语言本身简洁优美,完全按照面向对象思想设计,并且语言引入许多较为先进的特性,如多线程、自动内存管理和垃圾回收,非常适合于大规模复杂软件系统的开发。其不足点是与硬件结合不够紧密,同时代码运行速度较慢。此外,对于内存的使用,程序难于管理和控制。
由于采用Java编程具有如上所述的众多优点,越来越多的嵌入式系统采用Java技术来构造软件系统。本文在介绍基于日本某自动售货机产品的控制板的Java运行平台基础上,详细讨论笔者为其平台开发的DB引擎的组成和设计思路。
(本网网收集整理)
1 Java运行环境平台
图1所示为Java运行环境的总体框架示意图。本系统为克服Java的解释执行机制所引起的执行速度慢的问题,在硬件上采用了Sun公司开发的Pico Java芯片。它能够直接执行Java的二进制代码,使Java的执行速度提高一个数量级以上。在硬件层的上面是OS层,本系统采用的是ITRON(日本东京大学坂村键教授设计的一种嵌入式操作系统,虽然在日本以外的市场影响不大,但在日本本地市场,占有率达90%以上)。由于ITRON规格制定得比较早,并且为兼顾低端嵌入式应用的场合,ITRON总体上功能比较简单,并未把诸如TCP/IP、文件系统等内容包含在其里面,因此与嵌入式Linux等不一样的是,TCP/IP、文件系统是以独立的组件形式存在的。在OS层的上面是JVM层。与其它一般Java虚拟机不同的是,本系统的Java执行代码不需要由JVM解释执行,而是由CPU硬件直接执行。在JVM的上层是自动售货机的基础平台类库和公共组件层。本文介绍的DB引擎组件正是处于这一层。该层的上面是应用程序层,用于实现自动售货机的各种控制、管理机能。
2 嵌入式系统DB引擎
2.1 DB引擎组件的引入
众所周知,在台式机领域,DB是一个十分关键的基础软件。以往嵌入式系统的软件可能更侧重于与硬件的交互与控制,但随着对嵌入式系统功能需求的日益复杂化,嵌入式系统软件中,信息、数据的保存与管理的比重也日益增加。在这样的背景下,嵌入式系统软件开发中,通过引入DB组件,对实现软件整体框架结构的组件化与简单化,有着十分明显而重要的意义。
2.2 DB引擎组件的总体框架
如图2所示,将整个DB组件设计为3层结构,分别为JDBC接口层、SQL解释层和动作执行层。这3层之间呈单向依赖关系。也就是说,SQL解释层依赖于动作执行层,但动作执行层不依赖于其上面的两层,可以单独存在而直接被使用。如果用户以使用方便为主要目的,可采用完全配置方式,应用程序通过JDBC接口层存取数据。反之,如果用户对空间和效率要求较高,可仅配置动作执行层组件,应用程序直接调用动作执行层的API进行数据的检过和更新等操作。
(1)JDBC接口层
如前文所述是可选组件,旨在为应用程序提供一个标准的DB调用接口。
(2)SQL解释层
本DB组件实现的SQL解释层,只实现了标准SQL的一个小子集,主要完成select、delete、insert、update、create table、drop table等功能。其中数据操作语句(select、delete、insert、update)的解释要点之一是where条件子句的解释执行,类似于数学表达式求值算法。本文采用简单直观的“算符优先法”。该算法使用两个工作栈,一个称作OPTR栈,用以寄存运算符;另一个称作OPND栈,用以寄存操作数或运算结果。算法的基本思想是:
①首先置操作数栈为空,表达式起始符“#”为运算栈的栈底元素;
②依此读入表达式中每个Token。若是操作数,则进OPND栈adk是运算符,则和OPTR栈的栈顶运算符比较优先权后作相应操作,直至整个表达式求值完毕(即OPTR栈的栈顶元素和当前读入的Token均为“#”。
本
文实现的SQL子集描述如下:
预定义
<日期>
<统计函数名>:=MIN│MAX│COUNT│SUM
<统计函数>:=<统计函数>(
<统计list>:=<统计函数>,[,<统计函数>[,<统计函数>[…]]]
<数据类型>:=INT│UNMBER│CHAR│DATE
SQL文定义式
①SELECT*| ②SELECT<统计list>FROM ③UPDATE ④INSERT INTO ⑤DELETE FROM ⑥CREATE TABLE ⑦DROP TABLE 注:|表示多选个,表示某定义项目,[]表示可选项目,…代表循环省略表示。 (3)动作执行层 动作执行层是整个DB组件的核心和关键,因为所有的DB操作最终都由该层完成,同时用户也可以跳过上面的两层,直接调用该层的API,以实现相同的数据操作功能。下面介绍其主要设计要点和思路。 2.3 数据的表达与存储 由于嵌入式系统的资源十分有限,不能引入复杂的算法和数据存储格式,同时由于Java对二进制数据的处理十分不便,本文最终采用CSV格式来保存表数据。其要点是: ①各字段数据之间采用「,」分开; ②如果字段数据本身包含有「,」,则将整个字段数据用引号括起来; ③如果字段数据本身包含有引号「”」,则将引号「”」改写为两个重叠的引号「””」,依次类推。其次,每个记录占文本文件的个行,每一个数据表与一个物理数据文件一一对应。 采用这种方式处理的优点是: ①全部数据都是采用字符串保存,Java处理起来十分方便; ②对不定长字段的保存处理与定长字段处理统一,不需要额外的附加处理,而且存储效率高; ③对多字节文字的处理程序不需要额外的编码转换处理,由 JVM平台本身的功能可以自动完成。 当然,采用这种处理方式也存在其不足之处: ①由于在数据文件中,每条记录的长度不定,数据即使局部更新,也必须重写整个文件; ②由于同样原因,单条记录的.检索难于直接定位,而必须读入整个数据文件。 为弥补由此产生的性能下降,本文采用数据Cache加以克服。也就是说,尽可能将数据缓存在内存中,通过减少对物理文件的读写操作来提高数据的性能。 2.4 多线程数据存取的同步与互斥 在Java虚拟机环境下,没有多进程的概念,但对于多任务的处理提供了多线程的手段。本DB引擎组件是公共组件,供上层多个应用程序组件共同使用。由于上层的每个应用程序组件本身由一个或数个线程来执行,因此,DB引擎组件必须考虑多个线程同时存取某个数据时可能引起的冲突问题。对于该问题的解决办法,一般是采用DB锁定的方法。关于DB锁定,进一步细分的话,可区分为读锁和写锁;根据锁定粒度的粗细可分为按表锁、按Page锁、按记录锁等,不一而足。 为设计和实现的简单起见,本DB引擎组件提供按表锁定的方式,同时不区分读写锁之间的区别。这样,大大简化了SQL语句的分析和处理过程,并且可以直接把锁定操作与表的open操作相关联,锁解除与表的close操作相关联。实现时,对应表对象Table的每一个实例,设置一个field变量,用于保存锁定状态,再利用Java语言提供的synchronized手段同,可以较为方便地实现数据表的锁定功能。代表示例如下: //表锁定。为了避免死锁,有超时判断逻辑 synchronized void lock()throws DBError{ long t2,t1; t1=System.currentTimeMillis(); //由于可能出现在wait语句被唤醒而却得不到表锁的情况,为提高超时逻辑判断精度,采用循环 while(isLocked){ try{ wait(DBError.TIMEOUT/10); }catch(Exception e){e.printStackTrace();} //超时判断 t2=System.currentTimeMillis(); if(t2-t1>DBError.TIMEOUT)break; } //发生超时退出循环情况,抛出例外 if(isLocked){ throw new DBError(DBError.TIMEOUT_ERR,name); } //设定锁定标志 isLocked=true; } //表打开操作 //参数ro只读打开标志 void open(Boolean ro)throws DBError{ lock(); readOnly=ro; //表数据读入 load(); } //表关闭操作(同时释放锁) public synchronized void close() throws DBError{ if(isLocked==false)return; //关闭前,保存数据 if(isDirty)save(); if(isUnload)unload(); //释放锁,通知其它等待线程 isLocked=false; notify(); } 图3 DB引擎组件主要类的关系 2.5 DB组件实现的结构设计 图3所示为DB引擎组件的主要类之间的关系。其中,Database为数据库类,用于描述和管理整个数据库对象Table为数据表类,用于描述和管理表对象;TableData用于描述和管理保存表数据的物理介质(文件);Field为字段类,用于描述和管理字段类型信息;Record为记录类,描述一条数据记录。为简化处理,本组件将Database类设计为singleton模式,即本组件只能创建一个Database实例。这对于嵌入式系统来说,大部分场合已经足够。与数据库的一般物理概念相对应,1个Database实例包含n个Table实例,1个Table实例包含n个Field实例。同时,1个Table实例包含1个TableData实例,1个TableData实例包含n个Record实例。 Connection类用于管理用户访问数据库的会话(Session)过程。对应一个用户的一次会话过程,生成一个Connection实例。Connection类对象保存着当前Session打开的Table列表,当用户提交执行某SQL语句而需要锁定某个Table时,系统首先检查该表是否已经在当前Session已打开的Table列表中。如果已经被打开,则不需要进行重复的锁定操作,直接反回对应的Table对象实例。反之,如果尚未包含在打开的Table列表中,表明当前Session尚未打开和锁定该表,必须执行该表的打开和锁定操作(如果该表已被其它Session打开,则必须等待到其它Session翻放该表为止)。 本DB组件还支持commit与rollback事务处理。能够在如此微小的DB组件实现事务处理,主要得益于上述的Session管理框架。在Table类commit与rollback处理基础上,当一个Session执行commit或rollback操作时,对包含在打开列表中的每个Table实例,调用执行相应的commit或rollback处理即可。 3 结语与展望 本DB组件已实际运行了大约两年时间。这期间除了对该组件进行一些功能追加以外,主体框架上基本保持不变,从而在一定程序上表明了该设计框架的可行性和合理性。该组件编译以后,class文件形成的jar包大小约为68KB,短小精度悍,便于使用。当然,该DB组件目前仍然存在一些不足:首先,较为关键的一点是速度问题。一直以来,Java的执行速度问题就是受批语的缺点所在,因此采用它实现自然也避免不了这人瓶颈。今后改进的思路之一是,将其中Java处理效率不高的部分移出Java,采用C实现;二者通过JNI手段加以连接,以提高总体的运行速度。第二点需要改进的地方是表锁定的粒度问题。由于目前只能整个表进行锁定,并且不区分读锁定与写锁定,因此粒度较粗。虽然这样实现起来较为简单,但在多任务处理环境中可能增加不必要的时间等待。最后,JDBC接口的实现目前还不完全,需要加以完善。 【嵌入式移动数据库应用研究】相关文章: 5.嵌入式实训报告 6.移动年终总结 7.数据库应用简历 10.数据库oracle笔试 文档为doc格式[WHERE
[WHERE
SET
[(
[WHERE
(