数据库不一致的处理方法

文档序号:6477930阅读:1837来源:国知局

专利名称::数据库不一致的处理方法
技术领域
:本发明涉及一种解决记录在数据库中的信息结构不一致的处理方法。
背景技术
:通常情况下,存放在数据库(DB)中的信息是关联到其他记录的记录集合。关联完整性(见非专利文献l)是指一个关系数据库(RDB)的关联一致性,关联是一个用来表示不同数据库之间记录关系的常用概念,面向对象的数据库中也具有关联和被关联的记录。—些数据库具有"瀑布式删除功能"或"瀑布式修改功能",即是删除或修改一个记录之后顺序删除或修改其他记录的功能。然而,这些关联完整性的功能有时会删除一些不希望删除的记录,或者没有按需求修改一些希望修改的记录。当然,用户可以将数据库的关联完整性功能失效,并且通过调用一个被自身的触发事件所激活的用户程序来实现类似的功能。但是,该用户程序必须对所有可能被删除或修改的记录进行检索,这需要消耗大量处理器的处理能力。数据库访问类型为了简化本说明,将数据库访问类型分为如下介绍的几种类型单机数据库访问只有一台计算机访问一个数据库;服务器数据库访问只有一台服务器计算机访问一个数据库,其他终端计算机首先访问服务器,由服务器直接从一个数据库获取数据。从一个数据库都是被一个单用户计算机所访问的观点看,这种类型也可以认为等效于单机数据库访问。并行数据库访问原始数据库被复制到多台计算机,其中,所复制的多个数据库可以被同时修改,而且原始数据库会被这些修改内容的映射所修改。常见的做法是将原始数据库部署在一台特定的计算机中,例如一台服务器或一台执行管理任务的计算机。由于在这种类型中数据库是多台计算机同时进行访问,因此并行数据库访问与"单机数据库访问"和"服务器数据库访问"不同。有些情况下数据库的范围是将整个数据库进行复制,另外一些情况下,只是根据当前工作情况需要复制数据库的一部分。在复制之前通过预先将原始数据库进行细分的方法,有可能减少对复制数据库的修改操作,例如保证复制数据库与原始数据库内容一致的操作等。数据库结构不一致如果为提高运行速度而省略关联完整性检查,将产生结构的不一致,诸如"关联记录不存在",或者"产生错误的关联"等等问题。如果这些结构的不一致依然保留在数据库中,当程序遇到上述结构不一致的问题时,将会导致不能继续进行数据处理的情况。这种情况在以上介绍的所有数据库访问类型中都可能会发生。结构不一致对于并行数据库访问是致命的,因为在对一个复制数据库进行修改之前不可能对在其他计算机上的复制数据库进行检查。例如当删除或修改一条记录时,而这条记录可能被其他计算机上的其他记录关联到。随着原始数据库的不断更新以及复制数据库与原始数据库的数据同步,这些不一致的情况会在其他计算机的复制数据库中扩散开来。在并行数据库访问中,多台计算机有可能会同时对同一个记录进行修改。当用这些被修改的内容在原始数据库中被更新时,不一致便出现了。这种情况也称为"存储在数据库中信息结构的不一致"。并行数据库访问的当前状况本说明书作者的指导下所开发的"增强报纸销售"系统,只允许对读操作进行并行访问,该系统阻止了并行的写操作,强制所有计算机在开始对数据库进行编辑之前必须获取"修改权限",在说明书中这也称为"修改锁"。对并行数据库访问的研究如下所述。MVCC(见非专利文献1)给出的技术方案是其中一种在线数据库软件,尽管它为读取访问复制了(一部分)数据库,它是只使用了"修改锁"来解决修改冲突(非专利文献2和3)的情况。在面向对象数据库中的CACHE(见非专利文献4)和OSbjectStore(见非专利文献5)也只使用了"修改锁"功能来避免并行的修改操作。关系数据库PostSQL使用"SELECTFORUPDATE"或"L0CKTABLE"命令作为"修改锁"来避免同时的修改操作(见非专利文献6)。专利文献l给出的技术方案也使用了"修改锁"功能。对专利文献26给出的技术方案进行研究后发现,其中没有一个是适用于解决数据库的并行修改操作而引起的不一致性问题的。微软的ADO.NET迈出了从服务器数据库访问到并行数据库访问的一大步。它是根据当前工作的需求把数据从一台服务器拷贝到一台终端计算机上,并在切断与服务器计算机的连接之后可以执行修改操作,它在完成修改操作后重新与服务器计算机建立连接,并将修改的内容上传给服务器计算机。如果原始内容已经被其他终端计算机更改,那么上传的修改内容将是无效。这被称为"优化并行控制"(见非专利文献7和8)。虽然优化并行控制是一种并行数据库访问类型,但它存在着两个问题。一个问题是它忽略了关联完整性不一致的可能性。例如假设有一台终端计算机从一台服务器拷贝了一条记录(R),之后将其删除,该终端计算机在拷贝发生10秒后将上述操作报告了服务器,如果在这10秒过程中服务器没有接收到从其他终端计算机发送的对R进行编辑的报告,那么上述删除操作是有效的。然而,如果其他记录与R记录的关联仍然存在,或上面提到的io秒内新的关联重新建立,这样就会发生结构的不一致。另一个问题就是在一些情况下,基于最新信息的判断是无效的。这是存在于实际数据库操作的一个问题,因为基于最新信息而作出的判断有可能是实际数据库操作时最佳的。例如"计算机A"的操作者在早上九点写下这句话"不需要发送友好的信函给这个客户,他是开玩笑的",然后这个操作者离开了一会儿。另一方面,"计算机B"的操作者在中午十二点收到一条"这个客户可能会有大件订单"的信息,于是写下"应给以最大招待以得到一个合同",并发送给服务器。可是,如果"计算机A"刚好在一分钟前把编辑的内容发送给服务器,那么"计算机B"的编辑操作将是无效的。这就是"计算机A"不能阻止在"计算机B"上操作者变幻不定的操作的情况。专利文献7应用修改时间于复制数据库中,并根据如下方式操作由此产生的修改版本,"相对最早时间增长方式对版本号重新编号(步骤S604)",(参见专利文献7的00654段和0097段),以及"最新的版本将会赋给最早时间的内容"(参见0097段),也就是说,之前的修改具有优先权。尽管采用越早的编辑具有优先权的方法,可是这仍然存在一个问题。例如假设一台计算机在某段时间内(如一年前)存储了修改的结果。如果某一天该结果突然被发送给一个服务器并变得有效,所有在过去一年中被其他计算机所进行修改的内容将会失效。那样的操作通常似乎是不允许的。传统技术的局限性尽管"修改锁"能够防止对一个记录的修改冲突,但是它不能防止由并行数据库访问所引起的不一致,不一致的情况可能会是"所指向的记录不存在"及"建立了错误的关联"。即使是通过使用对修改内容定时检查来选择有效修改的方法或定时发送信息给服务器的方法,上述结构的不一致也不可避免。因此,将会存在一些如下的问题,例如"尽管一些记录的编辑违背用户期望,但这些修改记录却是有效的"。传统的关联完整性技术下面进一步分析传统的关联完整性技术。专利文献8给出的技术方案是暂时去除了对关联完整性的限制并载入大量的数据入口,之后对关联完整性进行检查。专利文献9揭示了一种方法,该方法能够防止另一台计算机读取在修改操作中临时产生关联完整性不完整状态的数据。上述两个专利文献中的技术方案都不适用于解决本发明所考虑的问题。在主表发生改变的情形下,专利文献10给出的技术方案是立即将这些改变通知给具有与这些修改相关联的记录的计算机。可是,服务器数据库访问方式会比这些复杂的通知过程要简单和清楚得多。使用此类通知方法结合并行数据库访问方式并无价值。专利文献1JP,11-272534,A专利文献2JP,11-161535,A专利文献3JP2005-503606,A专利文献4JP2005-508050,A专利文献5JP,8-16447,A专利文献6JP2000-501532,A专利文献7JP,2005-216167,A专利文献8JP,2006-79260,A专利文献9JP,3185718,B专利文献10JP,3612449,B非专利文献1"主要功能和价值",联网,2007年4月22日检索因特网(URL:htt。//www.sonicsoftware.co..i。/。roducts/ob.iectstore/function,html)非专利文献2MVCC(多相并行控制),"最先9.1"联网,2007年4月22曰检索因特网(URL:http://www.postgresql.jp/document/pg721doc/user/mvcc.html#MVCC-INTR0)非专利文献3"9.5.处于一个应用等级的一致性数据检查",联网,2007年4月22日检索因特网(http://www.postgresql.jp/document/pg721doc/user/即plevel-consistency.html)非专利文献4"缓冲存储器技术指南",联网,2007年4月22日检索因特网(URL:http://www.intersystems.co.ip/cache/technologyguide/technologyguide.html)非专利文献5主要功能和价值",联网,2007年4月22日检索因特网(URL:http://www.sonicsoftware.co.ip/products/obiectstore/function,html)非专利文献6"9.5.处于一个应用等级的一致性数据检查",联网,2007年4月22日检索因特网(http://www.postgresql.jp/document/pg721doc/user/即plevel-consistency.html)非专利文献7"在ADO.NET中的数据并行控制概述",2007年1月,MSDN订阅图书馆(MSDN订阅图书馆),光盘文件,(URL:ms-help:〃MS.MSDNQTR.v80.ja/MS.MSDN.v80/MS.VisualStudio.v80.ja/dv_raddata/html/d5293098-4a88-4110-abd2_34d9e6661664.htm)非专利文献8"教程并行异常的数据处理",2007年1月,MSDN订阅图书馆(MSDN订阅图书馆),光盘文件,(URL:ms-help:〃MS.MSDNQTR.v80.ja/MS.MSDN.v80/MS.VisualStudio.v80.Ja/dv_raddata/html/73ee9759-0a90-48a9-bf7b-9d6fcl7bff93.htm)非专利文献9]"关联一致性",联网,2007年1月,2007年6月6日检索因特网(URL:http:〃www.leasekin.com/rodan/makepos/02ac2kint:ro/tablekihon/pOl0130sansyouseigousei.htm)
发明内容本发明解决的技术问题如果为了提高运行速度,数据库在没有对其记录之间的关联关系进行完全检查之前就被编辑,将出现"数据库中记录信息结构不一致"的情况,该问题普遍存在于单机数据库访问方式、服务器数据库访问方式和并行数据库访问方式中。在并行数据库访问方式的修改工作中,产生数据库结构不一致的情况是不可避免的,例如缺乏关联完整性、记录修改冲突等等。当多台计算机同时向一个表增加记录时,各主键就会互相冲突,这些也是结构的不一致。当然,实现并行数据库访问方式仍然是合理的。单机数据库访问方式在与其他计算机进行数据共享时会存在问题。而服务器数据库访问方式则存在致命的缺陷,即"当与服务器连接中断的情况下,信息将无法被访问"。在移动通讯领域则表现为远程通信频繁地无法进行,然而即使远程通信无法进行,一些重要的商业任务仍然需要执行。与服务器通讯所产生的延迟也是一个问题。尽管并行数据库访问方式是比较理想的,由于没有合理的方法去解决"由于修改数据库所引起的数据库结构的不一致问题",因此目前没有一种可行的并行数据库访问方法来实现同时读操作和写操作。本发明说明了一种新的方法,该方法允许暂时的"记载到数据库中结构的不一致"且在需要时解决该问题。解决问题的技术方案可变关联目标信息的介绍对于如何修改数据库中记录之间的关联关系,数据库操作者具有非常清晰的意6图,同时也会根据该意图对数据库进行修改。如果所有相关的关联都是根据确定的意图进行修改的,那么不一致性就不会出现了。由于在对数据库进行修改操作后立即执行加载处理,处理器的负荷量会很大,本发明指定(写)了"可变关联目标信息"给被修改的记录,当这个记录的关联关系被检测到时,关联目标将会(被程序)根据这个"可变关联目标信息"的指导所修改。下面对该技术方案进一步详细的说明。设置一个记录的"可变关联目标信息"的方法是指定一个新的记录,关联到该记录的(其他的)记录应该重新关联。此时,"删除标记"将被添加到一个具有"可变关联目标信息"的记录上。具有删除标记的记录是不会显示出来的,对于操作者来说这个记录好像真正被删除了,这个记录将永远不会被最新关联。例如一个删除标记被添加到记录"Tokyo"上,作为一个记录"Tokyo"的通用概念,记录"Japan"被指定为"Tokyo"的"可变关联目标信息"。如何指定可变关联目标信息是取决于一个操作者的决定(或一个程序设计员的决定),也可能定义一条新的"未指定"记录,这个记录可以被设置成"可变关联目标信息"的新关联目标。当(通过程序)处理一条关联到"Tokyo"的记录时,通过根据"可变关联目标信息"来更改指向"Japan"(或"未指定")关联目标的方式,这个记录的不一致性将会而逐渐被消除。在关系数据库中被关联的记录集的表被称为主表。该表中一个记录的关联目标被修改后,可能会是该主表的另一个记录,或者是另一个主表中的另一个记录。为了避免发生关联目标无限循环改变的情况,一个方案是建立一个新的主表后把一个关联目标更改到这个新表中。"恢复"可作为可变关联目标信息的一个高级类型。假设删除标记被添加给某个可"恢复"的"可变关联目标信息"的记录,当一条指向这个记录的记录被检测到时,这个记录可以通过消除一个删除标记的方式得到恢复。由于通过添加"删除标记"而进行的删除操作是一种逻辑上的删除,而不是真正的删除,因此恢复是可能实现的。记录的实际删除操作可以被推迟到以下情况下进行,即具有删除标记的记录变得非常多并且内存被长时间操作所耗尽的情况。假设所有关联目标的更改都是在对记录真正地删除操作之前完成,那么不会有问题存在。如果一些关联目标的更改因未完成而保留下来,一个程序将会检测到一个关联目标已经被真正删除掉并显示一条信息。如果只有少量修改工作没有完成,即使一个操作者指定了新的关联目标也不会出现严重的问题。当系统由于处理负载量减少而进行了实际地删除操作时,即使对关联目标进行完全地研究和完全地更改操作也不会存在问题。如果没有必要更正由于修改一些记录所引起的关联,那么也没有必要去指定"可变关联目标信息"。正如对于具有城市名称的记录而言,当"Tokyo"被改成"Tokyo市"时,改变关联是没有必要的。以上说明了暂时地允许关联完整性所产生的不一致以及在必要时逐步解决该问题的方法。解决修改工作中的冲突当一个记录在并行数据库访问方式下被修改时,可能会发生一个冲突。尽管有必要解释包括一个可变关联目标信息的关系,这里首先说明了一种解决一个简单冲突的方法。本发明提供了一种机制,该机制采用实现"对最新信息进行修改的内容优先"的方法,它与"优选并行控制"或专利文献7中所提供的定时发送给服务器或定时修改操作的机制是相反的。程序如下(a)每当原始数据库被更新时,更新该数据库的一个版本;(b)当把原始数据库复制到一台计算机时,把该原始数据库的版本号设置为复制数据库的源版本号;(c)当一台计算机把在复制数据库上的修改内容发送到一台管理所述原始数据库的计算机(例如服务器)时,它也通知(发送)该复制数据库的源版本;(d)当复制数据库上修改的内容与在其他终端计算机上修改的内容发生冲突时,具有更高源版本号的复制数据库上修改的内容将会被采纳;(e)如果存在多个具有同样源版本的修改,那么较早发送的修改内容被采纳。作为一个简单的实施,一台管理原始数据库的计算机(例如服务器)可以执行上述(d)(e)的操作,可是如果包含同样的结果,另一台计算机可以执行它们或多台计算机可共享它们。—台修改版本的计算机执行以下一系列的步骤(步骤1)通过拷贝原始数据库来产生一个复制数据库,或者把复制数据库与最新的原始数据库进行数据同步;(步骤2)修改复制数据库;(步骤3)把在复制数据库上修改的内容和该复制数据库的版本发送给管理原始数据库的一台计算机。管理原始数据库的计算机在执行(步骤3)后,根据上述(d)和(e)的判断标准,做出采纳修改内容的决定。在(步骤2)的执行过程中,没有必要保持与管理原始数据库的一台计算机的连接。假设当"计算机A"在执行(步骤l)和(步骤2)时,计算机B发送了修改的内容。在这种情况下,管理原始数据库的计算机首先将来自计算机B的修改内容设置为有效,同时更新原始数据库的版本。当计算机A的所述修改内容被发送时,管理原始数据库的计算机将做出判断哪一个修改内容优先的决定。通过比较计算机A和计算机B中修改内容的源版本,具有最新源版本的修改内容将被采纳。如果计算机A的修改内容被采纳,计算机B的修改内容将无效;如果两者都有同样的源版本,由于较早被发送,计算机B的修改将被采纳,计算机A的修改内容将无效。如果原始数据库的一个源版本比所述修改内容在发送时的源版本要新,那么可能会出现另一个较新源版本的修改被较晚发送并可能有效的情况。与此相反,如果修改内容的一个源版本与一个原始数据库在这个所述修改内容发送时间的一个版本相同,那么不可能出现另一个较新源版本的修改内容被较晚发送的情况。这个发送是在对同样源版本的修改内容中最先的。因此这个发送操作被采纳,该原始数据库被更新,结果是这个操作的一个版本将被唯一更新。如果从(步骤1)到(步骤3)进行修改计算机的处理过程在非常短的时间内进行,一个很小的可能是另一个修改内容的一个结果将会被发送并中断该处理过程。在执行(步骤3)之后,一个复制数据库将与原始数据库进行数据同步,以及获得该原始数据库的一个版本并将其设置为该复制数据库的一个源版本。如果此时只更新了一个源版本,这台计算机能确认修改内容的一个稍前结果是设置成有效的。相反地,如果更新了两个以上的源版本,存在一个可能,即修改内容的稍前结果将变成无效或已经无效了。如果从(步骤1)到(步骤3)的处理过程在很短的时间内进行,那么该处理过程成为非常接近于在线操作(例如服务器数据库访问)的操作。编辑一个可能被争用的修改内容的记录是非常有用的。另一方面,当处理一个在修改工作中有很小争用可能性的记录时,(步骤2)的一个阶段会被极度延长,对于一个输入或修改工作将花费足够的时间,并且(步骤3)在上述操作后将被执行。当然,当执行(步骤2)时,与管理该原始数据库的计算机(例如服务器等)保持连接是毫无必要的。例如,在某种情况下输入某个公司中每一机构的借方减少数量,当发生一个输入错误和错误处理被发现,一个记录将被修改。即使需要更正,在许多情况下该更正操作将被输入原始记录的同一台计算机所执行。在另一些情况下,(步骤2)具有相当长一段时间的离线操作是没有问题的。尽管我们不能与因特网连接,我们可以慢慢地输入借方减少数量。当帐目结算或接近检查时,我们可以在步骤3把输入的借方减少数量发送出去。尽管数据库的结构不一致是由于并行修改的工作而发生,当需要时,通过提供本发明的一种方法(也包括一种之后解释的方法)可以将不一致性消去。如上所述,通过设置一个(步骤1)到(步骤3)的循环执行过程,一个临近在线或临近离线的操作能够被唯一选中,这两个操作可以同时存在。这也是本发明的一些好处通过分配较高的优先级别给指向最新信息的一个修改内容,解决了修改操作的冲突;以及仅仅改变从(步骤l)到(步骤3)的一个执行循环,一台终端计算机可以在某个特定时间执行将近在线的操作,并在另一时间执行将近离线的操作。某一台终端计算机在将近在线时被操作,而另一台终端计算机在将近离线时被操作,因此也有可能会出现混合的操作。在一种"优选并行控制"的方法和专利文献7中,正如之前所述,从一台"正处于将近离线操作"的计算机发送的信息会阻止从一台"正处于将近在线操作"的计算机发送的信息。然而,由于是对同样记录所进行的修改操作,如果本发明是用于把优先权分配给对最新信息所进行的修改操作,优先权则通过"正处于将近在线的操作"分配给修改操作的一个结果。如果你想验证修改操作的结果,什么是有必要在将近离线操作一样去执行的?如果你正处理那些具有很小修改冲突的记录以及想要省下通信支出和时间,什么是有必要如同将近离线操作一样去执行的?对于人们来说,我们在短时间内执行从(步骤1)到(步骤3)的处理过程来验证修改操作的结果是很容易理解的,因为优先权赋予基于较新信息的判断(修改操作)是非常接近于人们的常识的。这个特性是适合于多人连接的实际数据库操作的。这是另一个通过"设置优先权给具有较新信息的修改操作"来解决修改冲突的好处。通过上述的机制,解决了对一个记录修改操作的简单争用。在这里,简单争用意味着没有引用这些记录的记录。虽然在上述描述中,版本被设置给原始数据库,版本还能够被设置给原始数据库的表或记录,以及用来管理之用,这与再细分原始数据库是等效的。解决可变关联目标信息的冲突对被引用记录修改内容的冲突情况仍然需要考虑。为了说明之便,假设对X的修改和对Y的修改相互冲突,S卩二者都对同一记录设置了不同的"可变关联目标信息",如果通过如下机制把高优先级设置给较早信息的修改内容,那么对X的修改则被采纳。问题是在判断对Y的修改是无效之前,一些记录的一个关联目标将通过修改Y中所设置的"可变关联目标信息"而改变。下面说明了一个例子假设一台计算机执行了修改的内容Y,在这里,通过该修改操作中应用的"可变关联目标信息",Y改变了一些记录的关联目标。之后,当修改内容Y被发送且修改内容X被认为是有效时,修改的内容Y是无效的。对于只被修改内容X改变的关联与第一次修改内容Y和修改内容X改变的关联是等效的情况,这是不能保证的。以下说明了一个解决这个问题的处理过程修改一个可能被引用的记录后,基于可变关联目标信息来改变这台计算机中的关联关系之前,首先应发送这个修改的内容,然后通过与原始数据库数据同步来更新复制的数据库。在确认这个修改的内容是有效的之后,也就是源版本被唯一更新之后,通过运用关联目标信息来改变关联关系。在之前的例子中,发送修改内容X的那台计算机将会检查修改内容X是否已经被采纳,然后根据所述的这个修改内容来改变关联关系。发送修改内容Y的计算机会知道修改内容Y是无效的且修改内容X被采纳了。如果有必要的话,它将会重新修改。通过使用修改内容X,该计算机可以改变它们的关联关系。当一个记录有很多的改变时,如果略过中间的可变关联目标信息,只有最后一个被用作可变关联目标,这将会产生不一致性问题。因此,在确认或设置一个关联关系时(复制数据库的)源版本应被记录下来。当一个记录有多个关联关系时,有可能为每一个关联关系记录一个源版本,但是这存在着一个问题由于巨大的信息量,管理将会很复杂;而且,作为一个写(记录)给一个记录的记录版本,这个版本将被写(记录)给每一个记录。当一个记录在新建立时,或者当这个记录的内容被部分改变时,此时一个(复制数据库的)源版本作为一个记录版本被记录(和更新)下来。由于关联目标的设置或改变也是属于该内容的改变,一个记录版本将被更新。当(至少一个)关联目标被改变或当其他的改变被执行时,该记录的所有关联关系将被检查。如果可变关联目标信息被设置给一个被关联的记录,一个关联目标将会根据它而改变。因此,在记载于该记录中源版本所位于的复制数据库中,这个记录的所有关联关系被更新或检查。增加一个记录时,一个主键(ID)将通过上述结构赋值给这个记录。事实上,数据库中有一个保存下列主键的记录(K)。新记录(Z)使用K的值作为主键,之后K的一个值将被更新。如果通过下述规则"优先权设置给具有较早信息的修改操作"来重生K,则可以完成一个记录的增加。当修改内容K被认定是无效的以及一个K的重生成值是无效时,新记录(Z)的添加操作是无效的。然而为了验证增加的新记录,(步骤1)到(步骤3)应该会被很快执行;这将縮小将近离线操作的适用性范围。因此,当将近离线操作是重要的时,应预先对每一台计算机赋给一个主键(ID)的范围,这些范围是相互不重叠的。本发明的有益效果通过使用本发明之可变关联目标信息的方法,在需要时临时产生的关联完整性不一致问题将被逐渐解决;同时,由于不必为每一个修改操作进行关联完整性检查,在数据库中进行修改操作处理过程的速度大大提高。由于并行数据库访问所产生的在修改操作中的冲突情况可以通过如下方法"把高优先权赋值给较新信息的修改操作"来解决。通过这个方法,接近在线或离线的操作可以根据已被处理信息的字符任意地更改;本方法还有一个很重要的特点是具有不同操作(将近在线或离线的操作)的计算机可以通过一台服务器来共同工作;本发明的方法对于多台计算机在共享一个数据库时提供了很大的灵活性。通过合并"使用可变关联目标信息的方法"和"把高优先权赋值给较新信息的修改内容的方法",由并行数据库访问的修改操作所产生的不一致问题被合理地解决了。它的有益效果将被一一体现出来,特别是在我们修改那些可能被引用记录的时候。并行数据库访问具有很大的特点,例如"使通过数据库与其他计算机通讯成为可能",或"即使在与外部无法通信的情况下,也可以处理数据库",或"通过与一台服务器通讯来实现无延迟响应"。然而,由于之前没有方法能够解决必然发生的结构不一致问题,执行并行的修改操作是很困难的。本发明解决了这些问题并使得执行实际的并行数据库访问系统成为可能;本发明还可以适用于移动数据库访问方式或重要的商务工作;本发明对于降低成本和每次连接到网络需要的投入也很有效。图1是一台普通计算机的组成;图2是作为一种用程序来实现提供功能的实施方式的计算机的组成;图3是改变一个关联目标的处理过程;图4是设置"可变关联目标信息"的处理过程;图5是一台终端计算机基于最新信息把优先权设置给修改内容的处理过程;图6是一台服务端计算机基于较新信息来设置优先权给修改操作的处理过程;图7是一台终端计算机对可能被其他记录所引用的记录进行修改的处理过程;图8说明了更改关联目标的例1、例2和例3;图9说明了更改关联目标的例4;图10说明了更改关联目标的例5;图11说明了一个数据库版本管理的例子;射0101-计算机,0102-通讯单元,0103-运算单元,0104-主存储器单元,0105-主存储器单元中的DB(数据库),0106-第二存储器,0107-输入/输出单元,0108-显示单元,0109-总线,0110-通讯网络,0111-第二存储器中的DB(数据库),0201—传输装置,录,0202-0203-0204-0205-0206-0301-0302-0303-0304-0305-0401-0402-0501-0502-0503-0504-0505-0601-0602-0603-0604-0605-0606-0701-0702-0703-0704-0705-0801-0802-0803-0804-0901-0902-0903-0904-1001-1002--接收装置,-改变关联目标的方法,-设置"可变关联目标信息"的方法,-DB(数据库),-判断修改内容有效性的方法,-提取记录的处理过程,-指定设置给这个记录的"关联目标记录"的处理过程,-指定设置给所述关联目标记录的"可变关联目标信息"的处理过程,-激活对应于该可变关联目标信息而改变关联目标进程的处理过程,-将新获取的关联目标作为新的关联目标设置给所述之前提取(0301)的记-提取一个记录的处理过程,-指定"可变关联目标信息"的处理过程,-将复制数据库与原始数据库进行数据同步的处理过程,-记录作为复制数据库源版本的原始数据库版本的处理过程,-在复制数据库中的修改操作,-判断,-发送修改内容和对服务器修改的数据库源版本的处理过程,-按顺序提取被修改和被发送记录的处理过程,-指定这个记录的记录版本(NRV)的处理过程,-指定一个对应该记录的原始记录的记录版本(0RV)的处理过程,-记录版本的对比,-在原始数据库中使近期被发送的记录有效的处理过程,-只更新一个原始数据库版本的处理过程,-修改一个可能被引用记录的处理过程,-发送源版本(BV1)和修改内容给服务器的处理过程,-将复制数据库与原始数据库进行数据同步的处理过程,-获取和记录新的源版本(BV2)的处理过程,-BV2和BV1的对比,-子表,-主表A,-主表B,-项n,-提取一个关联目标记录的标记的处理过程,-确认预先指定的字符串"HeadOffice"是否被包含的处理过程,-判断,-更改关联目标的处理过程,-节点P,-节点R,1003-节点Q,1004-指定节点的处理过程,1005-检查表和记录是否被指定的处理过程,1006-更改引用记录的关联目标的处理过程,1007-指定更高阶记录的处理过程,1101-服务器,1102-计算机A,1103-计算机B,1104-原始数据库,1105-复制数据库(在A中),1106-复制数据库(在B中),1107-记录X的正本,1108-复制的记录X(在A中),1109-复制的记录X(在B中),1110-数据同步(在A中创建新的复制数据库),1111-数据同步(在B中创建新的复制数据库),1112-数据同步(在A的复制数据库中更新Nol),1113-修改操作(通过A对复制的X),1114-发送修改内容(从A到服务器),1115-更新原始的X(计算机A修改操作的映射),1116-确认(A修改的内容是否有效)并进行数据同步,1117-数据同步(在B中更新复制数据库),1118-修改操作(在B中对复制的X),1119-发送修改的内容(从B到服务器),1120-更新X的正本(计算机B修改操作的映射),1121-确认(B修改的内容是否有效)并进行数据同步,1122-数据同步(在A中更新复制数据库No2),1123-更新X的正本(计算机B修改操作的映射)。具体实施例方式实现本发明在权利要求所述作为一个计算机程序的方法被认为是公知的。图1示出了传统计算机0101的组成,它包括运算单元0103、主存储器单元0104、第二存储器0106、输入/输出单元0107以及显示单元0108,它们都与总线0109相连接。当与其他计算机交换数据时,该计算机OIOI通过通讯单元0102与通讯网络0101连接;这个已经被每一项权利要求所引用的"数据库"是处于第二存储器0106中的数据库0111,或是处于主存储器单元0104的数据库0105。程序被记载在第二存储器0106中,被激活和加载到主存储器单元0104,然后运算单元0103运行程序指定的进程。因此,计算机作为实现程序设计员意愿的方法组合而被重组。图2示出了实现权利要求中所述方法的功能性的组成。13由于是通过程序对数据库进行操作,在开发了整个或部分数据库到主存储器操作0104之后,它是非常容易实现的。在第二存储器0106中开发了全部或部分数据库Olll的数据库0105到主存储器单元0104的操作正在进行,同时修改操作的结果将被写入到处于第二存储器单元0106的数据库Olll中。然而,我们很自然地假设数据库处于第二存储器0106中,与数据库0105开发到主存储器单元0104是没有区别的,图2示出了基于两者之上作为统一概念的数据库0205。"改变关联目标的方法0203"实现了权利要求1的"通过使用设置给这个记录的信息来改变这个记录与另一个记录关联关系的处理过程",或权利要求2的"如果一个指向附有删除标志的记录的关联关系被检测到,移除一个删除标记的处理过程。""设置可变关联目标信息的方法0204"实现了权利要求3的"记载把指向一个记录的关联关系更改为指向另一个记录关联关系的信息的处理过程"。"判断修改内容有效性的方法"(0206)实现了权利要求4的"验证在'修改内容以及源版本的多个组合'中最新版本的修改内容,该版本即是当复制数据库被建立时原始数据库的版本,然后将它映射到原始数据库的处理过程"。这个方法应部署在具有修改有效性判断处理过程的计算机中(例如,配置有控制功能的计算机,如一台服务器)。传输装置0201和接收装置0202是用于在计算机之间进行通讯。图3到图7说明了权利要求1到权利要求5的处理过程。图3描述的处理过程与权利要求1是相同的,处理过程0301是提取记录,处理过程0302是指定设置给这个记录的关联目标记录,处理过程0303是指定设置给所述关联目标记录的"可变关联目标信息",处理过程0304是激活对应这个可变关联目标信息而对关联目标进行更改的处理过程,处理过程0305是把新获取的关联目标作为新的关联目标设置给之前提取0301的记录。到目前为止的说明中,我们认为"改变关联目标"处理过程的内容只是获得关联目标,其他的处理过程将在例子中进行解释。图3也相当于权利要求2的处理过程首先,处理过程0302提取记录,处理过程0302指定设置给这个记录的关联目标记录,处理过程0303指定设置给所述关联目标记录的"可变关联目标信息",处理过程0304激活对应于这个可变关联目标信息而对关联目标进行更改的处理过程。如果检测到"恢复"的情况,那么这个关联目标记录的删除标记将被移除。在这种情况下,由于在一个关联目标中不存在更改,因此也没有其他更改存在于"处理过程0305将新获取的关联目标作为新的关联目标设置给之前提取(0301)的记录"(0305)。图4是等同于权利要求3的程序步骤处理过程0401提取一个记录,处理过程0402指定"可变关联目标信息",即是设置把对该记录的关联关系更改给另一个记录的信息。图5是进行修改操作的计算机执行的处理过程。为了实现本发明之"设置优先权给最新信息的修改内容"的方法,首先,0501将复制数据库与原始数据库进行数据同步;在实际情况下,很多情况是生成新的复制数据库或用不同信息来更新它;处理过程0502将原始数据库的版本作为复制数据库的源版本记录下来;处理过程0505在需要时0504重复在复制数据库上的修改操作0503,然后发送这些修改的内容;在这里,"发送这些修改的内容"意味着发送编辑给服务器的修改操作内容和数据库源版本。权利要求4是一个判断被发送的修改内容有效或无效的处理过程。为了指定一个更高版本的修改内容,一个记录版本针对每一个记录被记载下来。当一个记录被建立时,此时一个(复制数据库的)源版本作为一个记录版本被记载下来。当至少一部分该记录的内容被更正时,一个(复制数据库的)源版本将同时作为一个记录版本被记载下来。图6详细说明了权利要求4中使用这个记录版本的一个处理过程。顺序取出被编辑和最近被发送的记录0601,指定所述记录的记录版本NRV0602,指定该记录正本的记录版本0RV0603,然后比较这些记录版本0604,当NRV>0RV,最近被发送的记录在原始数据库0605中是有效的;当NRV=0RV或NRV<0RV时,最近被发送的记录是无效的,然后继续下一个处理过程。在为所有最近发送的记录执行了以上过程后,只更新原始数据库的一个版本。实施例6详细说明了版本的管理方法。权利要求5是一个如下的处理过程,该过程是修改一个可能被其他记录所引用的记录。图7说明了它的流程首先,类似图5的处理过程,将一台计算机的复制数据库与原始数据库进行数据同步0501,同时把原始数据库的版本作为复制数据库的源版本记录下来0502。接着修改一个可能被引用的记录0701,然后把这个修改的内容和源版本BV1发送给服务器0702,之后立即将复制数据库与原始数据库进行数据同步0703,此时原始数据库的新版本被获取并作为新的源版本BV2记载下来0704。如果经比较0705,BV2是在BV1之后,由于是对所述记录的修改操作,移动到下一个处理过程,直到对可能被关联记录的操作已完成。如果"可变关联目标信息"存在于一个将被我们在下一个处理过程所处理的记录的关联目标中,一个关联目标将据此而被改变。如果经比较0705,BV2不在BV1之后,可能被关联记录的修改操作可以被重做。实施例一—个关联目标没有被改变的例子图8说明了建立可变关联目标信息的例子和进行更改的处理过程。图8中子表0801有多个记录,以及"项n"0804具有指向该主表0804中一个记录的关联。子表0801中ID=a的记录引用主表A0802中ID=1的记录。由于这个记录的"可变关联目标信息"是"没有设置"的,因此来自子表中一个记录的关联关系不能被改变。实施例二恢复的例子在图8中,"display显示=False"的说明等同于一个"删除标识"。如果一个记录在显示屏上没有显示,那么它对于用户而言与被删除了是一样的。在主表A0802中,ID二2,3和4的记录是处于删除状态的(display显示=False)。在处理一个在子表0801中ID=b的记录过程中,当检查主表A中ID=2记录的"可变关联目标信息"时,"恢复"被检测到,因此"display显示二True"被设置。由于恢复的操作在以上已经被完成了,"恢复"将被改变为"没有设置"。实施例三改变关联的例子当"可变关联目标信息"被"更改给一个ID=X(X是解释的ID:主键)的记录"时,相关更改的处理过程是把与这个记录的关联关系改变成与指定记录的关联关系。也就15是说,来自子表对这个记录的关联将被改变成X记录的关联。在最开始的时候,图8所示在子表0801中ID=c的记录与主表A0802中ID=3的记录相关联。接着这个记录的"可变关联目标信息"被"改变成与记录=5的关联",也即是A中一个ID=3被改变为在子表中ID=c记录的"项n"值等于"5"。它意味着与ID=c的记录的关联被改变为与ID=5的关联。关联循环改变的阻止如果主表被彻底地改变,循环会在转换关联关系的时候发生。在这种情况下,循环的关联能被下列方法所阻止首先准备好所有传统的和新的主表;然后把对传统主表的关联更改为对于新主表的关联。如果可变关联目标信息是"表规格=S"(S是用于说明的临时表名)+"新记录=Y"(Y是用于说明主键的临时ID),相应改变关联目标的处理过程是在这个指定表S中把对这个记录的关联改变为对记录Y的关联。在最开始的时候,图8的子表0801中ID=d的记录引用了主表A0802中的4(ID=4的记录),这个记录的"可变关联目标信息"是"主表B"和"更改给记录二l",一个关联目标将会设置给主表B0803中ID=1的记录,同时在子表中一个ID=d的"项n"的值将被重写。尽管图8示出了所有更改给相同的表或给其他为了说明的表的关联目标,然而目前大部分的关系数据库有以下限制一个表只能被子表的一个项所引用。因此,设置如下的限制是非常实用的,这个限制就是关系数据库中的软件在变换后只引用新的主表、且之前的主表应被一个基于本发明的程序所访问。实施例四可变关联目标的逻辑当可变关联目标信息是"同一个表的另一个记录"+"可变关联目标的逻辑=Z"(Z是用于解释逻辑的一个临时标记)时,或当可变关联目标信息是"另一个表的记录"+"可变关联目标的逻辑=Z"时,改变关联目标的逻辑的步骤如下当该主表中的这个记录是被一个子表所引用时,激活被Z和该引用记录中改变关联目标的结果所指定的逻辑。图9的一个子表中ID=e的记录在最开始的时候引用了主表A中ID=11的记录,这个记录的"可变关联目标信息"是"同一个表的另一个记录"和"关联目标的可变逻辑=Z",因此,逻辑Z被激活。图9示出了如下所述逻辑Z的一个例子首先,提取原始关联目标记录的一个标示0901,即是在这个例子中的"Headofficebuilding";接下来,检查是不是预先指定的字符串0902,例如这个"Headoffice"的词是否包含在内;如果包含了这个字符串0903,把子表中ID=e的记录的关联关系改变为与主表A中ID=13的一个记录的关联0904;在最开始的时候,子表中ID=f的记录是引用主表A中ID=12的记录的,它被更改为与主表A中一个ID=13记录的关联关系;因此,所有与具有如"headoffice"、"managementd印artmentinheadoffice"、"headoffice"属于同一概念但不同表现方式的记录的关联被统一为与一个"HeadOffice"记录的关联。实施例五使用可变树的关联目标当"可变关联目标信息"是"一个可变树中的V节点"(V是说明节点的标示),关联目标被改变为指向节点V的一个记录。如果没有记录作为新的可变关联目标来指定给节点V,那么按顺序搜索节点V上高一级的节点,检测最开始的新目标记录,然后设置它为新的目标。在最开始时,图10的子表中ID=h的记录引用主表A中ID=21的记录,这个记录的"可变关联目标信息"是"可变树的P节点";接下来,提取1004节点P1001并检查1005在这个节点上被指定的表和记录,由于"主表B的ID=32"被指定了,所以它被设置为该关联记录的新关联目标。在最开始时,子表中ID=i的记录引用了主表A中ID=22的记录;这个记录的"可变关联目标信息"是"可变树的节点Q";接下来,提取1004节点Q1003并检查1005在这个节点被指定的表和记录,因为节点Q没有具体的规定,搜寻1007更高一级的节点,即是节点R1002,然后检查1005在这个节点被指向的表和记录;因为节点R1002中存在与"主表B中ID=31"的关联关系,因此它被设置为关联记录的关联目标并写入到该关联记录中。为了避免设置指向这个记录的关联,没有显示出具有"可变关联目标信息"的记录是个很好的主意。在图10中,主表A没有显示出来,只显示一个作为新主表的主表B。因此,一个操作者不能选择主表A的一个记录作为一个关联目标。在图9中,ID=11和ID=12的记录没有显示出来(display显示=False),只显示有一个ID=13的记录;也即是只有"HeadOffice"能够被设置为新的关联目标。当然,具有"可变关联目标信息"且"display显示=false"特性的记录将会显示给控制或修改它们的操作者。关联目标改变的处理过程可以在执行来自子表的关联时进行,即在一个关联目标上的信息是被一个程序访问的,或能在没有更高优先级的处理过程运行时被集中地处理。实施例六数据库的版本管理在本发明中,管理原始数据库的版本和复制数据库的源版本,以及实现把优先权设置给基于最新信息的修改内容的方法是很必要的。图11说明了上述结构。原始数据库1104被部署在服务器1101中。计算机A1102中有复制数据库1105,计算机B1103中有复制数据库1106。在最开始的时候,原始数据库1104的版本是O,复制数据库的源版本也是O。正如在权利要求4中已经说明的,记录版本被记载给原始数据库和复制数据库中的每一个记录;当该记录被新建立或当更新了该记录的至少一部分时,记录版本是源版本的一个记录。"O"是该原始和复制记录X的记录版本的初值。计算机A在第一个数据同步1110中建立了复制数据库,计算机B在第一个数据同步llll中建立了复制数据库,它们的源版本都是O。之后,原始数据库的版本从"O"被更新为"6",这是从不同于计算机A和计算机B的其他计算机发送给服务器的结果。在图11中,"计算机A"1102又一次执行了数据同步1112,于是复制数据库的版本为1。现在,假设"计算机A"在复制数据库1105中修改1113复制记录X1108,由于此时复制数据库的一个源版本是1,因此记录X所复制1108的记录版本被设置为1。这个修改的记录和复制数据库1105的源版本被发送1114给服务器。如果所述修改内容在服务器中被判断为有效,原始数据库1104将被更新且原始数据库的版本是7。原始的记录X也被更新1115为由"计算机A"修改的内容。在"计算机A"从服务器接收到该修改内容是有效1116的通知之后,数据同步1116将被执行,接着"计算机A"中复制数据库的源版本是7。当程序在处理一个记录时,程序也检查该记录的关联目标记录。如果存在"可变关联目标信息",这个记录的关联目标则被更改。由于该记录的一些内容是通过改变这个关联目标来更改的,记录版本被设置给那时的源版本。由较早版本所指定的可变关联目标信息要早于记载在这个记录中的版本,这点已经被确认。当通过可变关联目标信息来更改关联目标时,可变关联目标信息,也就是设置在记载记录版本之后的信息,是从较早的一个开始顺序使用的。因此,关联目标更改的执行不存在不一致性。另一方面,计算机B在原始数据库1104的版本为6时执行数据同步1117,复制数据库1106的一个版本被设置为6;接下来,(复制的)记录X1109将被修改1118;此时,记录版本被设置为6并被发送给服务器1119;因为"计算机A"(对记录X)的修改内容在计算机B进行数据同步1117之后、计算机B进行修改操作之前被发送,对记录X进行修改操作的冲突可以通过服务器的检查而被发现。"计算机A"发送的修改内容的源版本是1(记录X的正本的记录版本是1),计算机B发送的修改内容的源版本是6(被计算机B修改的一个复制记录X的记录版本是6)。因此,计算机B修改的操作被采纳,而且记录X的正本被更改为1119计算机B所修改的内容。此时,原始数据库的版本更改为8。计算机B从服务器收到"修改内容有效"1121的确认后,进行数据同步,接下来计算机B的复制数据库的源版本是8。假设计算机A执行与原始数据库的数据同步1120。此时,记录X的内容被计算机B所修改且是有效的,该结果延及"计算机A"的复制数据库;即是"计算机A"(在此时)的复制数据库中,之前被计算机A所进行的修改是无效的;而且,需要额外的机制来通知一个操作者之前的修改是无效的。工业实用性本发明不仅使得对数据库的修改处理速度得以提高,还使得并行数据库成为可能,即多台计算机对原始数据库进行复制,在复制数据库上进行修改并把修改内容映射给原始数据库。这意味着在与服务器失去连接时,仍然有可能执行一个连续的处理过程。它适于移动数据库访问和重要的商务工作;它也能适应减少处理时间、物力以及降低与通讯网络连接的花费的需求。将近在线或将近离线的操作能被基于任何一台计算机处理的每一个内容所选中;而且,因为将近在线或将近离线的计算机能够通过一台服务器共同工作,本发明给予数据库操作很大的灵活性。权利要求一种对包含有可能被引用记录的数据库处理方法,是通过使用设置给一个记录的信息,然后把所述记录的关联终点改变为指向另一个记录。2.—种对包含有可能被引用记录的数据库处理方法,包括当发现一个具有删除标记的记录的关联关系时,移除删除标记的过程。3.—种对包含有可能被引用记录的数据库处理方法,包括对一个记录设置信息,把与所述记录的关联关系改变为指向另一个记录。4.一种改变所有或部分的所述数据库并将其映射给原始数据库的数据库管理方法,该方法包括当所述复制数据库建立时,在多个对复制数据库修改内容的组合中,设置具有较新版本的修改内容以及一个原始数据库的版本为有效,然后将其映射给原始数据库。5.根据权利要求4的一种数据库管理方法,包括(1)修改一个记录的步骤,即是设置信息给所述可能被其他记录所引用的记录,把与所述记录的关联关系更改为指向另一个记录;(2)确认所述修改是否决定为有效的步骤,该确认是基于如下的标准当所述复制数据库被建立时,对复制数据库多个修改内容的组合中,具有较新版本的修改内容和一个原始数据库的版本为有效;然后(3)使用信息的步骤,即是把所述记录与另一个记录的可变关联终点设置给该记录,以及把与所述记录的关联关系更改为指向另一个记录。全文摘要本发明提供了一种修改数据库中记录之间关联关系的数据库操作方法,该方法的步骤是提取一个记录(0301),指定设置给该记录的一个关联目标记录(0302),指定设置给该关联目标记录的“可变关联目标的修改”(0303),激活一个对应于该关联目标修改信息的关联目标修改处理过程(0304),接下来,该新获取的关联目标被设置为该被提取记录的一个新关联目标(0305);更进一步的,本发明提供一种数据库的管理方法,通过该管理方法,原始数据库的复制在多个计算机中被建立,且在复制数据库中修改的内容被映射给该原始数据库;数据库的一个源版本针对每一个记录而被记载下来,对于最新源版本进行修改的内容被设置为有效。文档编号G06F12/00GK101765831SQ200880101010公开日2010年6月30日申请日期2008年6月4日优先权日2007年6月6日发明者上村邦夫申请人:雅典娜电信实验有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1