同步数据的方法及装置与流程

文档序号:11134051阅读:279来源:国知局
同步数据的方法及装置与制造工艺

本公开涉及数据处理领域,具体地,涉及一种同步数据的方法及装置。



背景技术:

在数据处理领域,源数据库的源数据经过抽取、转换之后,需要同步到目标数据库中。在源数据同步到目标数据库之前,需要先逐条在目标数据库中进行查询,在该源数据与目标数据已有记录匹配的情况下,将该源数据更新到目标数据库中,在不匹配的情况下,将该源数据插入到目标数据库中。

然而,由于数据库的匹配性能不高,导致数据同步效率过低,不能满足海量数据处理的需要。



技术实现要素:

有鉴于此,本公开提供了一种同步数据的方法及装置,以实现提高数据同步效率的目的。

在本公开实施例的一个方面中,提供了一种同步数据的方法。该方法包括:获取源数据;将所述源数据与缓存中的目标数据进行匹配,得到所述源数据的匹配结果,其中,所述缓存中的目标数据为从目标数据库预先加载到所述缓存;根据所述匹配结果,确定需要对所述源数据进行的数据库操作;根据预设条件,将需要对所述源数据进行的数据库操作提交给所述目标数据库执行。

可选地,所述获取源数据包括:数据读线程读取源数据库中的源数据;发送所述源数据至数据缓存;对应地,所述将所述源数据与缓存中的目标数据进行匹配包括:获取所述数据缓存中的所述源数据,将所述源数据与哈希缓存中的目标数据进行匹配,得到所述匹配结果。

可选地,所述哈希缓存中的数据是从目标数据库的无主键表的部分关键字段预先加载到所述哈希缓存的。

可选地,所述根据所述匹配结果,确定需要对所述源数据进行的数据库操作,包括:在所述源数据与缓存中的目标数据匹配时,确定对所述源数据进行的数据库操作为数据库更新操作,或者;在所述源数据与缓存中的目标数据不匹配时,确定对所述源数据进行的数据库操作为数据库插入操作。

可选地,所述根据预设条件,将需要对所述源数据进行的数据库操作提交给所述目标数据库执行,包括:当匹配成功的所述源数据的数据量达到批量更新阈值时,使用所述匹配成功的源数据,批量更新所述目标数据库中匹配成功的目标数据对应的数据记录,或者;当匹配不成功的所述源数据的数据量达到批量插入阈值时,将所有匹配不成功的源数据插入到所述目标数据库。

在本公开实施例的另一个方面中,提供了一种同步数据的装置。该装置包括:获取模块,被配置为获取源数据。匹配模块,被配置为将所述源数据与缓存中的目标数据进行匹配,得到所述源数据的匹配结果,其中,所述缓存中的目标数据为从目标数据库预先加载到所述缓存。操作确定模块,被配置为根据所述匹配结果,确定需要对所述源数据进行的数据库操作。操作提交模块,被配置为根据预设条件,将需要对所述源数据进行的数据库操作提交给所述目标数据库执行。

可选地,所述获取模块被配置为触发数据读线程读取源数据库中的源数据;发送所述源数据至数据缓存。所述匹配模块被配置为获取所述数据缓存中的所述源数据,将所述源数据与哈希缓存中的目标数据进行匹配,得到所述匹配结果。

可选地,所述哈希缓存中的数据是从目标数据库的无主键表的部分关键字段预先加载到所述哈希缓存的。

可选地,所述操作确定模块被配置为在所述源数据与缓存中的目标数据匹配时,确定对所述源数据进行的数据库操作为数据库更新操作,或者;在所述源数据与缓存中的目标数据不匹配时,确定对所述源数据进行的数据库操作为数据库插入操作。

可选地,所述操作提交模块被配置为当匹配成功的所述源数据的数据量达到批量更新阈值时,使用所述匹配成功的源数据,批量更新所述目标数据库中匹配成功的目标数据对应的数据记录,或者;当匹配不成功的所述源数据的数据量达到批量插入阈值时,将所有匹配不成功的源数据插入到所述目标数据库。

通过本公开上述技术方案,先将目标数据库的目标数据进行缓存,然后借助缓存的高性能来进行源数据与目标数据的匹配,从而提高了匹配效率,根据匹配结果确定需要对源数据进行的数据库操作之后,再根据预设条件,将需要对源数据进行的数据库操作提交给所述目标数据库执行,从而实现了数据同步性能大幅提升的目的。

本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:

图1是根据一示例性实施例示出的实施环境示意图。

图2是根据本发明的一示例性实施例示出的一种同步数据的方法的流程图。

图3是根据本发明的另一示例性实施例示出的一种同步数据的方法的流程图。

图4是根据本发明的一示例性实施例示出的一种同步数据的装置的框图。

图5是根据本发明的另一示例性实施例示出的一种同步数据的装置的框图。

具体实施方式

以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。

