数据库的数据操作的方法及装置的制造方法

xiaoxiao2021-2-28  235

数据库的数据操作的方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,具体而言,本发明涉及一种数据库的数据操作方法及装置。
【背景技术】
[0002]随着网络应用的迅速发展,人们对获取信息的正确性和及时性的要求也越来越高。数据库系统是目前存储数据、检索信息最为方便高效的手段,绝大多数企业都将信息存储在数据库中。目前数据库系统的趋势是由小型化向大型化、集中式向分布式发展,在分布式数据库中,数据同步技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。
[0003]但是,数据库在任何时间点都有可能发生数据丢失或崩溃,现有数据库系统一般为主从数据库构架,包括一个主数据库及多个从数据库,当主数据库服务器发生故障时,需要将从数据库切换为主数据库,切换过程较为复杂,在主从切换不顺畅时可能使得数据服务暂停,导致前端业务中断,服务的连续性降低;或为各个主数据库提供单独的日志备份模块,但是需要为每一主数据库单独维护其相应的日志备份模块,维护过程复杂,增加服务端维护成本。
[0004]因此,需要实现一种多数据库架构方案,确保当其中某一数据库发生故障后能够在不影响前端数据业务的情况下将故障数据库的数据快速修复,且无需单独为每一数据库维护相应的日志备份模块,不增加数据库服务器的维护成本,最终达到数据库的高稳定性和高业务连续性的设计目的。

【发明内容】

