APP下载

基于相关事务结果集的移动数据库三级复制同步机制

2009-04-23张云洋

新媒体研究 2009年6期

袁 源 张云洋

[摘要]重点研究目前商用移动数据库系统和一些移动数据库系统原型中采用的复制和同步技术,并在此基础上提出一种以相关事务结果集为同步粒度的同步机制,并对如何实现这种同步机制做了较为详细的阐述。

[关键词]移动计算 移动数据库 数据复制 同步技术 同步粒度

中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0320039-01

一、引言

移动数据库系统是指支持移动计算环境的分布式数据库系统。与传统分布式数据库相比,移动数据库具有移动性、位置相关性、频繁的断接性、所处网络条件的多样性、较差的系统安全性及可靠性、资源的有限性、网络通讯的非对称性等特点[1]。

二、数据一致性

如何保证各个移动结点和服务器间的数据一致性是移动数据库中的关键问题。它的研究方向有两个方面,一是数据的同步复制,另一个是移动事务模型。

到目前为止,已经出现了很多成熟的移动复制算法,如:两级复制算法、三级复制机制等。其中的三级复制机制,是最为典型的异步复制机制,也是本文下部分讨论的重点。

三、移动数据库三级复制机制

三级复制体系结构由服务器级复制、空中复制、客户机缓存三级复制机制组成。服务器级复制为第一级复制,该复制采用传统的复制技术,以保证服务器之间的一致性;空中复制为第二级复制,服务器将经常被访问的热点数据组织起来,通过MSS向所有的MH广播,这实际上等同于在无线信道上做了一级数据复制;客户机缓存为第三级复制,MH利用本身的处理及存储能力缓存数据库中的部分数据,以支持移动用户的断接操作[3]。

三级复制体系结构基本满足了移动数据库系统的四个目标,同时提高了系统的可伸缩性。

四、基于相关事务结果集的三级复制同步机制

(一)同步机制思想

首先分析同步机制的划分粒度,它分为元组、事务、SQL语句或者所有的同步数据[4]。不同同步粒度的划分在系统实现的难度、系统开销、全局提交率等方面各有不同,目前的三级复制体系大都采用以一个移动事务的结果集为同步粒度,它既保证了移动事务的原子性,又保证了移动事务冲突检测中的独立性。但是,这种同步机制所带来的系统开销也是很大的,极大地加重了系统的负荷[5]。

为了改进上述问题,本文提出一种以相关事务结果集作为同步传输粒度的同步传输机制,它不同于以往的以单个事务结果集作为同步粒度,通过对移动事务的读集和写集进行逻辑运算,判断出具有相关性的事务,进而在数据同步过程中将这些事务的结果集进行合并,避免了保存大量中间结果,减轻了同步服务器的负荷,也减少了无线传输过程中的数据量。同时,也保证了事务的原子性,比较容易实现数据一致性的收敛。

(二)实现过程

首先用ReadSet(T)表示事务的读集;WriteSet(T)表示事务的写集,ResultSet(MT)表示事务的结果集。然后定义如下概念:

相关事务:如果两个事务T1和T2具有以下特征,我们说它们是相关的:

1.WriteSet(T1)WriteSet(T2) !=

2.WriteSet(T1)ReadSet(T2)!=

当移动用户在移动结点的本地数据副本上执行事务时, EDBMS需要判断正在执行的事务是否和其他事务相关,如果是相关的,则将此事务和与之相关的事务的结果集做上同一个标记,这个标记用于在同步时快速过滤出需要上载的数据,并且根据这个标记将上载的数据按照相关事务的结果集划分成不同的同步单元。

如果相关的事务的结果集有交集,则对交集的部分做合并操作,这样就避免了保存大量中间结果的问题。

下面,我们以具体的例子说明移动事务相关的过程:

(1)相关1:写写相关

如果两个事务的写集的交集不为空,则这两个事务是写写相关的。这种情况很常见,在一个应用中,经常会有包含相同SQL操作的事务重复执行,典型的是在一个销售系统中。

如下有两个事务MT1,MT2所示,假设事务读写的表的初始内容如表-1所示:

MT1

Update Table1 Set items=Items-10 Where name=“book”;

Update Table1 Set items=Items-10 Where name=“CD”;

MT2

Update Table1 Set items=Items-20 Where name=“book”;

Update Table1 Set items=Items-45 Where name=“CD”;

在MT1提交事务后,系统对数据库进行操作后便将MT1修改的元组做上MT1的事务标记。在MT2执行过程中,发现将要修改的元组标有其他事务的标记,则认为本事务是和已经标记的事务是相关的。将MT1和MT2两个事务相关后,相关事务的结果集相当于在移动设备的本地数据副本上执行了如下一个单独的事务:

UMT1

Update Table1 Set items=Items-30 Where name=“book”;

Update Table1 Set items=Items-60 Where name=“CD”;

以上描述的是一种较为特殊的产生写写相关的事务的场景。更为一般的情况是两个事务写集的交集只是其中某个事务写集的一个真子集,也即两个事务满足下列条件:

WriteSet(MT1) WirteSet(MT2)!=

并且满足下面的一个或者两个条件:

WirteSet(MT1) WirteSet(MT2)WirteSet(MT1)

WirteSet(MT1) WriteSet(MT2)WirteSet(MT2)

(2)相关2:写读相关

写读相关的情景在应用中也经常出现,当一个移动事务在本地数据副本上提交后,其对数据的修改可能会被其他事务读取,并用于这些事务的执行过程中。在写读相关事务中,因为后提交的事务的结果依赖于前一个事务的写集中的某些数据项,因此认为这两个事务是相关的。

以上我们讨论的都只涉及到两个事务之间的相关,但却很容易可以扩展到多个事务之间。

四、结束语

本文重点研究了目前流行的复制移动数据库系统中的复制和同步技术。在详细分析已有同步技术的基础上,提出了一种以相关事务的结果集为同步粒度的结果集传递合并的同步机制,并对如何实现这种同步机制的方法做了较为详细的阐述。

参考文献:

[1]刘铁铭、张有为、张媛媛,嵌入式移动数据库应用研究[J].微计算机信息,2006,1-2:P88-90.

[2]王珊、丁治明,移动计算环境中的移动数据库,微电脑世界,2001.8:p25-27.

[3]丁治明,移动数据库关键技术研究,中国科学院研究生院博士学位论文,2002.05.

[4]何新贵、唐常杰、李霖、刘云生,特种数据库技术,北京:科学出版社,2000.