图1是根据一示例性实施例示出的实施环境示意图。该实施环境包括:应用了本公开实施例提供的同步数据的方法的数据采集器101、目标数据库102、源数据库103。其中,数据采集器101、目标数据库102可以布置在服务器侧。例如,数据采集器101,可以从源数据库103抓取源数据,将源数据同步到目标数据库102。其中,该源数据可以经过需要的转换之后,再同步到目标数据库102。

可以理解的是,图1所示实施环境仅用于示意本发明实施例提供的方法,并不构成对本发明实施例的限制。

图2是根据本发明的一示例性实施例示出的一种同步数据的方法的流程图。该方法可以包括:

在步骤210中,获取源数据。

在步骤220中,将所述源数据与缓存中的目标数据进行匹配,得到所述源数据的匹配结果。

需要说明的是,本实施例所述步骤210中,所述源数据可以一次获取多条,也可以一次获取一条。所述步骤220中,可以是在步骤210获取一条源数据后即与缓存中的目标数据进行匹配,也可以是在步骤210获取多条源数据后再与缓存中的目标数据进行匹配。本实施例对此并不进行限制。

其中,所述缓存中的目标数据为从目标数据库预先加载到所述缓存的。

例如,一种可能的实施方式中,可以由数据读线程读取源数据库中的源数据,发送所述源数据至数据缓存。由数据写线程获取所述数据缓存中的所述源数据,将所述源数据与哈希缓存中的目标数据进行匹配,得到所述匹配结果。所述哈希缓存中的目标数据是预先从目标数据库加载到所述哈希缓存的。由于哈希缓存主要采用哈希算法来构建缓存索引,具有很高的数据查询效率,因此,通过借助哈希缓存的高性能可进一步提高查询效率,从而可以更进一步提高数据同步性能。

可以理解的是,本公开实施例获取源数据的操作以及匹配数据、提交源数据给目标数据库的操作可以由同一线程执行,也可以如上面实施方式中分别由不同的线程执行,本公开对此并不进行限制。可以理解的是,在分别由不同线程执行的情况下,可以更一进步提高数据同步的效率。

在一些应用场景中,例如,数据采集场景中,所要存储的数据通常为无主键表的数据。对于无主键表的数据来说,无法通过主键来查询数据,只能通过匹配关键字段的数据来确定数据库中是否已存在相应的记录。为了减少存储空间的浪费,本公开所述哈希缓存中的目标数据是从目标数据库的无主键表的部分关键字段预先加载到所述哈希缓存的。其中,目标数据可以经过压缩再放入缓存。例如,对于用于存储人口信息的目标数据库来说,关键字段中的数据可以为人名及身份证号。结合放入哈希缓存的实施方式,可以将人名及身份证号进行拼接,对拼接后的人名及身份证号进行哈希计算,将用于代表该人名及身份证号的哈希值存入哈希缓存。在需要进行匹配时,可以将源数据中相应关键字段的数据进行哈希计算,得到所述源数据的哈希值,根据所述源数据的哈希值直接到哈希缓存中去匹配目标数据以确定目标数据库中是否存在相应记录。可见,相对于在哈希缓存中预加载目标数据库的全部数据来说,将目标数据库部分关键字段的数据哈希值预先加载到哈希缓存,占用的存储空间更少。

例如,所述数据缓存可以通过内存实现,也可以如上面实施方式中的哈希缓存通过NoSQL数据库实现。例如,所述数据缓存与所述哈希缓存可以分别采用不同NoSQL数据库实现,也可以采用同一NoSQL数据库实现。在采用同一NoSQL数据库实现的情况下,可以通过在键名上添加前缀或后缀来区分两个缓存。

在步骤230中,根据所述匹配结果,确定需要对所述源数据进行的数据库操作。

例如,在所述源数据与缓存中的目标数据匹配时,可以确定对所述源数据进行的数据库操作为数据库更新操作,或者;在所述源数据与缓存中的目标数据不匹配时,确定对所述源数据进行的数据库操作为数据库插入操作。

在步骤240中,根据预设条件,将需要对所述源数据进行的数据库操作提交给所述目标数据库执行。

例如,可以为更新和插入操作共同设置一个预设条件。如,若距上一次提交更新和插入操作的间隔时长达到一个设定的时长阈值,或,若上一次提交更新和插入操作之后获取的源数据的条数达到一个设定的条数阈值,则将需要对这些源数据分别进行的数据库更新操作和插入操作批量一块提交给所述目标数据库执行。

再例如,可以为更新和插入操作分别设置不同的预设条件。在该实施方式中,所述根据预设条件,将需要对所述源数据进行的数据库操作提交给所述目标数据库执行,可以包括:当匹配成功的所述源数据的数据量达到批量更新阈值时,使用所述匹配成功的源数据,批量更新所述目标数据库中匹配成功的目标数据对应的数据记录,或者;当匹配不成功的所述源数据的数据量达到批量插入阈值时,将所有匹配不成功的源数据插入到所述目标数据库。其中,批量更新阈值以及批量插入阈值可以根据实际需要设置,如,可以分别设置为500条数据。