[0005]为克服上述技术问题或者至少部分地解决上述技术问题,特提出以下技术方案:
[0006]本发明的实施例提出了一种数据库的数据操作方法,应用于包括至少两个主数据库的数据库系统中的任一个主数据库,所述方法包括:
[0007]当接收到数据操作请求时,解析所述数据操作请求以获取对应的数据操作命令和对应的数据操作信息;
[0008]判断所述数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库;
[0009]若所述数据操作请求是来自数据库系统中的另一主数据库,则判断所述数据操作命令中的操作是否为对应数据的最新操作;
[0010]若所述数据操作命令中的操作为对应数据的最新操作,则执行所述数据操作命令。
[0011 ]优选地,所述方法还包括:
[0012]若所述数据操作请求来自数据库系统外部,则判断所述数据操作命令中的操作是否为对应数据的最新操作;
[0013]若所述数据操作命令中的操作为对应数据的最新操作,则执行所述数据操作命令。
[0014]优选地,所述方法还包括:
[0015]若所述数据操作请求来自数据库系统外部,则直接执行所述数据操作命令。
[0016]优选地,在执行所述数据操作命令之后,所述方法还包括:
[0017]将所述数据操作请求同步至所述数据库系统中的另一主数据库。
[0018]优选地,所述方法还包括:
[0019]若所述数据操作命令中的操作并非对应数据的最新操作,则忽略所述数据操作请求。
[0020]其中,判断所述数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库的步骤进一步包括:
[0021]依据所述数据操作信息判断所述数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库,其中所述数据操作信息包含用以区分所述数据操作请求来源的标识。
[0022]其中,判断所述数据操作命令中的操作是否为对应数据的最新操作的步骤进一步包括:
[0023]依据所述数据操作信息及本地数据操作日志判断所述数据操作命令中的操作是否为对应数据的最新操作。
[0024]优选地,所述数据操作信息包括所述数据操作命令对应的第一时间戳,所述本地数据操作日志包括所述对应数据的最后操作对应的第二时间戳,依据所述数据操作信息及本地数据操作日志判断所述数据操作命令中的操作是否为对应数据的最新操作的步骤进一步包括:
[0025]对比所述第一时间戳与所述第二时间戳;
[0026]若所述第二时间戳早于所述第一时间戳,则所述数据操作命令中的操作为对应数据的最新操作。
[0027]其中,判断所述数据操作命令中的操作为对应数据的最新操作时,该方法还包括:
[0028]将所述数据操作命令及其对应的第一时间戳相关联的记录至本地数据操作日志中,并将该第一时间戳作为本地数据操作日志中所述对应数据的最后操作对应的第二时间戳。
[0029]优选地,所述任一个主数据库以key-value的数据存储格式进行数据的更新及同步。
[0030]本发明的实施例中提出了一种数据库的数据操作装置,应用于包括至少两个主数据库的数据库系统中的任一个主数据库,所述装置包括:
[0031]解析模块,用于当接收到数据操作请求时,解析所述数据操作请求以获取对应的数据操作命令和对应的数据操作信息;
[0032]第一判断模块,用于判断所述数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库;
[0033]第二判断模块,用于若所述数据操作请求是来自数据库系统中的另一主数据库,则判断所述数据操作命令中的操作是否为对应数据的最新操作;
[0034]第一执行模块,用于若所述数据操作命令中的操作为对应数据的最新操作,则执行所述数据操作命令。
[0035]优选地,所述装置还包括:
[0036]第三判断模块,用于若所述数据操作请求是来自数据库系统中的另一主数据库,则判断所述数据操作命令中的操作是否为对应数据的最新操作;
[0037]第二执行模块,用于若所述数据操作命令中的操作为对应数据的最新操作,则执行所述数据操作命令。
[0038]优选地,所述装置还包括:
[0039]第三执行模块,用于若所述数据操作请求来自数据库系统外部,则直接执行所述数据操作命令。
[0040]优选地,在执行所述数据操作命令之后,所述装置还包括:
[0041 ]同步模块,用于将所述数据操作请求同步至所述数据库系统中的另一主数据库。
[0042]优选地,所述装置还包括:
[0043]忽略模块,用于若所述数据操作命令中的操作并非对应数据的最新操作,则忽略所述数据操作请求。
[0044]其中,第一判断模块进一步包括:
[0045]第一判断子模块,用于依据所述数据操作信息判断所述数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库,其中所述数据操作信息包含用以区分所述数据操作请求来源的标识。
[0046]其中,第二判断模块进一步包括:
[0047]第二判断子模块,用于依据所述数据操作信息及本地数据操作日志判断所述数据操作命令中的操作是否为对应数据的最新操作。
[0048]优选地,所述数据操作信息包括所述数据操作命令对应的第一时间戳,所述本地数据操作日志包括所述对应数据的最后操作对应的第二时间戳,第二判断子模块进一步包括:
[0049]对比单元,用于对比所述第一时间戳与所述第二时间戳;
[0050]最新操作确定单元,用于若所述第二时间戳早于所述第一时间戳,则所述数据操作命令中的操作为对应数据的最新操作。
[0051]其中,判断所述数据操作命令中的操作为对应数据的最新操作时,该装置还包括:
[0052]记录模块,用于将所述数据操作命令及其对应的第一时间戳相关联的记录至本地数据操作日志中,并将该第一时间戳作为本地数据操作日志中所述对应数据的最后操作对应的第二时间戳。
[0053]优选地,所述任一个主数据库以key-value的数据存储格式进行数据的更新及同步。
[0054]本发明的实施例中,提出了一种数据库的数据操作的方案,数据库系统中的任一主数据库,通过判断获取到的数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库,并根据数据操作命令执行数据操作命令,实现了双主型数据库系统各主数据库之间的数据同步,同时,对数据操作命令中的操作是否为对应数据的最新操作进行判断,以避免由于数据通信延迟等原因带来的数据误更新情况。
[0055]本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
【附图说明】
[0056]本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
[0057]图1为本发明中一个实施例的数据库的数据操作方法的流程示意图;
[0058]图2为本发明中一个优选实施例的数据库的数据操作方法的流程示意图;
[0059]图3为本发明中另一优选实施例的数据库的数据操作方法的流程示意图;
[0060]图4为本发明中另一实施例的数据库的数据操作装置的结构示意图;
[0061]图5为本发明中一个优选实施例数据库的数据操作的装置的结构示意图;
[0062]图6为本发明中另一优选实施例数据库的数据操作的装置的结构示意图。
【具体实施方式】
[0063]下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0064]本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、 元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“親接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
[0065]本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领
[0066]域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
[0067]图1为本发明中一个实施例的数据库的数据操作方法的流程示意图。
[0068]步骤S110:当接收到数据操作请求时,解析数据操作请求以获取对应的数据操作命令和对应的数据操作信息;步骤S120:判断数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库;步骤S130:若数据操作请求是来自数据库系统中的另一主数据库,则判断数据操作命令中的操作是否为对应数据的最新操作;步骤S140:若数据操作命令中的操作为对应数据的最新操作,则执行数据操作命令。
[0069]本发明的实施例中,提出了一种数据库的数据操作的方案,数据库系统中的任一主数据库,通过判断获取到的数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库,并根据数据操作命令执行数据操作命令,实现了双主型数据库系统各主数据库之间的数据同步,同时,对数据操作命令中的操作是否为对应数据的最新操作进行判断,以避免由于数据通信延迟等原因带来的数据误更新情况。
[0070]步骤S110:当接收到数据操作请求时,解析数据操作请求以获取对应的数据操作命令和对应的数据操作信息。
[0071]例如,在包括至少两个主数据库DBjPDB2的数据库系统中,DBjPDB2通过TCP(Transmiss1n Control Protocol,传输控制协议)协议建立通信链接,当主数据库DBi接收到数据操作请求时,解析该数据操作请求以获取对应的数据操作命令如更新一条数据“Kdadd”的操作操作命令,和对应的数据操作信息,如与数据操作请求对应的时间戳“2015-05-02 13:20:10”。
[0072]步骤S120:判断数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库。
[0073]其中,依据数据操作信息判断数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库,其中,数据操作信息包含用以区分数据操作请求来源的标识。
[0074]例如,接上例,若与该数据操作请求相应的数据操作信息中包含数据库系统中的另一主数据库DB2的标识信息,则可判断该数据操作请求是来自数据库系统中的另一主数据库DB2;若该数据操作请求相应的数据操作信息中不包含数据库系统中的另一主数据库DB2的标识信息则可判断该数据操作请求是来自数据库系统外部。
[0075]步骤S130:若数据操作请求是来自数据库系统中的另一主数据库,则判断数据操作命令中的操作是否为对应数据的最新操作。
[0076]其中,判断数据操作命令中的操作是否为对应数据的最新操作的步骤进一步包括步骤S131 (图中未示出)。步骤S131:依据数据操作信息及本地数据操作日志判断数据操作命令中的操作是否为对应数据的最新操作。
[0077]具体地,如图3所示,数据操作信息包括数据操作命令对应的第一时间戳,本地数据操作日志包括对应数据的最后操作对应的第二时间戳,依据数据操作信息及本地数据操作日志判断数据操作命令中的操作是否为对应数据的最新操作的步骤,进一步包括步骤S1311和步骤S1312。步骤S1311:对比第一时间戳与第二时间戳;步骤S1312:若第二时间戳早于第一时间戳,则数据操作命令中的操作为对应数据的最新操作。
[0078]例如,接上例,若经判断得到该数据操作请求来自数据库系统中的另一主数据库,则通过解析该数据操作请求获得数据操作命令为更新一条数据,如主数据库收到更新一条数据“db2_K2+ppt”的操作操作请求,主数据库DBi根据标识信息“db2”确定该数据请求来自主数据库DB2且确定需更新的数据为“K2+ppt”,随后,通过解析该数据操作请求获得的数据操作命令对应的第一时间戳“2015-05-02 13:20:10”,与主数据库DBi的本地数据操作日志中键值为“K2”的数据的最后操作对应的第二时间戳“2015-05-02 13: 20:00”进行对比,由于第二时间戳早于第一时间戳,则数据操作命令中的操作为对应数据的最新操作,主数据库DBi执行更新数据“K2+ppt”的操作。
[0079]在另一具体实施例中,该方法还包括步骤S160(图中未示出)。步骤S160:将数据操作命令及其对应的第一时间戳相关联的记录至本地数据操作日志中,并将该第一时间戳作为本地数据操作日志中对应数据的最后操作对应的第二时间戳。
[0080]例如,接上例,将该数据操作请求对应的数据操作命令更新一条数据“Kdadd”及其对应的第一时间戳“2015-03-02 11:20:10”相关联的记录至本地DB!的数据操作日志中,并将该第一时间戳“2015-03-02 11:20:10”作为本地数据操作日志中键值为“K!”的数据的最后操作对应的第二时间戳。
[0081]步骤S140:若数据操作命令中的操作为对应数据的最新操作,则执行数据操作命令。
[0082]例如,接上例,该数据操作命令中的操作为对应数据的最新操作,则在DBi中执行更新数据“Ki+add”的操作。
[0083]其中,还包括步骤S170(图中未示出)。步骤S170:若数据操作命令中的操作并非对应数据的最新操作,则忽略数据操作请求。
[0084]例如,若通过解析该数据操作请求获得的数据操作命令对应的第一时间戳“2015-03-02 11:20:10”与主数据库DBi的本地数据操作日志中对应数据的最后操作对应的第二时间戳“2015-03-02 11: 30:10”进行对比,由于第二时间戳迟于第一时间戳,则主数据DBi忽略更新数据“h+add”的数据操作请求。
[0085]其中,主数据库DBi和DB2以key-value的数据存储格式进行数据的更新及同步。
[0086]在另一具体实施例中,如图2所示,该方法还包括步骤S210、步骤S220、步骤S230和步骤S240。步骤S210:当接收到数据操作请求时,解析数据操作请求以获取对应的数据操作命令和对应的数据操作信息;步骤S220:判断数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库;步骤S230:若数据操作请求来自数据库系统外部,则判断数据操作命令中的操作是否为对应数据的最新操作;步骤S240:若数据操作命令中的操作为对应数据的最新操作,则执行数据操作命令。
[0087]其中,本优选实施例中步骤S210和步骤S220中执行的内容与图1所示的步骤S110和步骤S120中执行的内容相同或相似,在此不再赘述。
[0088]其中,判断数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库的步骤进一步包括步骤S221;步骤S221:依据数据操作信息判断数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库,其中数据操作信息包含用以区分数据操作请求来源的标识。
[0089]例如,通过解析该数据操作请求获得数据操作命令为更新一条数据“Kdadd”,并解析得到“Ki+add”中不包含数据库系统中另一主数据库DB2的标识信息,可确定该数据操作请求来自数据库系统外部,对应的数据操作信息包括第一时间戳“2015-03-02 11: 20:10”,与主数据库本地数据操作日志中键值为”的数据的最后操作对应的第二时间戳“2015-03-02 10:20:10”进行对比,由于第二时间戳早于第一时间戳,则数据操作命令中的操作为对应数据的最新操作。
[0090]可选地,若数据操作请求来自数据库系统外部,则直接执行数据操作命令。例如,通过解析该数据操作请求获得数据操作命令为来自外部的更新一条数据“h+add”,并解析得到“Ki+add”中不包含数据库系统中另一主数据库DB2的标识信息,可确定该数据操作请求来自数据库系统外部,则在DBi*执行更新数据“Ki+add”的操作。
[0091 ]在另一具体实施例中,该方法还包括步骤S150(图中未示出)。步骤S150:将数据操作请求同步至数据库系统中的另一主数据库。
[0092]例如,主数据库DBi将来自外部的更新一条数据“Ki+add”的数据操作请求以预定义的数据封装规则,如在数据头部增加标识信息dbl,得到封装后的数据“dbl-h+add”,随后,主数据库DB^更新一条数据“dMi+add”的数据操作请求同步至数据库系统中的另一主数据库DB2。
[0093]其中,还包括步骤S250。步骤S250:若数据操作命令中的操作并非对应数据的最新操作,则忽略数据操作请求。
[0094]例如,若通过解析该数据操作请求获得的数据操作命令对应的第一时间戳“2015-05-02 13:20:10”与主数据库本地数据操作日志中对应数据的最后操作对应的第二时间戳“2015-05-02 14:10:10”进行对比,由于第二时间戳迟于第一时间戳,则主数据DBi忽略更新数据“K2+ppt”的数据操作请求。
[0095]在一具体应用场景中,在包括至少两个主数据库DBi和DB2的数据库系统中,DBi和DB2通过TCP(Transmiss1n Control Protocol,传输控制协议)协议 建立通信链接,当DBi主数据库接收到一数据操作请求,解析得到该数据操作请求中无数据库系统中的另一主数据库DB2的标识信息,可确定该数据操作请求来自数据库系统外部,解析得到该数据操作请求为修改数据“Ki+add”为“h+addit1n”,以及对应的数据操作信息,如对应数据操作请求的第一时间戳“2015-08-02 13:20:10”,随后,通过解析该数据操作请求获得的数据操作命令对应的第一时间戳“2015-08-02 13: 20:10”与主数据库本地数据操作日志中键值为“K!”的数据的最后操作对应的第二时间戳“2015-08-02 13:20:00”进行对比,由于第二时间戳早于第一时间戳,则该数据操作命令中的操作为对键值为“Ki”的数据的最新操作,DBi主数据库执行修改DBi*的数据“h+add”为%+addit1n”的操作,本地数据操作日志中记录下将“Ki+add”修改为“Ki+addit1n”的数据操作命令,以及操作时间“2015-08-0213:20: 20”,并将本地数据操作日志中键值为“Kf的数据的最后操作对应的第二时间戳更新为“2015-08-02 13:20:20”,并将数据“Ki+addit1n”以预定义的数据封装规则封装得到数据“dbl-Ki+addit1n”,随后将“Ki+add”修改为“dbl-Ki+addit1n”的数据操作请求和更新后的第二时间戳同步至DB2主数据库;若主数据库DBi和主数据库DB2间的通信发生故障中断后,以预定义的数据接收规则如主数据库DBi不再接收外部数据的更新,当监测到DBi主数据库与DB2主数据库之间的通信恢复时,提取DBi主数据库向DB2主数据库发送的通信建立请求中的主数据库本地数据操作日志中对应数据的最后操作对应的第二时间戳如“2015-08-02 14:20:20”,根据第二时间戳“2015-08-02 14:20: 20”及通信恢复的当前时间“2015-08-02 15:20: 20”确定DB!主数据库与DB2主数据库之间同步中断的时间区间为“2015-08-02 14:20: 20”至“2015-08-02 15:20:20”,将DB2主数据库在该时间区间内发生的来自外部数据的更新数据同步至DBi主数据库。
[0096]图4为本发明中另一实施例的数据库的数据操作装置的结构示意图。
[0097]当接收到数据操作请求时,解析模块410解析数据操作请求以获取对应的数据操作命令和对应的数据操作信息;第一判断模块420判断数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库;第二判断模块430若数据操作请求是来自数据库系统中的另一主数据库,则判断数据操作命令中的操作是否为对应数据的最新操作;第一执行模块440若数据操作命令中的操作为对应数据的最新操作,则执行数据操作命令。
[0098]本发明的实施例中,提出了一种数据库的数据操作的方案,数据库系统中的任一主数据库,通过判断获取到的数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库,并根据数据操作命令执行数据操作命令,实现了双主型数据库系统各主数据库之间的数据同步,同时,对数据操作命令中的操作是否为对应数据的最新操作进行判断,以避免由于数据通信延迟等原因带来的数据误更新情况。
[0099]当接收到数据操作请求时,解析模块410解析数据操作请求以获取对应的数据操作命令和对应的数据操作信息。
[0100]例如,在包括至少两个主数据库DBjPDB2的数据库系统中,DBjPDB2通过TCP(Transmiss1n Control Protocol,传输控制协议)协议建立通信链接,当主数据库DBi接收到数据操作请求时,解析该数据操作请求以获取对应的数据操作命令如更新一条数据“Ki+add”的操作操作命令,和对应的数据操作信息,如与数据操作请求对应的时间戳“2015-05-02 13:20:10”。
[0101]第一判断模块420判断数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库。
[0102]其中,依据数据操作信息判断数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库,其中,数据操作信息包含用以区分数据操作请求来源的标识。
[0103]例如,接上例,若与该数据操作请求相应的数据操作信息中包含数据库系统中的另一主数据库DB2的标识信息,则可判断该数据操作请求是来自数据库系统中的另一主数据库DB2;若该数据操作请求相应的数据操作信息中不包含数据库系统中的另一主数据库DB2的标识信息则可判断该数据操作请求是来自数据库系统外部。
[0104]若数据操作请求来自数据库系统中的另一主数据库,第二判断模块430则判断数据操作命令中的操作是否为对应数据的最新操作。
[0105]其中,第二判断模块进一步包括第二判断子模块431(图中未示出)。第二判断子模块431依据数据操作信息及本地数据操作日志判断数据操作命令中的操作是否为对应数据的最新操作。
[0106]具体地,如图6所示,数据操作信息包括数据操作命令对应的第一时间戳,本地数据操作日志包括对应数据的最后操作对应的第二时间戳,第二判断子模块进一步包括对比单元4311和最新操作确定单元4312。对比单元4311对比第一时间戳与第二时间戳;最新操作确定单元4312若第二时间戳早于第一时间戳,则数据操作命令中的操作为对应数据的最新操作。
[0107]例如,接上例,若经判断得到该数据操作请求来自数据库系统中的另一主数据库,则通过解析该数据操作请求获得数据操作命令为更新一条数据,如主数据库收到更新一条数据“db2_K2+ppt”的操作操作请求,主数据库DBi根据标识信息“db2”确定该数据请求来自主数据库DB2且确定需更新的数据为“K2+ppt”,随后,通过解析该数据操作请求获得的数据操作命令对应的第一时间戳“2015-05-02 13:20:10”,与主数据库DBi的本地数据操作日志中键值为“K2”的数据的最后操作对应的第二时间戳“2015-05-02 13: 20:00”进行对比,由于第二时间戳早于第一时间戳,则数据操作命令中的操作为对应数据的最新操作,主数据库DBi执行更新数据“K2+ppt”的操作。
[0108]在另一具体实施例中,该装置还包括记录模块460(图中未示出)。记录模块460将数据操作命令及其对应的第一时间戳相关联的记录至本地数据操作日志中,并将该第一时间戳作为本地数据操作日志中对应数据的最后操作对应的第二时间戳。
[0109]例如,接上例,将该数据操作请求对应的数据操作命令更新一条数据“Ki+add”及其对应的第一时间戳“2015-03-02 11:20:10”相关联的记录至本地DB!的数据操作日志中,并将该第一时间戳“2015-03-02 11:20:10”作为本地数据操作日志中键值为“K!”的数据的最后操作对应的第二时间戳。
[0110]可选地,若数据操作命令中的操作为对应数据的最新操作,第一执行模块440可执行数据操作命令。
[0111]例如,接上例,该数据操作命令中的操作为对应数据的最新操作,则在DBi中执行更新数据“Ki+add”的操作。
[0112]其中,还包括忽略模块470(图中未示出)。若数据操作命令中的操作并非对应数据的最新操作,忽略模块470则忽略数据操作请求。
[0113]例如,若通过解析该数据操作请求获得的数据操作命令对应的第一时间戳“2015-03-02 11:20:10”与主数据库DBi的本地数据操作日志中对应数据的最后操作对应的第二时间戳“2015-03-02 11: 30:10”进行对比,由于第二时间戳迟于第一时间戳,则主数据DBi忽略更新数据“h+add”的数据操作请求。
[0114]其中,主数据库DBi和DB2以key-value的数据存储格式进行数据的更新及同步。
[0115]在另一具体实施例中,如图5所示,该装置还包括解析模块510、第一判断模块520、第三判断模块530和第二执行模块540。当接收到数据操作请求时,解析模块510解析数据操作请求以获取对应的数据操作命令和对应的数据操作信息;第一判断模块520判断数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库;若数据操作请求是来自数据库系统中的另一主数据库,则第三判断模块530判断数据操作命令中的操作是否为对应数据的最新操作;若数据操作命令中的操作为对应数据的最新操作,则第二执行模块540执行数据操作命令
[0116]其中,本优选实施例中解析模块510和第一判断模块520中执行的内容与图4所示的解析模块410和第一判断模块420中执行的内容相同或相似,在此不再赘述。
[0117]其中,第一判断模块520进一步包括第一判断子模块521;第一判断子模块521依据数据操作信息判断数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库,其中数据操作信息包含用以区分数据操作请求来源的标识。
[0118]例如,通过解析该数据操作请求获得数据操作命令为更新一条数据“Ki+add”,并解析得到“Ki+add”中不包含数据库系统中另一主数据库DB2的标识信息,可确定该数据操作请求来自数据库系统外部,对应的数据操作信息包括第一时间戳“2015-03-02 11: 20:10”,与主数据库本地数据操作日志中键值为”的数据的最后操作对应的第二时间戳“2015-03-02 10:20:10”进行对比,由于第二时间戳早于第一时间戳,则数据操作命令中的操作为对应数据的最新操作。
[0119]又例如,通过解析该数据操作请求获得数据操作命令为更新一条数据“Ki+add”,并解析得到“Ki+add”中不包含数据库系统中另一主数据库DB2的标识信息,可确定该数据操作请求来自数据库系统外部,则在 DBi*执行更新数据“h+add”的操作。在另一具体实施例中,该装置还包括同步模块550(图中未示出)。同步模块550将数据操作请求同步至数据库系统中的另一主数据库。
[0120]例如,主数据库DBi将来自外部的更新一条数据%+add”的数据操作请求以预定义的数据封装规则,如在数据头部增加标识信息dbl,得到封装后的数据“dbl-h+add”,随后,主数据库DB^更新一条数据“dMi+add”的数据操作请求同步至数据库系统中的另一主数据库DB2。
[0121]其中,还包括忽略模块560(图中未示出)。若数据操作命令中的操作并非对应数据的最新操作,忽略模块560则忽略数据操作请求。
[0122]例如,若通过解析该数据操作请求获得的数据操作命令对应的第一时间戳“2015-05-02 13:20:10”与主数据库本地数据操作日志中对应数据的最后操作对应的第二时间戳“2015-05-02 14:10:10”进行对比,由于第二时间戳迟于第一时间戳,则主数据DBi忽略更新数据“K2+ppt”的数据操作请求。
[0123]在一具体应用场景中,在包括至少两个主数据库DBjPDB2的数据库系统中,DB^DB2通过TCP(Transmiss1n Control Protocol,传输控制协议)协议建立通信链接,当DBi主数据库接收到一数据操作请求,解析得到该数据操作请求中无数据库系统中的另一主数据库DB2的标识信息,可确定该数据操作请求来自数据库系统外部,解析得到该数据操作请求为修改数据“Ki+add”为“h+addit1n”,以及对应的数据操作信息,如对应数据操作请求的第一时间戳“2015-08-02 13:20:10”,随后,通过解析该数据操作请求获得的数据操作命令对应的第一时间戳“2015-08-02 13: 20:10”与主数据库本地数据操作日志中键值为“K!”的数据的最后操作对应的第二时间戳“2015-08-02 13:20:00”进行对比,由于第二时间戳早于第一时间戳,则该数据操作命令中的操作为对键值为“Ki”的数据的最新操作,DBi主数据库执行修改DBi*的数据“h+add”为%+addit1n”的操作,本地数据操作日志中记录下将“Ki+add”修改为“Ki+addit1n”的数据操作命令,以及操作时间“2015-08-0213:20: 20”,并将本地数据操作日志中键值为“Kf的数据的最后操作对应的第二时间戳更新为“2015-08-02 13:20:20”,并将数据“Ki+addit1n”以预定义的数据封装规则封装得到数据“dbl-Ki+addit1n”,随后将“Ki+add”修改为“dbl-Ki+addit1n”的数据操作请求和更新后的第二时间戳同步至DB2主数据库;若主数据库DBi和主数据库DB2间的通信发生故障中断后,以预定义的数据接收规则如主数据库DBi不再接收外部数据的更新,当监测到DBi主数据库与DB2主数据库之间的通信恢复时,提取DBi主数据库向DB2主数据库发送的通信建立请求中的主数据库本地数据操作日志中对应数据的最后操作对应的第二时间戳如“2015-08-02 14:20:20”,根据第二时间戳“2015-08-02 14:20: 20”及通信恢复的当前时间“2015-08-02 15:20: 20”确定DB!主数据库与DB2主数据库之间同步中断的时间区间为“2015-08-02 14:20: 20”至“2015-08-02 15:20:20”,将DB2主数据库在该时间区间内发生的来自外部数据的更新数据同步至DBi主数据库。
[0124]本技术领域技术人员可以理解,本发明包括涉及用于执行本申请中操作中的一项或多项的设备。这些设备可以为所需的目的而专门设计和制造,或者也可以包括通用计算机中的已知设备。这些设备具有存储在其内的计算机程序,这些计算机程序选择性地激活或重构。这样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指令并分别耦联到总线的任何类型的介质中,计算机可读介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-R0M、和磁光盘)、R0M(Read_0nly Memory,只读存储器)、RAM(Random Access Memory,随即存储器)、EPR0M(Erasable Programmable Read-Only Memory,可擦写可编程只读存储器)、EEPR0M(Electrically Erasable ProgrammableRead-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。
[0125]本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。
[0126]本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
[0127]以上仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【主权项】
1.一种数据库的数据操作方法,应用于包括至少两个主数据库的数据库系统中的任一个主数据库,所述方法包括: 当接收到数据操作请求时,解析所述数据操作请求以获取对应的数据操作命令和对应的数据操作信息; 判断所述数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库; 若所述数据操作请求是来自数据库系统中的另一主数据库,则判断所述数据操作命令中的操作是否为对应数据的最新操作; 若所述数据操作命令中的操作为对应数据的最新操作,则执行所述数据操作命令。2.根据权利要求1所述的数据库的数据操作方法,其特征在于,所述方法还包括: 若所述数据操作请求来自数据库系统外部,则判断所述数据操作命令中的操作是否为对应数据的最新操作; 若所述数据操作命令中的操作为对应数据的最新操作,则执行所述数据操作命令。3.根据权利要求1所述的数据库的数据操作方法,其特征在于,所述方法还包括: 若所述数据操作请求来自数据库系统外部,则直接执行所述数据操作命令。4.根据权利要求2或3所述的数据库的数据操作方法,其特征在于,在执行所述数据操作命令之后,所述方法还包括: 将所述数据操作请求同步至所述数据库系统中的另一主数据库。5.根据权利要求1-4中任一项所述的数据库的数据操作方法,其特征在于,所述方法还包括: 若所述数据操作命令中的操作并非对应数据的最新操作,则忽略所述数据操作请求。6.—种数据库的数据操作装置,应用于包括至少两个主数据库的数据库系统中的任一个主数据库,所述装置包括: 解析模块,用于当接收到数据操作请求时,解析所述数据操作请求以获取对应的数据操作命令和对应的数据操作信息; 第一判断模块,用于判断所述数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库; 第二判断模块,用于若所述数据操作请求是来自数据库系统中的另一主数据库,则判断所述数据操作命令中的操作是否为对应数据的最新操作; 第一执行模块,用于若所述数据操作命令中的操作为对应数据的最新操作,则执行所述数据操作命令。7.根据权利要求6所述的数据库的数据操作装置,其特征在于,所述装置还包括: 第三判断模块,用于若所述数据操作请求是来自数据库系统中的另一主数据库,则判断所述数据操作命令中的操作是否为对应数据的最新操作; 第二执行模块,用于若所述数据操作命令中的操作为对应数据的最新操作,则执行所述数据操作命令。8.根据权利要求6所述的数据库的数据操作装置,其特征在于,所述装置还包括: 第三执行模块,用于若所述数据操作请求来自数据库系统外部,则直接执行所述数据操作命令。9.根据权利要求7或8所述的数据库的数据操作装置,其特征在于,在执行所述数据操作命令之后,所述装置还包括: 同步模块,用于将所述数据操作请求同步至所述数据库系统中的另一主数据库。10.根据权利要求6-9中任一项所述的数据库的数据操作装置,其特征在于,所述装置还包括: 忽略模块,用于若所述数据操作命令中的操作并非对应数据的最新操作,则忽略所述数据操作请求。
【专利摘要】本发明提供了一种数据库的数据操作的方法,当接收到数据操作请求时,解析数据操作请求以获取对应的数据操作命令和对应的数据操作信息,随后判断数据操作请求是来自数据库系统外部或是来自数据库系统中的另一主数据库,若数据操作请求是来自数据库系统中的另一主数据库,则判断数据操作命令中的操作是否为对应数据的最新操作,若数据操作命令中的操作为对应数据的最新操作,则执行数据操作命令。本发明实现了双主型数据库系统各主数据库之间的数据同步,避免了由于数据通信延迟等原因带来的数据误更新情况。
【IPC分类】G06F17/30
【公开号】CN105488115
【申请号】CN201510817737
【发明人】彭信东, 陈宗志, 杨挺, 杨艳杰
【申请人】北京奇虎科技有限公司, 奇智软件(北京)有限公司
【公开日】2016年4月13日
【申请日】2015年11月23日

最新回复(0)