一种保持数据一致性的方法、装置、系统和应用服务器的制造方法

文档序号:8935047阅读:252来源:国知局
一种保持数据一致性的方法、装置、系统和应用服务器的制造方法
【技术领域】
[0001]本发明涉及数据库技术领域,具体涉及一种保持数据一致性的方法、装置、系统和应用服务器。
【背景技术】
[0002]由于单台数据库服务器的性能及容量限制,当业务发展到一定程度时,不得不对业务数据进行切分,使业务数据分别存储到多台数据库服务器的多个数据库中。
[0003]当业务需要同时向多个数据库写入数据时,若部分数据库提交失败,而另外的数据库提交成功,则会出现业务数据不一致的问题,导致最终存储的数据无法保证一致性而出现错误,给业务造成损失。
[0004]图1为现有技术中对两个数据库同时进行操作的流程图。如图1所示,Web服务器需要进行跨库操作,将业务数据同时写入到数据库A和数据库B,其流程如下:
[0005]步骤S101、创建与数据库A的数据库连接;
[0006]步骤S102、启动数据库事务A ;
[0007]步骤S103、对数据库A执行一系列读写操作,以便将业务数据写入到数据库A ;
[0008]步骤S104、如果对数据库A的操作成功,提交数据库事务A (Commit),对数据库A的操作完成;
[0009]步骤S105、创建与数据库B的数据库连接;
[0010]步骤S106、启动数据库事务B ;
[0011]步骤S107、对数据库B执行一系列读写操作,以便将业务数据写入到数据库B ;
[0012]步骤S108、如果对数据库B的操作成功,提交数据库事务B (Commit),对数据库B的操作完成;
[0013]至此,对数据库A、B的全部操作执行完毕,操作结果为:对数据库A的操作执行成功,对数据库B的操作执行成功。
[0014]在步骤S109中,如果对数据库B的操作失败,则回滚(Rollback)数据库事务B。全部操作执行完毕,执行结果为:对数据库A的操作执行成功,对数据库B的操作执行失败,此时,数据库A和数据库B出现数据不一致。
[0015]在步骤SllO中,如果对数据库A操作失败,回滚数据库事务A。全部操作执行完毕,执行结果为:对数据库A的操作执行失败,对数据库B的操作未执行。
[0016]可以看出,根据步骤S109的执行结果,对数据库A的操作执行成功,对数据库B的操作执行失败,因为对数据库A的操作已提交到数据库A,无法回退,会导致数据库A数据与数据库B数据在逻辑上不一致。

【发明内容】

[0017]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种保持数据一致性的方法、装置、系统和应用服务器。
[0018]根据本发明的一个方面,提供了一种保持数据一致性的方法,在应用服务器中执行,适于将业务数据同时写入到第一数据库和第二数据库,所述方法包括:创建与第一数据库的第一数据库连接,并在第一数据库连接下启动第一数据库事务,执行对第一数据库的第一读写操作,以便将业务数据写入到第一数据库;创建与第二数据库的第二数据库连接,并在第二数据库连接下启动第二数据库事务,执行对第二数据库的第二读写操作,以便将业务数据写入到第二数据库;当第一读写操作对应的第一操作结果以及第二读写操作对应的第二操作结果均为成功时,分别执行对第一数据库事务和第二数据库事务的提交操作。
[0019]可选地,根据本发明的保持数据一致性的方法,还包括:当第一操作结果和第二操作结果中的任意一个为失败时,分别执行对第一数据库事务和第二数据库事务的回滚操作。
[0020]可选地,在根据本发明的保持数据一致性的方法中,第一数据库事务和第二数据库事务均为基于预写式日志的事务。
[0021]可选地,在根据本发明的保持数据一致性的方法中,所述应用服务器为Web服务器。
[0022]根据本发明的另一方面,提供了一种保持数据一致性的装置,驻留在应用服务器中,适于将业务数据同时写入到第一数据库和第二数据库,所述装置包括:第一操作单元,适于创建与第一数据库的第一数据库连接,并在第一数据库连接下启动第一数据库事务,执行对第一数据库的第一读写操作,以便将业务数据写入到第一数据库;第二操作单元,适于创建与第二数据库的第二数据库连接,并在第二数据库连接下启动第二数据库事务,执行对第二数据库的第二读写操作,以便将业务数据写入到第二数据库;提交单元,适于当第一读写操作对应的第一操作结果以及第二读写操作对应的第二操作结果均为成功时,分别执行对第一数据库事务和第二数据库事务的提交操作。
[0023]可选地,根据本发明的保持数据一致性的装置,还包括:回滚单元,适于当第一操作结果和第二操作结果中的任意一个为失败时,分别执行对第一数据库事务和第二数据库事务的回滚操作。
[0024]可选地,在根据本发明的保持数据一致性的装置中,第一数据库事务和第二数据库事务均为基于预写式日志的事务。
[0025]可选地,在根据本发明的保持数据一致性的装置中,所述应用服务器为Web服务器。
[0026]根据本发明的又一方面,提供了一种应用服务器,所述应用服务器中驻留有根据本发明的保持数据一致性的装置。
[0027]根据本发明的再一方面,提供了一种保持数据一致性的系统,包括根据本发明的应用服务器以及第一数据库服务器和第二数据库服务器,第一数据库服务器中包括第一数据库,第二数据库服务器中包括第二数据库。
[0028]根据本发明的保持数据一致性的方案,当业务需要同时向多个数据库写入数据时,通过对数据库事务提交的时机进行控制,仅当对第一数据库和第二数据库的操作结果均为成功时,才执行对第一数据库事务和第二数据库事务的提交操作,只要第一数据库和第二数据库的操作结果中任意一个失败,都会对第一数据库事务和第二数据库事务执行回滚操作,在较大程度上保证了跨数据库数据的一致性。
[0029]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【附图说明】
[0030]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0031]图1为现有技术中对两个数据库同时进行操作的流程图;
[0032]图2示出了根据本发明一个实施例的保持数据一致性的方法流程图;以及
[0033]图3示出了根据本发明一个实施例的保持数据一致性的系统结构图。
【具体实施方式】
[0034]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0035]图2示出了根据本发明一个实施例的保持数据一致性的方法流程图,该方法在应用服务器(例如Web服务器)中执行,适于将业务数据同时写入到数据库A和第二数据库B。
[0036]参照图2,该方法始于步骤S201。在步骤S201中,创建与数据库A的数据库连接A,创建数据库连接A的示例性语句如下:
[0037]string connect1nStringA = "Server = 192.168.0.1 ;Database = TestA ;UserID = TestA ;Password = TestA ;〃 ;
[0038]SqlConnect1n connA = new SqlConnect1n (connect1nStringA);
[0039]创建数据库连接A之后,方法进入步骤S202。在步骤S202中,在数据库连接A下,启动数据库事务A,启动数据库事务A的示例性语句如下:
[0040]SqlTransact1n transact1nA = connA.BeginTransact
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1