可见,通过本公开技术方案,先将目标数据库的目标数据进行缓存,然后借助缓存的高性能来提高匹配效率,从而提高了匹配效率,根据匹配结果确定需要对源数据进行的数据库操作之后,再根据预设条件,将需要对源数据进行的数据库操作提交给所述目标数据库执行,从而实现了数据同步性能大幅提升的目的。另外,可以利用数据库的高性能的批量更新和插入来提高数据写入能力,进一步提高数据同步性能。

图3是根据本发明的另一示例性实施例示出的一种同步数据的方法的流程图。该方法可以包括:

在步骤310中,获取源数据。

在步骤320中,将所述源数据与缓存中的目标数据进行匹配,得到所述源数据的匹配结果。

其中,所述缓存中的数据为从目标数据库预先加载到所述缓存的。

在步骤330中,根据所述匹配结果,确定需要对所述源数据进行的数据库操作。

在步骤340中,根据预设条件,将需要对所述源数据进行的数据库操作提交给所述目标数据库执行。

在步骤350中,根据预设条件,将需要对所述源数据进行的数据库操作在所述缓存中执行。

本实施例中,可以预先从目标数据库加载目标数据到缓存,可以在首次启动时加载,后续通过该步骤350使缓存与目标数据库同步即可,无需再次从目标数据库加载目标数据到缓存,减少了数据的传输,更进一步提高了数据同步的效率。

图4是根据本发明的一示例性实施例示出的一种同步数据的装置400的框图。该装置可以包括:获取模块410、匹配模块420、操作确定模块430、以及操作提交模块440。

该获取模块410,可以被配置为获取源数据。

该匹配模块420,可以被配置为将所述源数据与缓存中的目标数据进行匹配,得到所述源数据的匹配结果。

其中,所述缓存中的目标数据为从目标数据库预先加载到所述缓存。

该操作确定模块430,可以被配置为根据所述匹配结果,确定需要对所述源数据进行的数据库操作。

该操作提交模块440,可以被配置为根据预设条件,将需要对所述源数据进行的数据库操作提交给所述目标数据库执行。

可见,通过本公开技术方案,先将目标数据库的目标数据进行缓存,然后借助缓存的高性能来提高匹配效率,从而提高了匹配效率,根据匹配结果确定需要对源数据进行的数据库操作之后,再根据预设条件,将需要对源数据进行的数据库操作提交给所述目标数据库执行,从而实现了数据同步性能大幅提升的目的。

可以理解的是,本公开实施例获取源数据的操作以及匹配数据、提交源数据给目标数据库的操作可以由同一线程执行,也可以分别由不同的线程执行,本公开对此并不进行限制。例如,所述获取模块410可以被配置为触发数据读线程读取源数据库中的源数据;发送所述源数据至数据缓存。所述匹配模块420可以被配置为触发数据写线程获取所述数据缓存中的所述源数据,将所述源数据与哈希缓存中的目标数据进行匹配,得到所述匹配结果。

在一些应用场景中,例如,数据采集场景中,所要存储的数据通常为无主键表的数据。对于无主键表的数据来说,无法通过主键来查询数据,只能通过匹配关键字段的数据来确定数据库中是否已存在相应的记录。为了减少对存储空间的浪费,本公开预先加载到缓存中的目标数据是从目标数据库的无主键表的部分关键字段预先加载到所述哈希缓存的。其中,目标数据可以经过压缩再放入缓存。可见,相对于在缓存中预加载目标数据库的全部数据来说,将目标数据库部分关键字段的数据的哈希值预先加载到哈希缓存,占用存储空间更少。

需要说明的是,更新和插入操作可以共同设置一个批量提交条件,也可以分别设置不同的批量提交条件。例如,所述操作确定模块430可以被配置为在所述源数据与缓存中的目标数据匹配时,确定对所述源数据进行的数据库操作为数据库更新操作,或者;在所述源数据与缓存中的目标数据不匹配时,确定对所述源数据进行的数据库操作为数据库插入操作。所述操作提交模块440可以被配置为在当匹配成功的所述源数据的数据量达到批量更新阈值时,使用所述匹配成功的源数据,批量更新所述目标数据库中匹配成功的目标数据对应的数据记录,或者;当匹配不成功的所述源数据的数据量达到批量插入阈值时,将所有匹配不成功的源数据插入到所述目标数据库。

一种可能的实施方式中,先从目标数据库加载数据到缓存,可以在首次启动时加载,后续使缓存与目标数据库同步更新即可,无需再次从目标数据库加载数据到缓存,减少了数据的传输,更进一步提高了数据同步的效率。具体地,如图5所示,所述装置还可以包括:缓存更新模块450,可以被配置为根据预设条件,将需要对所述源数据进行的数据库操作在所述缓存中执行。

以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。

此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1