CN107341163B - 数据同步方法及装置 - Google Patents
数据同步方法及装置 Download PDFInfo
- Publication number
- CN107341163B CN107341163B CN201610287261.5A CN201610287261A CN107341163B CN 107341163 B CN107341163 B CN 107341163B CN 201610287261 A CN201610287261 A CN 201610287261A CN 107341163 B CN107341163 B CN 107341163B
- Authority
- CN
- China
- Prior art keywords
- data set
- index
- data
- record
- change
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据同步方法及装置,其中的方法包括:获取已同步处理的第一数据集合以及待同步处理的第二数据集合;根据主关键字获取第一数据集合和第二数据集合中均存在且未发生变化的指标;在判断出所述指标当前值无变化持续时间达到与该指标对应的预设阈值的情况下,将第二数据集合中该指标所在记录的相应数据同步到目标数据库中。本发明提供的技术方案完善了数据同步技术,提高了数据同步的可靠性。
Description
技术领域
本发明涉及计算机技术,尤其涉及一种数据同步方法以及数据同步装置。
背景技术
线上应用系统往往需要使用数据仓库中的指标(指标即基于一个维度或者多个维度对数据进行聚合统计而获得的计算结果),以便于为需求方提供相应的数据分析等服务。由于线上应用系统对响应时间要求较高,因此,通常需要将数据仓库中的包括指标在内的相应数据同步到内存数据库中,且同步频率通常与数据仓库中的指标计算频率保持一致。
目前,数据同步方式通常采用基于指标的数据库增量同步方式,即针对发生变化的指标进行数据同步,如在确定出数据仓库中的某一指标没有存在于内存数据库中或者与内存数据库中的相应指标不相同时,将数据仓库中的包含该指标在内的相应数据同步到内存数据库中。
发明人在实现本发明过程中发现,现有的基于指标的数据库增量同步方式至少存在如下两方面问题:
1、内存数据库中指标没有变化的数据会丢失;即在每次统计获得的指标没有变化的情况下,内存数据库中的相应指标不会被更新,从而针对内存数据库中的相应数据的失效时间的计时值不会被更新,进而导致内存数据库中的相应数据会由于其计时值达到失效时间而丢失;一个具体的例子,设定指标为用户在90天内去过的城市个数,且一用户一直位于同一个城市,则第1天统计该用户去过的城市个数为1,由于内存数据库中没有相应的记录,因此,包含该指标的相应数据被同步到内存数据库中,且其失效时间被设置为90天后;由于第2、3……91天统计该用户去过的城市个数均为1,因此,不会对内存数据库中的包含该指标的相应数据进行同步处理,从而使内存数据库中的包含该指标的相应数据的失效时间的计时值不会被更新,因此,在第91天时,内存数据库中的包含该指标的相应数据由于失效而丢失。
2、内存数据库中需要失效的数据没有失效;即在数据仓库中没有相应的指标,而内存数据库中存在相应的指标的情况下,内存数据库中的包含该指标的相应数据不会由于增量同步而消失;一个具体的例子,设定指标为用户在3天内的洗澡次数,且用户第1天洗澡,而第2、3、4天均没有洗澡,则第4天统计第1、2、3天的总洗澡次数为1,由于内存数据库中没有相应的记录,因此,包含该指标的相应数据被同步到内存数据库中,失效时间被设置为3天后;在第5天进行总洗澡次数统计时,由于该用户在第2、3、4天没有洗澡而没有相应的记录,因此,不会针对该用户进行指标统计操作,从而内存数据库中的包含该指标的相应数据被保留了下来。
发明内容
本发明的目的是提供一种数据同步方法及装置。
根据本发明的其中一个方面,提供了一种数据同步方法,且该方法主要包括以下步骤:获取已同步处理的第一数据集合以及待同步处理的第二数据集合;根据主关键字获取第一数据集合和第二数据集合中均存在且未发生变化的指标;在判断出所述指标当前值无变化持续时间达到与该指标对应的预设阈值的情况下,将第二数据集合中该指标所在记录的相应数据同步到目标数据库中。
根据本发明的另一个方面,还提供了一种数据同步装置,且该装置主要包括:第一获取模块,用于获取已同步处理的第一数据集合以及待同步处理的第二数据集合;第二获取模块,用于根据主关键字获取第一数据集合和第二数据集合中均存在且未发生变化的指标;第一同步模块,用于在判断出所述指标当前值无变化持续时间达到与该指标对应的预设阈值的情况下,将第二数据集合中该指标所在记录的相应数据同步到目标数据库中。
与现有技术相比,本发明具有以下优点:本发明通过获取已同步处理的第一数据集合和待同步处理的第二数据集合,可以从第一数据集合和第二数据集合中查找到存在于两个数据集合中且未发生变化的指标,针对这样的指标,如果判断出指标当前值无变化持续时间已经达到了与该指标对应的预设阈值,则通过将第二数据集合中该指标所在记录的相应数据同步到目标数据库中,可以使目标数据库中针对包含该指标的数据的失效时间的计时值重新开始计时,从而避免了目标数据库中相应的数据由于失效而丢失的现象;由此可知,本发明提供的技术方案完善了数据同步技术,提高了数据同步的可靠性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明实施例一的数据同步方法流程图;
图2为本发明实施例一的采用全外连接的方式获得第一数据集合和第二数据集合中均存在且未发生变化的指标的流程图;
图3为本发明实施例一的判断指标在第一数据集合以及第二数据集合中均设置有无变化标记的一流程图;
图4为本发明实施例一的判断指标在第一数据集合以及第二数据集合中均设置有无变化标记的另一流程图;
图5为本发明实施例二的数据同步方法流程图;
图6为本发明实施例三的数据同步装置的第一结构示意图;
图7为本发明实施例三的数据同步装置的第二结构示意图;
图8为本发明实施例三的第二获取模块的结构示意图;
图9为本发明实施例三的设置模块的结构示意图;
图10为本发明实施例三的第一同步模块的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施例作详细描述。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然本发明的流程图将各项操作描述成顺序的处理,但是,其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
本实施例中的服务器包括但不限于单个网络服务器、多个网络服务器组成的服务器组或者基于云计算(Cloud Computing)的由大量计算机或者网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述服务器可以接入网络并与网络中的其他设备进行信息交互操作。其中,所述服务器所能够接入的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。
需要说明的是,所述服务器以及网络等仅为举例,其他现有的或今后可能出现的服务器或者网络如可适用于本申请,也应包含在本申请保护范围以内,并以引用方式包含于此。
后面描述所讨论的方法(其中一些通过流程图示出)实施例可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合的形式来实施。当用软件、固件、中间件或者微代码来实施时,用以实施必要任务的程序代码或者代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。
这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本申请的示例性实施例的目的,但是,本申请可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。
应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
应当理解的是,当一个单元被称为“连接”或者“耦合”到另一个单元时,其可以直接连接或者耦合到所述另一个单元,也可以存在中间单元。与此相对的,当一个单元被称为“直接连接”或者“直接耦合”到另一个单元时,则不存在中间单元。应当按照类似的方式来解释被用于描述单元之间的关系的其他词语(例如,“处于...之间”相比于“直接处于...之间”,“与...邻近”相比于“与...直接邻近”等等)。
这里所使用的术语仅仅是为了描述具体实施例,而不是意图限制示例性实施例。除非上下文中明确地另有所指,否则,这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定了所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或者添加一个或更多的其他特征、整数、步骤、操作、单元、组件和/或其组合。
还应当提到的是,在一些替换的实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。
技术术语说明:
指标通常包括基于一个维度或者多个维度对数据进行聚合统计而获得的计算结果;
源数据库,在数据同步过程中,通常是指存储有被同步数据的数据库,如源数据库可以为数据仓库等;
主关键字是指其值可以唯一标识出数据集合中的一条记录的字段(如唯一标识出表中的一条记录的字段);
数据集合用于存储记录,且数据集合可以具体为表等;
时间窗口是指基于时间的预设阈值;
内存数据库通常是指数据放在内存中直接操作的数据库。
下面结合附图对本发明的技术方案作进一步详细描述。
实施例一、数据同步方法。
图1为本实施例的数据同步方法流程图。图1中,本实施例的方法主要包括:步骤S100、步骤S110以及步骤S120。本实施例的方法通常由能够访问源数据库以及目标数据库的设备(如计算机或者服务器等)执行。
下面对本实施例的方法所包含的各步骤分别进行说明。
S100、获取已同步处理的第一数据集合以及待同步处理的第二数据集合。
作为示例,可以从源数据库中获取基于指标前次已同步处理的第一数据集合以及基于指标本次待同步处理的第二数据集合,在将数据仓库中的包含指标的相应数据同步到内存数据库中的应用场景中,本实施例中的源数据库(即同步源数据库)为数据仓库,目标数据库(即同步目标数据库)为内存数据库,且本实施例的基于指标的数据库增量同步方法可以称为基于指标的从数据仓库到内存数据库增量同步方法。在其他的同步应用场景中,源数据库和目标数据库的具体表现形式应与同步应用场景相适应,本实施例不限制源数据库和目标数据库的具体表现形式。
作为示例,本实施例中的基于指标前次已同步处理的第一数据集合是指最近一次进行了基于指标的数据库增量同步处理的数据集合(如表),基于指标本次待同步处理的第二数据集合是指本次需要进行基于指标的数据库增量同步处理的数据集合(如表),且第一数据集合和第二数据集合中的各条记录均来自源数据库。一个具体的例子,在指标的计算频率为一天,且数据库增量同步频率也为一天的情况下,第一数据集合可以为包含有用于前一日计算指标的相应数据以及前一日计算出的指标的数据表(可以称为前一日数据表),而第二数据集合可以为包含用于当日计算指标的相应数据以及当日计算出的指标的数据表(可以称为当日数据表)。
作为示例,本实施例可以通过设置基于时间的数据查询条件,来从源数据库中获取第一数据集合和第二数据集合;如在源数据库的记录中包含有同步处理时间或者指标计算时间等字段的情况下,通过设置同步处理时间或者指标计算时间为前次同步处理时间或者前次指标计算时间(如昨天的日期)这一查询条件,可以通过查询从源数据库中获得第一数据集合,而通过设置同步处理时间或者指标计算时间为本次同步处理时间或者本次指标计算时间(如今天的日期)这一查询条件,可以通过查询从源数据库中获得第二数据集合。
需要特别说明的是,在第一次进行指标计算,并在第一次进行指标计算后,对目标数据库进行基于指标的数据库增量同步的处理过程中,本实施例中的第一数据集合应为空。本实施例可以通过设置基于无效时间的数据查询条件,来从源数据库中获取为空的第一数据集合;如在源数据库的记录中包含有同步处理时间或者指标计算时间等字段的情况下,通过设置同步处理时间或者指标计算时间为无效时间(如9999年1月1日)这一查询条件,可以通过查询从源数据库中获得为空的第一数据集合。
S110、根据主关键字获取第一数据集合和第二数据集合中均存在且未发生变化的指标。
本实施例中的主关键字可以为数据集合主关键字,数据集合主关键字即第一数据集合和第二数据集合的主关键字。本实施例所获取的第一数据集合和第二数据集合中均存在且未发生变化的指标是指:指标同时存在于第一数据集合和第二数据集合中,且指标在第一数据集合中的值与该指标在第二数据集合中的值完全相同。
作为示例,本实施例可以采用全外连接的方式获得第一数据集合和第二数据集合中均存在且未发生变化的指标。下面结合图2对采用全外连接的方式获得第一数据集合和第二数据集合中均存在且未发生变化的指标的过程进行说明。
图2中,S200、根据数据集合主关键字将第一数据集合和第二数据集合全外连接。
作为示例,设定数据集合主关键字为用户标识(ID),第一数据集合的内容包括下述表1,而第二数据集合的内容包括下述表2:
表1
用户标识(ID) | 用户名称 | 指标A |
1 | A | A1 |
2 | B | B1 |
4 | D | D1 |
表2
用户标识(ID) | 用户名称 | 指标A |
1 | A | A1 |
3 | C | C2 |
本实施例根据用户标识将包含上述表1的第一数据集合和包含上述表2的第二数据集合全外连接后,所获得的内容包括下述表3:
表3
用户标识 | 用户名称 | 指标A | 用户标识 | 用户名称 | 指标A |
1 | A | A1 | 1 | A | A1 |
2 | B | B1 | Null | Null | Null |
Null | Null | Null | 3 | C | C2 |
4 | D | D1 | Null | Null | Null |
S210、根据全外连接获得的各条记录确定第一数据集合和第二数据集合中均存在且未发生变化的指标。
作为示例,全外连接后通常会形成多条记录,本实施例应针对每一条记录分别进行下述判断:判断一条记录中的第一个指标是否为空以及该条记录中的第二个指标是否为空,如果该条记录中的第一个指标不为空,且第二个指标也不为空,则确定出该条记录中的指标是第一数据集合和第二数据集合均存在的指标,针对第一数据集合和第二数据集合均存在的指标,本实施例应继续判断该条记录中的两个指标的值是否相同,如果相同,则确定出该指标没有发生变化。
续前例,上述表3中包括4条记录,本实施例应针对这4条记录分别进行下述判断:判断该条记录中左边的指标A是否为null以及该条记录中右边的指标A是否为null,如果左边的指标A不为null,且右边的指标A也不为null,则确定出该条记录中的指标A是第一数据集合和第二数据集合均存在的指标,且针对第一数据集合和第二数据集合均存在的指标A需要继续判断该条记录中的左右两个指标A的值是否相同,如果相同,则确定出该条记录中的指标A没有发生变化。具体的,上述表3中的四条记录只有第一条记录中的指标A为第一数据集合和第二数据集合中均存在且未发生变化的指标。
本实施例可以针对第一数据集合和第二数据集合中均存在且未发生变化的指标设置无变化标记,也就是说,在第二数据集合中为相应记录中的指标设置无变化标记;续前例,针对表2中的第一条记录中的A1设置nochange标记。
由于在下一次同步处理过程中,本次同步处理过程中的第二数据集合会成为第一数据集合,因此,在除了第一次进行基于指标的数据库增量同步之外的其他同步过程中,本实施例中的第一数据集合和第二数据集合中的各条记录均经过了针对指标设置无变化标记的处理过程。需要特别说明的是,在第一次进行指标计算,并在第一次进行指标计算后,对目标数据库进行基于指标的数据库增量同步的处理过程中,由于第一数据集合为空,因此,本实施例可以认为第一数据集合中没有任何一条记录中的指标设置有无变化标记,而且,由于本实施例中的第二数据集合中的任何一条记录中的指标的值相对于第一数据集合而言都发生了变化,因此,本实施例不会针对第二数据集合中的任何一条记录中的指标设置无变化标记。
作为示例,针对第一数据集合和第二数据集合中均存在且未发生变化的指标,本实施例可以在第二数据集合中为该指标设置无变化标记,以便于能够利用该无变化标记来判断指标当前值无变化持续时间,如通过追溯连续设置无变化标记的数据集合,即可计算出指标当前值无变化持续时间。
作为示例,为了进一步方便的判断出指标当前值无变化持续时间,本实施例可以在为第二数据集合中的指标设置无变化标记后,判断该指标在第一数据集合中是否设置有无变化标记,如果判断的结果为该指标在第一数据集合中也设置有无变化标记,则可以将第二数据集合中的该指标所在记录中的指标当前值无变化起始时间设置为第一数据集合中的该指标所在记录中的指标当前值无变化起始时间;而如果判断的结果为该指标在第一数据集合中并未设置有无变化标记,则本实施例不会对第二数据集合中的该指标所在记录中的指标当前值无变化起始时间进行修改,从而使第二数据集合中的该指标所在记录中的指标当前值无变化起始时间仍为其初始值,如计算出指标当前值的时间(即指标当前值的计算时间)。在实际应用中,在针对数据仓库中的数据计算指标的过程中,通常都会在数据仓库中存储计算出的指标当前值以及指标当前值的计算时间,本实施例可以利用数据仓库中的指标当前值的计算时间来存储指标当前值无变化起始时间。当然,本实施例也可以利用数据仓库中的其他字段(如新增字段)来存储指标当前值无变化起始时间。
作为示例,本实施例可以采用左外连接的方式来判断指标在第一数据集合以及第二数据集合中是否均设置有无变化标记;下面结合图3对采用左外连接的方式来判断指标在第一数据集合以及第二数据集合中是否均设置有无变化标记的具体实现过程进行说明。
图3中,S300、使第一数据集合中所有设置有无变化标记的指标所在的记录形成第三数据集合,如通过对第一数据集合中的所有记录进行分区存储的方式使设置有无变化标记的指标存储于同一个分区中,且该分区仅用于存储第一数据集合中的设置有无变化标记的指标所在的记录,该分区中的所有记录即为第三数据集合。到步骤S320。
S310、使第二数据集合中所有设置有无变化标记的指标所在的记录形成第四数据集合,如通过对第二数据集合中的所有记录进行分区存储的方式使设置有无变化标记的指标存储于同一个分区中,且该分区仅用于存储第二数据集合中的设置有无变化标记的指标所在的记录,该分区中的所有记录即为第四数据集合。到步骤S320。
S320、以第三数据集合为右,以第四数据集合为左,根据数据集合主关键字执行左外连接操作。
上述步骤S320中的数据集合主关键字即第一数据集合和第二数据集合的主关键字,也即第三数据集合和第四数据集合的主关键字。
设定第三数据集合包括上述表1的内容,且表1中的各条记录均设置有无变化标记,第四数据集合包括上述表2的内容,且表2中的各条记录均设置有无变化标记,则本实施例在执行左外连接操作后所获得的内容包括下述表4:
表4
用户标识 | 用户名称 | 指标A | 用户标识 | 用户名称 | 指标A |
1 | A | A1 | 1 | A | A1 |
3 | C | C2 | Null | Null | Null |
需要特别说明的是:由于上述表1和表2中均没有示出指标的无变化标记,因此,上述表4中的各条记录中均没有包含指标的无变化标记,而在实际应用中,左外连接后所获得的各条记录中的左半部分中均应包括有指标的无变化标记,然而各条记录中的右半部分中有可能均不包含指标的无变化标记,也有可能部分包含有指标的无变化标记,还有可能均包含有指标的无变化标记。
S330、针对左外连接获得的所有记录分别进行判断,如果判断出一条记录中包含有两个无变化标记,则到步骤S340,否则,到步骤S350。
S340、确定出该条记录中的指标为在第一数据集合和第二数据集合中均设置有无变化标记的指标。
S350、确定出该条记录中的指标并不是在第一数据集合和第二数据集合中均设置有无变化标记的指标。
作为示例,本实施例可以采用右外连接的方式来判断指标在第一数据集合以及第二数据集合中是否均设置有无变化标记;下面结合图4对采用右外连接的方式来判断指标在第一数据集合以及第二数据集合中是否均设置有无变化标记的具体实现过程进行说明。
图4中,S400、使第一数据集合中所有设置有无变化标记的指标所在的记录形成第三数据集合,如通过对第一数据集合中的所有记录进行分区存储的方式使设置有无变化标记的指标存储于同一个分区中,且该分区仅用于存储第一数据集合中的设置有无变化标记的指标所在的记录,该分区中的所有记录即为第三数据集合。到步骤S420。
S410、使第二数据集合中所有设置有无变化标记的指标所在的记录形成第四数据集合,如通过对第二数据集合中的所有记录进行分区存储的方式使设置有无变化标记的指标存储于同一个分区中,且该分区仅用于存储第二数据集合中的设置有无变化标记的指标所在的记录,该分区中的所有记录即为第四数据集合。到步骤S420。
S420、以第四数据集合为右,以第三数据集合为左,根据数据集合主关键字执行右外连接操作。
上述步骤S420中的数据集合主关键字即第一数据集合和第二数据集合的主关键字,也即第三数据集合和第四数据集合的主关键字。
设定第三数据集合包括上述表1的内容,且表1中的各条记录均设置有无变化标记,第四数据集合包括上述表2的内容,且表2中的各条记录均设置有无变化标记,则本实施例在执行右外连接操作后所获得的内容包括下述表5:
表5
用户标识 | 用户名称 | 指标A | 用户标识 | 用户名称 | 指标A |
1 | A | A1 | 1 | A | A1 |
Null | Null | Null | 3 | C | C2 |
需要特别说明的是:由于上述表1和表2中均没有示出指标的无变化标记,因此,上述表5中的各条记录中均没有包含指标的无变化标记,而在实际应用中,右外连接后所获得的各条记录中的右半部分中均应包含有指标的无变化标记,然而各条记录中的左半部分中有可能均不包含指标的无变化标记,也有可能部分包含有指标的无变化标记,还有可能均包含有指标的无变化标记。
S430、针对右外连接获得的所有记录分别进行判断,如果判断出一条记录中包含有两个无变化标记,则到步骤S440,否则,到步骤S450。
S440、确定出该条记录中的指标为在第一数据集合和第二数据集合中均设置有无变化标记的指标。
S450、确定出该条记录中的指标并不是在第一数据集合和第二数据集合中均设置有无变化标记的指标。
另外需要特别说明的是,本实施例在根据数据集合主关键字获取第一数据集合和第二数据集合中均存在且未发生变化的指标的过程中,还可以执行根据数据集合主关键字获取第一数据集合不存在而第二数据集合中存在的指标的操作,如果根据数据集合主关键字查找到第一数据集合不存在而第二数据集合中存在的指标,则确定出第二数据集合中的该指标为新增的指标;针对新增的指标,本实施例应将第二数据集合中的该新增的指标所在记录中的相应数据同步到目标数据库中,如根据实际需求从第二数据集合中该指标所在记录中提取出包含有数据集合主关键字以及指标在内的部分数据,并将提取出的数据同步到内存数据库中;当然,在有些应用场景中,可以根据实际需求将第二数据集合中该指标所在记录中的所有数据同步到目标数据库(如内存数据库等)中;本实施例还应将目标数据库中的该指标所在记录的失效时间设置为该指标的时间窗口。
再一需要特别说明的是,本实施例在根据数据集合主关键字获取第一数据集合和第二数据集合中均存在且未发生变化的指标的过程中,还可以执行根据数据集合主关键字获取第一数据集合存在而第二数据集合中不存在的指标的操作,如果根据数据集合主关键字查找到第一数据集合存在而第二数据集合中不存在的指标,则确定出第一数据集合中的该指标为目标数据库中需要失效的指标;针对需要失效的指标,本实施例应将第一数据集合中的该指标所在记录中的相应数据同步到目标数据库中,如根据实际需求从第一数据集合中该指标所在记录中提取出包含有数据集合主关键字以及指标在内的部分数据,并将提取出的数据同步到内存数据库中;当然,在有些应用场景中,本实施例可以根据实际需求将第一数据集合中该指标所在记录中的所有数据同步到目标数据库(如内存数据库等)中;本实施例还应将目标数据库中的该指标所在记录的失效时间设置为即时失效的时间值(也可以称为即刻失效时间,如1秒等),以便于可以由于针对该条记录的失效时间的计时值立刻达到即时失效的时间值而使该条记录立刻从目标数据库中删除,从而避免了目标数据库中需要失效的数据没有及时失效的现象。
S120、在判断出指标当前值无变化持续时间达到与该指标对应的预设阈值的情况下,将第二数据集合中该指标所在记录的相应数据同步到目标数据库中。
作为示例,本实施例可以根据指标在第二数据集合中是否设置有无变化标记以及指标当前值无变化起始时间来确定指标当前值无变化持续时间,即在确定出该指标在第二数据集合中设置有无变化标记时,计算当前时间与该指标在第二数据集合中的指标当前值无变化起始时间的时间差值,且计算出的该时间差值即为指标当前值无变化持续时间。本实施例也可以采用其他方式来确定指标当前值无变化持续时间;如在针对指标进行无变化标记的设置处理,而不进行指标当前值无变化起始时间的设置处理的情况下,本实施例可以通过追溯连续设置无变化标记的已同步处理的数据集合的个数,即可计算出指标当前值无变化持续时间;再如在针对指标不进行无变化标记的设置处理,也不进行指标当前值无变化起始时间的设置处理的情况下,本实施例可以通过追溯该指标当前值在已同步处理的数据集合中连续出现的次数,即可计算出指标当前值无变化持续时间。
作为示例,本实施例对上述计算出的时间差值进行判断,以确定该时间差值是否达到与该指标对应的时间窗口(下述称为指标的时间窗口);如果判断出计算获得的时间差值达到该指标的时间窗口,则可以确定出指标当前值无变化持续时间达到该指标的时间窗口,本实施例应将第二数据集合中该指标所在记录的相应数据同步到目标数据库(如内存数据库等)中,如根据实际需求从第二数据集合中该指标所在记录中提取出包含有数据集合主关键字以及指标在内的部分数据,并将提取出的数据同步到内存数据库中;当然,在有些应用场景中,可以根据实际需求将第二数据集合中该指标所在记录中的所有数据同步到目标数据库(如内存数据库等)中;如果判断出计算获得的时间差值未达到该指标的时间窗口,则可以确定出指标当前值无变化持续时间未达到该指标的时间窗口,本实施例不会执行将第二数据集合中该指标所在记录的相应数据同步到目标数据库中的操作。
实施例二、数据同步方法。
图5为本实施例的数据同步方法流程图。本实施例的方法通常由能够访问数据仓库以及内存数据库的设备(如计算机或者服务器等)执行。
下面对本实施例的方法所包含的各步骤分别进行说明。
S500、针对数据仓库中的数据进行指标计算,并在指标计算后获得基于指标本次待同步处理的当日数据表。
S510、从数据仓库中获取基于指标前次已同步处理的前日数据表。
S520、根据当日数据表和前日数据表的主关键字将当日数据表和前日数据包进行全外关联。
S530、针对全外关联获得的表中的各记录分别进行delta1、delta2、del或者nochange的标记,本步骤也可以认为是对当日数据表中的各记录分别进行delta1、delta2、del或者nochange的标记。
具体的,针对全外关联获得的表中的一条记录而言,如果该条记录中包含有一个指标,且该指标出现在当日数据表所在侧,则将该条记录标记为新增记录,即标记为delta1;如果该条记录中包含有两个指标,且这两个指标的值不相同,则将该条记录标记为新增记录,即标记为delta2;如果该条记录中包含有两个指标,且这两个指标的值相同,则应在当日数据表中将该指标所在的记录标记为无变化标记,即标记为nochange;如果该条记录包含有一个指标,且该指标出现在前日数据表所在侧,则将该条记录标记为死亡记录,即标记为del。
S540、将当日数据表中具有无变化标记的记录形成的表作为左表,将前日数据库中具有无变化标记的记录形成的表作为右表,执行左外连接操作。
S550、针对左外关联获得的表中的各记录分别进行进一步的标记处理操作,如执行nochange_delta1、nochange_delta2、nochange_delta3或者delta3的标记处理操作,并针对标记为nochange_delta1的记录进行指标当前值无变化起始时间的修改。本步骤也可以认为是对当日数据表中的相应记录分别进行nochange_delta1、nochange_delta2、nochange_delta3或者delta3的标记。
具体的,针对左外关联获得的表中的一条记录而言,如果该条记录中包含有两个nochange标记,且该条记录中的两个指标的值相同,则将该条记录标记为nochange_delta1,并将该条记录中的左侧的指标当前值无变化起始时间修改为该条记录中的右侧的指标当前值无变化起始时间;如果该条记录中包含有两个nochange标记,且该条记录中的两个指标的值不相同,则将该条记录标记为nochange_delta2;而如果该条记录中包含有一个nochange标记,且该nochange标记出现在记录中的左侧,则将该条记录标记为nochange_delta3。之后,针对标记为nochange_delta1的各条记录,分别计算当前时间与记录左侧的指标当前值无变化起始时间的差值,并在判断出该差值达到该指标的时间窗口时,将该条记录的标记修改为delta3,否则,不对该条记录的标记进行修改,即该条记录的标记仍为nochange_delta1。
S560、利用标记为delta3、nochange_delta1、nochange_delta2以及nochange_delta3的记录中的左半部分数据替换当日数据表中标记为nochange的记录。
S570、将当日数据表中的相应记录中的相应数据同步到内存数据库中。
具体的,本实施例应将标记为delta1、delta2以及delta3的当日数据表中的数据同步到内存数据库中,并将该同步到内存数据库中的各条记录的失效时间设置为相应指标的时间窗口。另外,本实施例还应将标记为del的当日数据表中的数据同步到内存数据库中,并将该同步到内存数据库中的各条记录的失效时间设置为即时失效的时间值(也可以称为即刻失效时间,如1秒),以便于可以由于针对该条记录的失效时间的计时值立刻达到即时失效的时间值而使该条记录立刻从内存数据库中删除,从而避免了内存数据库中需要失效的数据没有及时失效的现象。
实施例三、数据同步装置。
图6为本实施例的数据同步装置的一结构示意图。图6中,本实施例的装置主要包括:第一获取模块600、第二获取模块610以及第一同步模块620。本实施例的装置通常设置于能够访问源数据库以及目标数据库的设备(如计算机或者服务器等)中。另外,本实施例的装置还可以可选的包括:设置模块630、第三获取模块640、第二同步模块650、第四获取模块660以及第三同步模块670(如图7所示)。
下面对本实施例的装置所包含的各模块分别进行说明。
第一获取模块600主要用于获取已同步处理的第一数据集合以及待同步处理的第二数据集合,如从源数据库中获取基于指标前次已同步处理的第一数据集合以及基于指标本次待同步处理的第二数据集合。
作为示例,在将数据仓库中的包含指标的相应数据同步到内存数据库中的应用场景中,本实施例中的源数据库(即同步源数据库)为数据仓库,目标数据库(即同步目标数据库)为内存数据库,且本实施例的基于指标的数据库增量同步装置可以称为基于指标的从数据仓库到内存数据库增量同步装置。在其他的同步应用场景中,源数据库和目标数据库的具体表现形式应与同步应用场景相适应,本实施例不限制源数据库和目标数据库的具体表现形式。
作为示例,第一获取模块600所获取的基于指标前次已同步处理的第一数据集合是指最近一次进行了基于指标的数据库增量同步处理的数据集合(可以采用表的形式),第一获取模块600所获取的基于指标本次待同步处理的第二数据集合是指本次需要进行基于指标的数据库增量同步处理的数据集合(可以采用表的形式),且第一数据集合和第二数据集合中的各条记录均来自源数据库。一个具体的例子,在指标的计算频率为一天,且数据库增量同步频率也为一天的情况下,第一获取模块600所获取的第一数据集合可以为包含有用于前一日计算指标的相应数据以及前一日计算出的指标的数据表(可以称为前一日数据表),而第一获取模块600所获取的第二数据集合可以为包含用于当日计算指标的相应数据以及当日计算出的指标的数据表(可以称为当日数据表)。
作为示例,第一获取模块600可以通过设置基于时间的数据查询条件来从源数据库中获取第一数据集合和第二数据集合;如在源数据库的记录中包含有同步处理时间或者指标计算时间等字段的情况下,第一获取模块600通过设置同步处理时间或者指标计算时间为前次同步处理时间或者前次指标计算时间(如昨天的日期)这一查询条件,可以通过查询从源数据库中获得第一数据集合,而第一获取模块600通过设置同步处理时间或者指标计算时间为本次同步处理时间或者本次指标计算时间(如今天的日期)这一查询条件,可以通过查询从源数据库中获得第二数据集合。
需要特别说明的是,在第一次进行指标计算,并在第一次进行指标计算后,对目标数据库进行基于指标的数据库增量同步的处理过程中,第一获取模块600所获取到的第一数据集合应为空。第一获取模块600可以通过设置基于无效时间的数据查询条件从源数据库中获取为空的第一数据集合;如在源数据库的记录中包含同步处理时间或者指标计算时间等字段的情况下,第一获取模块600通过设置同步处理时间或者指标计算时间为无效时间(如9999年1月1日)这一查询条件,可以通过查询从源数据库中获得为空的第一数据集合。
第二获取模块610主要用于根据主关键字(如数据集合主关键字)获取第一数据集合和第二数据集合中均存在且未发生变化的指标,且第二获取模块还可以用于针对第一数据集合和第二数据集合中均存在且未发生变化的指标,在第二数据集合中针对该指标设置无变化标记。
第二获取模块610所使用的数据集合主关键字即第一数据集合和第二数据集合的主关键字。第二获取模块610所获取的第一数据集合和第二数据集合中均存在且未发生变化的指标是指:指标同时存在于第一数据集合和第二数据集合中,且指标在第一数据集合中的值与该指标在第二数据集合中的值完全相同。
作为示例,第二获取模块610可以采用全外连接的方式获得第一数据集合和第二数据集合中均存在且未发生变化的指标。一个具体的例子,第二获取模块610包括:全外连接子模块611以及第一确定子模块612(如图8所示),其中的全外连接子模块611主要用于根据数据集合主关键字将第一数据集合和第二数据集合全外连接;其中的第一确定子模块612主要用于根据全外连接获得的各条记录确定第一数据集合和第二数据集合中均存在且未发生变化的指标。
作为示例,设定数据集合主关键字为用户标识(ID),第一数据集合的内容包括上述表1,而第二数据集合的内容包括上述表2,全外连接子模块611根据用户标识将包含上述表1的第一数据集合和包含上述表2的第二数据集合全外连接后,所获得的内容包括上述表3。全外连接子模块611执行全外连接操作后通常会形成多条记录,第一确定子模块612应针对每一条记录分别进行下述判断:判断一条记录中的第一个指标是否为空以及该条记录中的第二个指标是否为空,如果该条记录中的第一个指标不为空,且第二个指标也不为空,则第一确定子模块612确定出该条记录中的指标是第一数据集合和第二数据集合均存在的指标,针对第一数据集合和第二数据集合均存在的指标,第一确定子模块612应继续判断该条记录中的两个指标的值是否相同,如果相同,则第一确定子模块612确定出该指标没有发生变化。
续前例,上述表3中包括4条记录,第一确定子模块612应针对这4条记录分别进行下述判断:第一确定子模块612判断该条记录中左边的指标A是否为null以及该条记录中右边的指标A是否为null,如果左边的指标A不为null,且右边的指标A也不为null,则第一确定子模块612确定出该条记录中的指标A是第一数据集合和第二数据集合均存在的指标,且针对第一数据集合和第二数据集合均存在的指标A需要继续判断该条记录中的左右两个指标A的值是否相同,如果相同,则第一确定子模块612确定出该条记录中的指标A没有发生变化。具体的,上述表3中的四条记录只有第一条记录中的指标A为第一数据集合和第二数据集合中均存在且未发生变化的指标。
第二获取模块610(如第一确定子模块612)可以针对第一数据集合和第二数据集合中均存在且未发生变化的指标设置无变化标记,也就是说,第二获取模块610(如第一确定子模块612)在第二数据集合中为相应记录中的指标设置无变化标记;续前例,第二获取模块610(第一确定子模块612)针对表2中的第一条记录中的A1设置nochange标记。
由于在本装置进行下一次同步处理过程中,本次同步处理过程中的第二数据集合会成为第一数据集合,因此,在除了第一次进行基于指标的数据库增量同步之外的其他同步过程中,本实施例中的第一数据集合和第二数据集合中的各条记录均经过了第二获取模块610(如第一确定子模块612)针对指标设置无变化标记的处理过程。需要特别说明的是,在第一次进行指标计算,并在第一次进行指标计算后,本装置对目标数据库进行基于指标的数据库增量同步的处理过程中,由于第一数据集合为空,因此,第二获取模块610(如第一确定子模块612)可以认为第一数据集合中没有任何一条记录中的指标设置有无变化标记,而且,由于本实施例中的第二数据集合中的任何一条记录中的指标的值相对于第一数据集合而言都发生了变化,因此,第二获取模块610(如第一确定子模块612)不会针对第二数据集合中的任何一条记录中的指标设置无变化标记。
作为示例,针对第一数据集合和第二数据集合中均存在且未发生变化的指标,第二获取模块610(如第一确定子模块612)可以在第二数据集合中为该指标设置无变化标记,以便于第一同步模块620能够利用该无变化标记来判断指标当前值无变化持续时间,如第一同步模块620通过追溯连续设置无变化标记的数据集合,即可计算出指标当前值无变化持续时间。
作为示例,为了进一步方便第一同步模块620判断出指标当前值无变化持续时间,本实施例的装置包括设置模块630,且该设置模块630主要用于针对第一数据集合和第二数据集合中均存在且未发生变化的指标,在判断出指标在第一数据集合和第二数据集合中均设置有无变化标记的情况下,将第二数据集合中的指标所在记录中的指标当前值无变化起始时间设置为第一数据集合中的所述指标所在记录中的指标当前值无变化起始时间;其中,第二数据集合中的所述指标所在记录中的指标当前值无变化起始时间的初始值为计算出指标当前值的时间。
设置模块630可以在第二获取模块610为第二数据集合中的指标设置无变化标记后,判断该指标在第一数据集合中是否设置有无变化标记,如果判断的结果为该指标在第一数据集合中也设置有无变化标记,则设置模块630可以将第二数据集合中的该指标所在记录中的指标当前值无变化起始时间设置为第一数据集合中的该指标所在记录中的指标当前值无变化起始时间;而如果判断的结果为该指标在第一数据集合中并未设置有无变化标记,则设置模块630不会对第二数据集合中的该指标所在记录中的指标当前值无变化起始时间进行修改,从而使第二数据集合中的该指标所在记录中的指标当前值无变化起始时间仍为其初始值,如计算出指标当前值的时间(即指标当前值的计算时间)。在实际应用中,在针对数据仓库中的数据计算指标的过程中,通常都会在数据仓库中存储计算出的指标当前值以及指标当前值的计算时间,设置模块630可以利用数据仓库中的指标当前值的计算时间来存储指标当前值无变化起始时间。当然,设置模块630也可以利用数据仓库中的其他字段(如新增字段)来存储指标当前值无变化起始时间。
作为示例,设置模块630可以采用左外连接的方式或右外连接的方式来判断指标在第一数据集合以及第二数据集合中是否均设置有无变化标记;此时,设置模块630可以具体包括:左/右外连接子模块631以及第二确定子模块632(如图9所示),其中的左/右外连接子模块631主要用于以第一数据集合中的设置有无变化标记的指标所在的记录所形成的第三数据集合为右/左,以第二数据集合中的设置有无变化标记的指标所在的记录所形成的第四数据集合为左/右,根据数据集合主关键字执行左/右外连接;其中的第二确定子模块632主要用于根据左/右外连接获得的各条记录确定出在第一数据集合和第二数据集合中均设置有无变化标记的指标。
一个具体的例子,左/右外连接子模块631使第一数据集合中所有设置有无变化标记的指标所在的记录形成第三数据集合,如左/右外连接子模块631通过对第一数据集合中的所有记录进行分区存储的方式使设置有无变化标记的指标存储于同一个分区中,且该分区仅用于存储第一数据集合中的设置有无变化标记的指标所在的记录,该分区中的所有记录即为第三数据集合。左/右外连接子模块631使第二数据集合中所有设置有无变化标记的指标所在的记录形成第四数据集合,如通过对第二数据集合中的所有记录进行分区存储的方式使设置有无变化标记的指标存储于同一个分区中,且该分区仅用于存储第二数据集合中的设置有无变化标记的指标所在的记录,该分区中的所有记录即为第四数据集合。左/右外连接子模块631以第三数据集合为右,以第四数据集合为左,根据数据集合主关键字执行左外连接操作。左/右外连接子模块631所使用的数据集合主关键字即第一数据集合和第二数据集合的主关键字,也即第三数据集合和第四数据集合的主关键字。第二确定子模块632针对左外连接获得的所有记录分别进行判断,如果判断出一条记录中包含有两个无变化标记,则第二确定子模块632确定出该条记录中的指标为在第一数据集合和第二数据集合中均设置有无变化标记的指标,否则,第二确定子模块632确定出该条记录中的指标并不是在第一数据集合和第二数据集合中均设置有无变化标记的指标。
另一个具体的例子为:左/右外连接子模块631使第一数据集合中所有设置有无变化标记的指标所在的记录形成第三数据集合,如通过对第一数据集合中的所有记录进行分区存储的方式使设置有无变化标记的指标存储于同一个分区中,且该分区仅用于存储第一数据集合中的设置有无变化标记的指标所在的记录,该分区中的所有记录即为第三数据集合。到步骤S420;左/右外连接子模块631使第二数据集合中所有设置有无变化标记的指标所在的记录形成第四数据集合,如左/右外连接子模块631通过对第二数据集合中的所有记录进行分区存储的方式使设置有无变化标记的指标存储于同一个分区中,且该分区仅用于存储第二数据集合中的设置有无变化标记的指标所在的记录,该分区中的所有记录即为第四数据集合;左/右外连接子模块631以第四数据集合为右,以第三数据集合为左,根据数据集合主关键字执行右外连接操作。左/右外连接子模块631所使用的数据集合主关键字即第一数据集合和第二数据集合的主关键字,也即第三数据集合和第四数据集合的主关键字。第二确定子模块632针对右外连接获得的所有记录分别进行判断,如果判断出一条记录中包含有两个无变化标记,则第二确定子模块632确定出该条记录中的指标为在第一数据集合和第二数据集合中均设置有无变化标记的指标,否则,第二确定子模块632确定出该条记录中的指标并不是在第一数据集合和第二数据集合中均设置有无变化标记的指标。
另外需要特别说明的是,在第二获取模块610根据数据集合主关键字获取第一数据集合和第二数据集合中均存在且未发生变化的指标的过程中,第三获取模块640还可以执行根据数据集合主关键字获取第一数据集合不存在而第二数据集合中存在的指标的操作,如果第三获取模块640根据数据集合主关键字查找到第一数据集合不存在而第二数据集合中存在的指标,则第二同步模块650确定出第二数据集合中的该指标为新增的指标;针对新增的指标,第二同步模块650应将第二数据集合中的该新增的指标所在记录中的相应数据同步到目标数据库中,如根据实际需求从第二数据集合中该指标所在记录中提取出包含有数据集合主关键字以及指标在内的部分数据,并将提取出的数据同步到内存数据库中;当然,在有些应用场景中,第二同步模块650可以根据实际需求将第二数据集合中该指标所在记录中的所有数据同步到目标数据库(如内存数据库等)中;第二同步模块650还应将目标数据库中的该指标所在记录的失效时间设置为该指标的时间窗口。
另一需要特别说明的是,在第二获取模块610根据数据集合主关键字获取第一数据集合和第二数据集合中均存在且未发生变化的指标的过程中,第四获取模块660还可以执行根据数据集合主关键字获取第一数据集合存在而第二数据集合中不存在的指标的操作,如果第四获取模块660根据数据集合主关键字查找到第一数据集合存在而第二数据集合中不存在的指标,则第三同步模块670确定出第一数据集合中的该指标为目标数据库中需要失效的指标;针对需要失效的指标,第三同步模块670应将第一数据集合中的该指标所在记录中的相应数据同步到目标数据库中,如第三同步模块670根据实际需求从第一数据集合中该指标所在记录中提取出包含有数据集合主关键字以及指标在内的部分数据,并将提取出的数据同步到内存数据库中;当然,在有些应用场景中,第三同步模块670可以根据实际需求将第一数据集合中该指标所在记录中的所有数据同步到目标数据库(如内存数据库等)中;第三同步模块670还应将目标数据库中的该指标所在记录的失效时间设置为即时失效的时间值(也可以称为即刻失效时间,如1秒等),以便于可以由于针对该条记录的失效时间的计时值立刻达到即时失效的时间值而使该条记录立刻从目标数据库中删除,从而避免了目标数据库中需要失效的数据没有及时失效的现象。
第一同步模块620主要用于在判断出指标当前值无变化持续时间达到与该指标对应的预设阈值(如指标的时间窗口)的情况下,将第二数据集合中该指标所在记录的相应数据同步到目标数据库中。可选的,第一同步模块620可以包括:计算子模块621以及判断子模块622(如图10所示),其中的计算子模块621主要用于计算当前时间与第二数据集合中的指标当前值无变化起始时间的时间差值,其中的判断子模块622主要用于在时间差值达到该指标的时间窗口时,判断出该指标当前值无变化持续时间达到该指标的时间窗口。
作为示例,第一同步模块620(如计算子模块621)可以根据指标在第二数据集合中是否设置有无变化标记以及指标当前值无变化起始时间来确定指标当前值无变化持续时间,即第一同步模块620(如计算子模块621)在确定出该指标在第二数据集合中设置有无变化标记时,计算当前时间与该指标在第二数据集合中的指标当前值无变化起始时间的时间差值,且第一同步模块620(如计算子模块621)计算出的该时间差值即为指标当前值无变化持续时间。第一同步模块620也可以采用其他方式来确定指标当前值无变化持续时间;如在针对指标进行无变化标记的设置处理,而不进行指标当前值无变化起始时间的设置处理的情况下,第一同步模块620可以通过追溯连续设置无变化标记的已同步处理的数据集合的个数,即可计算出指标当前值无变化持续时间;再如在针对指标不进行无变化标记的设置处理,也不进行指标当前值无变化起始时间的设置处理的情况下,第一同步模块620可以通过追溯该指标当前值在已同步处理的数据集合中连续出现的次数,即可计算出指标当前值无变化持续时间。
作为示例,第一同步模块620(如判断子模块622)对计算子模块621所计算出的时间差值进行判断,以判断该时间差值是否达到该指标的时间窗口;如果判断出计算获得的时间差值达到该指标的时间窗口,则第一同步模块620(如判断子模块622)可以确定出指标当前值无变化持续时间达到该指标的时间窗口,第一同步模块620应将第二数据集合中该指标所在记录的相应数据同步到目标数据库(如内存数据库等)中,如第一同步模块620根据实际需求从第二数据集合中该指标所在记录中提取出包含有数据集合主关键字以及指标在内的部分数据,并将提取出的数据同步到内存数据库中;当然,在有些应用场景中,第一同步模块620可以根据实际需求将第二数据集合中该指标所在记录中的所有数据同步到目标数据库(如内存数据库等)中;如果第一同步模块620(如判断子模块622)判断出计算获得的时间差值未达到该指标的时间窗口,则可以确定出指标当前值无变化持续时间未达到该指标的时间窗口,第一同步模块620不会执行将第二数据集合中该指标所在记录的相应数据同步到目标数据库中的操作。
需要注意的是,本发明的一部分可以被应用为计算机程序产品,例如计算机程序指令,当其被智能电子设备(如计算机或者服务器等)执行时,通过该智能电子设备的操作可以调用或者提供根据本发明的方法和/或技术方案。而调用本发明的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或者其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的智能电子设备的工作存储器中。在此,根据本发明的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本发明的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本发明并不局限于上述示范性实施例的细节,而且在不背离本发明的精神或者基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将本发明的实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或者装置或者模块也可以由一个单元或者装置或者模块通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (18)
1.一种数据同步方法,其中,所述方法包括以下步骤:
获取已同步处理的第一数据集合以及待同步处理的第二数据集合;
根据主关键字获取第一数据集合和第二数据集合中均存在且未发生变化的指标,其中包括:
根据主关键字将第一数据集合和第二数据集合全外连接;
根据全外连接获得的各条记录确定第一数据集合和第二数据集合中均存在且未发生变化的指标;
在判断出所述指标当前值无变化持续时间达到与该指标对应的预设阈值的情况下,将第二数据集合中该指标所在记录的相应数据同步到目标数据库中;
其中所述指标包括:基于一个维度或者多个维度对数据进行聚合统计而获得的计算结果。
2.根据权利要求1所述的方法,其中,所述目标数据库为内存数据库。
3.根据权利要求1所述的方法,其中,在第一次对所述目标数据库进行数据同步的情况下,获取的已同步处理的第一数据集合为空。
4.根据权利要求1所述的方法,其中,所述根据主关键字获取第一数据集合和第二数据集合中均存在且未发生变化的指标的步骤还包括:
针对第一数据集合和第二数据集合中均存在且未发生变化的指标,在第二数据集合中针对所述指标设置无变化标记。
5.根据权利要求4所述的方法,其中,所述方法还包括:
针对第一数据集合和第二数据集合中均存在且未发生变化的指标,在判断出所述指标在第一数据集合和第二数据集合中均设置有无变化标记的情况下,将第二数据集合中的所述指标所在记录中的指标当前值无变化起始时间设置为第一数据集合中的所述指标所在记录中的指标当前值无变化起始时间;
其中,第二数据集合中的所述指标所在记录中的指标当前值无变化起始时间的初始值为计算出指标当前值的时间。
6.根据权利要求5所述的方法,其中,所述判断出所述指标在第一数据集合和第二数据集合中均设置有无变化标记的步骤包括:
以第一数据集合中的设置有无变化标记的指标所在记录形成的第三数据集合为右/左,以第二数据集合中的设置有无变化标记的指标所在记录形成的第四数据集合为左/右,根据主关键字执行左/右外连接;
根据左/右外连接获得的各条记录确定出在第一数据集合和第二数据集合中均设置有无变化标记的指标。
7.根据权利要求5所述的方法,其中,所述判断出所述指标当前值无变化持续时间达到与该指标对应的预设阈值的步骤包括:
计算当前时间与第二数据集合中的所述指标当前值无变化起始时间的时间差值;
在所述时间差值达到与该指标对应的预设阈值时,判断出所述指标当前值无变化持续时间达到与该指标对应的预设阈值。
8.根据权利要求1至7中任一权利要求所述的方法,其中,所述方法还包括:
根据主关键字获取第一数据集合不存在而第二数据集合中存在的指标;
针对第一数据集合不存在而第二数据集合中存在的指标,将第二数据集合中的该指标所在记录的相应数据同步到目标数据库中,并将所述目标数据库中的该指标所在记录的失效时间设置为与该指标对应的预设阈值。
9.根据权利要求1至7中任一权利要求所述的方法,其中,所述方法还包括:
根据主关键字获取第一数据集合存在而第二数据集合中不存在的指标;
针对第一数据集合存在而第二数据集合中不存在的指标,将第一数据集合中的该指标所在记录的相应数据同步到目标数据库中,并将所述目标数据库中的该指标所在记录的失效时间设置为即时失效的时间值。
10.一种数据同步装置,其中,所述装置包括:
第一获取模块,用于获取已同步处理的第一数据集合以及待同步处理的第二数据集合;
第二获取模块,用于根据主关键字获取第一数据集合和第二数据集合中均存在且未发生变化的指标,其中包括:
全外连接子模块,用于根据主关键字将第一数据集合和第二数据集合全外连接;
第一确定子模块,用于根据全外连接获得的各条记录确定第一数据集合和第二数据集合中均存在且未发生变化的指标;
第一同步模块,用于在判断出所述指标当前值无变化持续时间达到与该指标对应的预设阈值的情况下,将第二数据集合中该指标所在记录的相应数据同步到目标数据库中;
所述指标包括:基于一个维度或者多个维度对数据进行聚合统计而获得的计算结果。
11.根据权利要求10所述的装置,其中,所述目标数据库为内存数据库。
12.根据权利要求10所述的装置,其中,在所述装置第一次对所述目标数据库进行数据同步的情况下,所述第一获取模块获取的已同步处理的第一数据集合为空。
13.根据权利要求10所述的装置,其中,所述第二获取模块还用于:
针对第一数据集合和第二数据集合中均存在且未发生变化的指标,在第二数据集合中针对所述指标设置无变化标记。
14.根据权利要求13所述的装置,其中,所述装置还包括:
设置模块,用于针对第一数据集合和第二数据集合中均存在且未发生变化的指标,在判断出所述指标在第一数据集合和第二数据集合中均设置有无变化标记的情况下,将第二数据集合中的所述指标所在记录中的指标当前值无变化起始时间设置为第一数据集合中的所述指标所在记录中的指标当前值无变化起始时间;
其中,第二数据集合中的所述指标所在记录中的指标当前值无变化起始时间的初始值为计算出指标当前值的时间。
15.根据权利要求14所述的装置,其中,所述设置模块包括:
左/右外连接子模块,用于以第一数据集合中的设置有无变化标记的指标所在记录形成的第三数据集合为右/左,以第二数据集合中的设置有无变化标记的指标所在记录形成的第四数据集合为左/右,根据主关键字执行左/右外连接;
第二确定子模块,用于根据左/右外连接获得的各条记录确定出在第一数据集合和第二数据集合中均设置有无变化标记的指标。
16.根据权利要求14所述的装置,其中,所述第一同步模块包括:
计算子模块,用于计算当前时间与第二数据集合中的所述指标当前值无变化起始时间的时间差值;
判断子模块,用于在所述时间差值达到与该指标对应的预设阈值时,判断出所述指标当前值无变化持续时间达到与该指标对应的预设阈值。
17.根据权利要求10至16中任一权利要求所述的装置,其中,所述装置还包括:
第三获取模块,用于根据主关键字获取第一数据集合不存在而第二数据集合中存在的指标;
第二同步模块,用于针对第一数据集合不存在而第二数据集合中存在的指标,将第二数据集合中的该指标所在记录中的相应数据同步到目标数据库中,并将所述目标数据库中的该指标所在记录的失效时间设置为与该指标对应的预设阈值。
18.根据权利要求10至16中任一权利要求所述的装置,其中,所述装置还包括:
第四获取模块,用于根据主关键字获取第一数据集合存在而第二数据集合中不存在的指标;
第三同步模块,用于针对第一数据集合存在而第二数据集合中不存在的指标,将第一数据集合中的该指标所在记录的相应数据同步到目标数据库中,并将所述目标数据库中的该指标所在记录的失效时间设置为即时失效的时间值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610287261.5A CN107341163B (zh) | 2016-05-03 | 2016-05-03 | 数据同步方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610287261.5A CN107341163B (zh) | 2016-05-03 | 2016-05-03 | 数据同步方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107341163A CN107341163A (zh) | 2017-11-10 |
CN107341163B true CN107341163B (zh) | 2020-08-14 |
Family
ID=60223036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610287261.5A Active CN107341163B (zh) | 2016-05-03 | 2016-05-03 | 数据同步方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107341163B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101009516A (zh) * | 2006-01-26 | 2007-08-01 | 华为技术有限公司 | 一种进行数据同步的方法及系统 |
CN102426611A (zh) * | 2012-01-13 | 2012-04-25 | 广州从兴电子开发有限公司 | 一种数据库同步方法及装置 |
CN103678494A (zh) * | 2013-11-15 | 2014-03-26 | 北京奇虎科技有限公司 | 客户端同步服务端数据的方法及装置 |
CN104408058A (zh) * | 2014-10-29 | 2015-03-11 | 中国建设银行股份有限公司 | 一种数据访问的方法及装置 |
CN105450682A (zh) * | 2014-08-08 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种用于数据同步保存、向客户端同步数据的方法、装置和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9223842B2 (en) * | 2011-12-05 | 2015-12-29 | Blackberry Limited | Apparatus, and associated method, for synchronizing a database |
-
2016
- 2016-05-03 CN CN201610287261.5A patent/CN107341163B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101009516A (zh) * | 2006-01-26 | 2007-08-01 | 华为技术有限公司 | 一种进行数据同步的方法及系统 |
CN102426611A (zh) * | 2012-01-13 | 2012-04-25 | 广州从兴电子开发有限公司 | 一种数据库同步方法及装置 |
CN103678494A (zh) * | 2013-11-15 | 2014-03-26 | 北京奇虎科技有限公司 | 客户端同步服务端数据的方法及装置 |
CN105450682A (zh) * | 2014-08-08 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种用于数据同步保存、向客户端同步数据的方法、装置和系统 |
CN104408058A (zh) * | 2014-10-29 | 2015-03-11 | 中国建设银行股份有限公司 | 一种数据访问的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107341163A (zh) | 2017-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108228817B (zh) | 数据处理方法、装置和系统 | |
US8924365B2 (en) | System and method for range search over distributive storage systems | |
CN108536752B (zh) | 一种数据同步方法、装置和设备 | |
WO2018149271A1 (zh) | 数据查询方法、装置及计算设备 | |
CN110309161B (zh) | 一种数据同步方法、装置及服务器 | |
CN107977396B (zh) | 一种KeyValue数据库的数据表的更新方法与表数据更新装置 | |
CN108647357B (zh) | 数据查询的方法及装置 | |
US20140095549A1 (en) | Method and Apparatus for Generating Schema of Non-Relational Database | |
US8943042B2 (en) | Analyzing and representing interpersonal relations | |
US20150234883A1 (en) | Method and system for retrieving real-time information | |
CN110232095B (zh) | 一种数据同步方法、装置、存储介质和服务器 | |
JP2009217426A (ja) | 情報処理装置、リソース同定プログラム、リソース同定方法 | |
CN104111957A (zh) | 一种分布式事务同步的方法及系统 | |
CN113672692A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN113626449A (zh) | 数据存储、数据查询方法及相关设备 | |
CN107341163B (zh) | 数据同步方法及装置 | |
US9092338B1 (en) | Multi-level caching event lookup | |
US20210064660A1 (en) | Graph search using index vertices | |
CN111163127A (zh) | 一种媒资属性推送方法及服务器 | |
CN115374109B (zh) | 数据访问方法、装置、计算设备和系统 | |
CN111125226A (zh) | 一种配置数据采集方法及装置 | |
CN110147396B (zh) | 一种映射关系生成方法及装置 | |
CN111221894B (zh) | 基于配置的时序数据库存储方法、装置及服务器 | |
CN114048231A (zh) | 数据处理方法、装置及计算机程序产品 | |
CN115114258A (zh) | 数据复制方法、装置、电子设备及计算机存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |