CN111858764A - 一种数据同步方法、装置、计算机设备及存储介质 - Google Patents
一种数据同步方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN111858764A CN111858764A CN202010718550.2A CN202010718550A CN111858764A CN 111858764 A CN111858764 A CN 111858764A CN 202010718550 A CN202010718550 A CN 202010718550A CN 111858764 A CN111858764 A CN 111858764A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- synchronization
- target
- full
- 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.)
- Pending
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
Abstract
本发明涉及大数据,揭露一种数据同步方法包括:将全量数据同步存储至第二数据库,全量数据同步更新进第二数据库时进行存储格式转化,将存储格式转化为:以第三格式文档进行存储,第三格式文档中存储有第二目标数据和第二目标子数据,且第二目标数据和第二目标子数据存在相同文档里,第二目标数据为第二目标子数据的关联数据;第三格式文档存储的单个第二目标数据和单个第二目标子数据,使得第三格式文档中不会嵌入至少其他格式文档,从而实现数据的平铺,进而使得全量数据同步存储至第二数据库的效率提高,本发明还涉及区块链技术,全量数据存储于区块链中,解决了数据同步效率低的问题。
Description
技术领域
本发明涉及大数据处理,尤其涉及一种数据同步方法、装置、计算机设备及存储介质。
背景技术
数据同步需要从数据平台中同步数据到系统的Oracle数据库中,其中,数据平台包括多个不同类型资源池数据,再将需要更新的数据从Oracle数据库同步到Mongo数据库中。
随着业务量的新增,目前数据同步的性能已不能满足每天同步的数量,导致到白天正常上班时,数据还在同步,压缩了现场可使用的时间,现有的Oracle数据库中存储的数据是由一个类型数据对应多个关联子数据,当一个类型数据中的某个关联子数据发生修改时,需要将上述关联子数据对应的类型数据的全部关联子数据进行删除,再将修改后的上述关联子数据对应的类型数据的全部关联子数据同步进Mongo数据库中。以同步车辆信息为例,Oracle数据库中存储着多个车辆新嵌入到人的信息里的数据,当某车辆信息发生修改时,需要将上述车辆信息对应的人的信息进行删除,再将修改后的上述车辆信息对应的人的信息的全部车辆信息同步进Mongo数据库中,导致大量修改后的上述车辆信息对应的人的信息中的没有被修改的车辆信息需要重新同步到Mongo数据库中,从而导致同步的效率低的问题。
发明内容
本发明提供一种数据同步方法、装置、计算机设备及存储介质,以解决数据同步问题。
一种数据同步方法,包括:
获取第一数据库中需要同步到第二数据库的全量数据,所述全量数据包括以第一格式文档存储的第一目标数据,所述第一格式文档中嵌有至少一个第二格式文档,所述第二格式文档存储有第一目标子数据,所述第一目标子数据为所述第一目标数据的关联数据;
根据所述全量数据的标识查询第二数据库中是否存在所述全量数据对应的增量数据;
若查询出所述第二数据库中存在所述增量数据,则对所述第二数据库中的增量数据进行删除;
将所述全量数据同步存储至所述第二数据库,其中,所述全量数据同步更新进所述第二数据库时以如下存储格式进行存储:所述全量数据中包括以第三格式文档存储的第二目标数据和第二目标子数据,且所述第二目标数据和第二目标子数据存在相同文档里,所述第二目标数据为所述第二目标子数据的关联数据。
一种数据同步装置,包括:
获取模块,获取第一数据库中需要同步到第二数据库的全量数据,所述全量数据包括以第一格式文档存储的第一目标数据,所述第一格式文档中嵌有至少一个第二格式文档,所述第二格式文档存储有第一目标子数据,所述第一目标子数据为所述第一目标数据的关联数据;
查询模块,根据所述全量数据的标识查询第二数据库中是否存在所述全量数据对应的增量数据;
删除模块,若查询出所述第二数据库中存在所述增量数据,则对所述第二数据库中的增量数据进行删除;
同步模块,将所述全量数据同步存储至所述第二数据库,其中,所述全量数据同步更新进所述第二数据库时以如下存储格式进行存储:所述全量数据中包括以第三格式文档存储的第二目标数据和第二目标子数据,且所述第二目标数据和第二目标子数据存在相同文档里,所述第二目标数据为所述第二目标子数据的关联数据。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据同步方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据同步方法的步骤。
上述数据同步方法、装置、计算机设备及存储介质,所实现的其中一个方案中,所述第一数据库中的全量数据是以第一格式文档存储的第一目标数据,第一格式文档中嵌有至少一个第二格式文档,第二格式文档存储有与第一目标数据关联的第一目标子数据;在数据同步的过程中,将全量数据同步存储至所述第二数据库,全量数据同步更新进所述第二数据库时进行存储格式转化,将存储格式转化为:以第三格式文档进行存储,第三格式文档中存储有第二目标数据和第二目标子数据,且所述第二目标数据和第二目标子数据存在相同文档里,所述第二目标数据为所述第二目标子数据的关联数据;第三格式文档存储的单个第二目标数据和单个第二目标子数据,使得第三格式文档中不会嵌入至少其他格式文档,从而实现数据的平铺,进而使得全量数据同步存储至第二数据库的效率提高,解决了数据同步效率低的问题。
附图说明
为了更清楚地说明本发明的技术方案,下面将对本发明的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中数据同步方法的一流程图;
图2是本发明一实施例中数据同步方法的另一流程图;
图3是本发明一实施例中数据同步方法的另一流程图;
图4是本发明一实施例中数据同步装置的一原理框图;
图5是本发明一实施例中计算机设备的一示意图。
具体实施方式
下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在一实施例中,如图1所示,提供一种数据同步方法,包括如下步骤:
S10:获取第一数据库中需要同步到第二数据库的全量数据,所述全量数据包括以第一格式文档存储的第一目标数据,所述第一格式文档中嵌有至少一个第二格式文档,所述第二格式文档存储有第一目标子数据,所述第一目标子数据为所述第一目标数据的关联数据。
可理解地,所述全量数据是指待同步更新的数据,全量数据的类型包括新增数据和修改数据,修改数据的类型包括待修改数据和待删除数据。本方案中,第一数据库可以为Oracle数据库,第二数据库为Mongo数据库。需要强调的是,为进一步保证上述全量数据的私密和安全性,上述全量数据还可以存储于一区块链的节点中。
第一数据库中的全量数据是以第一格式文档存储的,且第一格式文档中嵌有至少一个第二格式文档,且第一格式文档中存储着第一目标数据,第二格式文档中存储着第一目标子数据,所述第一目标子数据为第一目标数据的关联数据。以同步车辆信息为例,第一数据库中的全量数据是以人为维度进行存储的,而一个人可能有多辆车,因此一个人的格式文档中嵌有至少一辆车的文档格式。假如,第一数据库中存储有张三的车辆数据,获取张三的车辆数据中需要同步到第二数据库中的全量数据,那么第一目标数据中存储有张三及与张三关联的三辆车的车辆数据,其中,全量数据包括以第一格式文档存储的第一目标数据,其中第一文档格式中嵌有至少一个第二格式文档,所述第二格式文档存储有第一目标子数据,其中第一目标数据为张三,第一目标子数据为与张三关联的车牌尾号“xxx123”、“xxx234”和“xxx167”,这样,一个第一格式文档中嵌有三个第二格式文档,三个第二格式文档中分别存储着与张三关联的车牌尾号“xxx123”的数据、车牌尾号“xxx234”的数据和车牌尾号“xxx167”的数据。
S20:根据所述全量数据的标识查询第二数据库中是否存在所述全量数据对应的增量数据。
可理解地,增量数据指的是与第一数据库相比第二数据库中发生变化的数据;全量数据的标识可以为数据的主键或者ID,根据全量数据的标识查询第二数据库中是否存在全量数据对应的增量数据。例如,获取到第一数据库中全量数据为张三及与张三关联的车牌尾号“xxx123”、“xxx234”和“xxx167”的数据,根据所述新增数据的标识查询第二数据库中是否存在所述新增数据对应的需要新增的增量数据,根据所述修改数据的标识查询第二数据库中是否存在所述修改数据对应的需要修改的或/和需要删除的增量数据。
S30:若查询出所述第二数据库中存在所述增量数据,则对所述第二数据库中的增量数据进行删除。
可理解地,数据有增加、删除、修改三种情况,Mongo数据库的数据同步采用先删除再增加的方式,把上述三种情况一起操作,也即,把修改前和待删除的数据的主键都查询出来,做一个标记,然后删除全部带有标记的数据,在插入新增加和修改好的数据。
对查询出所述第二数据库中存在的增量数据做标记,例如,字段del_flag值为1,意义为该增量数据为需要删除的数据,然后删除全部字段del_flag值为1的数据。
假如,查询到第二数据库中存在张三对应的增量数据,其中,增量数据为张三及与张三关联的车牌尾号“xxx2453”、“xxx263”和“xxx000”的数据,对张三及与张三关联的车牌尾号“xxx245”、“xxx263”和“xxx000”的数据进行标记后,对车牌尾号“xxx245”、“xxx263”和“xxx000”的数据进行删除。
若查询出所述第二数据库中存在需要修改的所述增量数据,则对所述第二数据库中待修改的所述增量数据进行删除;若查询出所述第二数据库中存在需要删除的所述增量数据,则对所述第二数据库中待删除的所述增量数据进行删除。
若查询出第二数据库中存在增量数据,例如,查询出增量数据为与张三关联的车牌尾号:xxx245和xxx263,其中第二数据库中存在需要修改的增量数据为与张三关联的车牌尾号:xxx245,则对第二数据库中需要修改的增量数据进行删除,第二数据库中存在需要删除的增量数据为与张三关联的车牌尾号:xxx263,则对第二数据库中需要删除的增量数据进行删除。
S40:将所述全量数据同步存储至所述第二数据库,其中,所述全量数据同步更新进所述第二数据库时以如下存储格式进行存储:所述全量数据中包括以第三格式文档存储的第二目标数据和第二目标子数据,且所述第二目标数据和第二目标子数据存在相同文档里,所述第二目标数据为所述第二目标子数据的关联数据。
本方案可以通过Kettle(数据仓库技术工具)将全量数据同步存储至第二数据库。在全量数据同步更新进第二数据库时,转化全量数据的存储格式,其中,将全量数据的存储格式转化为:第三格式文档进行存储,第三格式文档中存储有第二目标数据和第二目标子数据,且所述第二目标数据和第二目标子数据存在相同文档里,所述第二目标数据为所述第二目标子数据的关联数据;第三格式文档存储的单个第二目标数据和单个第二目标子数据。再将以第三格式文档存储的全量数据同步存储至第二数据库,从而完成Oracle数据库中的全量数据同步至Mongo数据库中。
例如,第一数据库中需要同步到第二数据库的全量数据为张三及与张三关联的车牌尾号“xxx123”、“xxx234”和“xxx167”的数据,将第一数据库中需要同步到第二数据库的全量数据的存储格式转换为以第三格式文档进行存储,这样,第三格式文档中不会嵌有别的格式文档,因此,同步存储至第二数据库的全量数据将以一个人对应一辆车的格式文档进行存储。可理解地,同步存储至第二数据库的全量数据包括一个以第三格式文档存储的第二目标数据及第二目标子数据,其中,第二目标数据为张三的数据,第二目标子数据为与张三关联的车牌尾号“xxx123”的数据,另一个以第三格式文档存储的第二目标数据和第二目标子数据,其中,第二目标数据为张三的数据,第二目标子数据为与张三关联的车牌尾号“xxx234”的数据,以及另一个以第三格式文档存储的第二目标数据和第二目标子数据,其中第二目标数据为张三的数据,第二目标子数据为与张三关联的车牌尾号“xxx167”的数据;将以第三格式文档存储的全量数据中的新增数据同步存储至第二数据库,其中新增数据为张三及与张三关联的车牌尾号“xxx167”和张三及张三关联的车牌尾号“xxx234”,将以第三格式文档存储的全量数据中的修改数据同步存储至第二数据库中,其中修改数据为张三及与张三关联的车牌尾号“xxx123”,以使第二数据库中同步的全量数据是以车为维度进行存储的,一个格式文档中存储有第二目标数据与其关联的第二目标子数据,也即,一个格式文档中没有前有别的格式文档,从而实现数据的平铺。
在图1对应的实施例中,所述第一数据库中的全量数据是以第一格式文档存储的第一目标数据,第一格式文档中嵌有至少一个第二格式文档,第二格式文档存储有与第一目标数据关联的第一目标子数据;在数据同步的过程中,将全量数据同步存储至所述第二数据库,全量数据同步更新进所述第二数据库时进行存储格式转化,将存储格式转化为:以第三格式文档进行存储,第三格式文档中存储有第二目标数据和第二目标子数据,且所述第二目标数据和第二目标子数据存在相同文档里,所述第二目标数据为所述第二目标子数据的关联数据;第三格式文档存储的单个第二目标数据和单个第二目标子数据,使得第三格式文档中不会嵌入至少其他格式文档,从而实现数据的平铺,进而使得全量数据同步存储至第二数据库的效率提高,解决了数据同步效率低的问题。
在一实施例中,如图2所示,步骤S40中,也即所述将所述全量数据同步存储至所述第二数据库,具体包括如下步骤:
S41:创建多个同步子任务。
可理解地,同步子任务为在数据同步的过程中第二数据库同步运行的任务。
例如,在第二数据库中包括42个机构的机构数据,且每个机构包括对应的机构标识,机构标识可以为ID,例如,一个机构可以代表一个省份,42个机构代表42个省份,创建6个同步子任务。
S42:根据机构标识和机构的数据量对多个机构进行分配,得到每个同步子任务中待同步的机构类型和机构数量。
可理解地,利用机构标识根据机构的数据量将多个机构分配进不同的同步子任务中,将42个机构按照每个同步子任务预设的数据量分配进不同的同步子任务中,得到每个同步子任务中待同步的机构类型和机构数量,比如某个机构的数据量较多,也即例如机构A中拥有100个数据量,那么该机构所分配进的同步子任务中的机构数量可能只有5个,而某些机构的数据量较少,也即例如机构B中拥有50个数据量,那么它所分配进的同步子任务中的机构数量可能有7和或者8个,以保证每个同步子任务中的总数据量之间相差的数量量不大。
S43:执行所述同步子任务,以使每个同步子任务按照所述机构类型和机构数量将对应的全量数据同步至所述第二数据库。
在执行同步子任务的同时,能更好的并发执行将第一数据库中的全量数据同步至第二数据库中,以使每个同步子任务按照机构类型和机构数量将对应的全量数据同步至第二数据库中。
可理解地,所述第一数据库也包括多个机构的数据,每个机构包括对应的机构标识,也即获取第一数据库中需要同步到第二数据库的全量数据中,包括步骤:创建多个运行子任务;根据机构标识和机构的数据量对多个机构进行分配,得到每个运行子任务中待运行的机构类型和数量;执行所述运行子任务,以使每个运行子任务按照所述机构类型从第一数据库中获取需要同步到第二数据库的全量数据。
在图2对应的实施例中,根据机构标识和机构的数据量,对多个机构进行分配,得到每个子任务待同步的机构类型和数目再执行所述同步子任务,使得每个子任务按照所述机构类型和数目将机构数据同步至所述第二数据库,使得多个机构能分别在不同的子任务中进行同步,进而提高数据同步的效率。
在一实施例中,如图3所示,步骤S43之后,也即在所述每个同步子任务按照所述机构类型和数目将机构数据同步至所述第二数据库之后,具体包括如下步骤:
S44:当检测到所述多个同步子任务中的某个目标同步子任务中出现同步异常时,停止同步操作,并记录同步进度。
多个同步子任务里有多个互不相同的机构,且每个同步子任务独立并行,当检测到多个同步子任务中的某个目标同步子任务出现同步异常时,停止同步操作,并对所述目标同步子任务进行修复。也即,如果其中一个同步子任务中出现同步异常,只需要修复出现同步异常的同步子任务即可,其余没有出现同步异常的同步子任务正常运行,不需要重新补跑,可以节省修复时间。
S45:当检测到所述目标同步子任务同步异常修复后,根据所述同步进度继续执行所述目标同步子任务。
在图3对应的实施例中,当检测到某个所述子任务中出现同步异常时,及时对子任务中同步异常进行修复,只需要修复异常的某个子任务中的机构数据,能够较快的继续执行同步操作。
在一实施例中,所述全量数据包括新增数据和修改数据,在步骤S20中,也即所述根据所述全量数据的标识查询第二数据库中是否存在所述全量数据对应的增量数据中,具体包括如下步骤:
根据所述新增数据的标识查询第二数据库中是否存在所述新增数据对应的需要新增的增量数据。
根据所述修改数据的标识查询第二数据库中是否存在所述修改数据对应的需要修改的或/和需要删除的增量数据。
在步骤S30中,也即所述若查询出所述第二数据库中存在所述增量数据,则对所述第二数据库中的增量数据进行删除中,具体包括如下步骤:
若查询出所述第二数据库中存在需要修改的所述增量数据,则对所述第二数据库中待修改的所述增量数据进行删除。
若查询出所述第二数据库中存在需要删除的所述增量数据,则对所述第二数据库中待删除的所述增量数据进行删除。
在步骤S40中,也即所述全量数据同步存储至所述第二数据库中,具体包括如下步骤:
将所述全量数据中的新增数据同步存储至所述第二数据库。
将所述全量数据中的修改数据同步存储至所述第二数据库。
假如,第一数据库中全量数据为张三及与张三关联的车牌尾号“xxx123”、“xxx234”和“xxx167”,其中,新增数据为张三及与张三关联的车牌尾号“xxx123”,修改数据为张三及与张三关联的车牌尾号“xxx234”和张三及与张三关联的车牌尾号“xxx167”。
若根据新增数据的标识查询到第二数据库中存在所述新增数据对应的需要新增的增量数据,则将所述新增数据为张三及与张三关联的车牌尾号“xxx123”的数据同步存储至所述第二数据库。
若根据所述修改数据的标识查询到第二数据库中存在所述修改数据对应的需要修改的增量数据,则对所述第二数据库中待修改的所述增量数据进行删除,其中待修改的所述新增数据为张三及与张三关联的车牌尾号“xxx245”和张三及与张三关联的车牌尾号“xxx263”,再将所述全量数据中的修改数据同步存储至所述第二数据库,其中,修改数据为张三及与张三关联的车牌尾号“xxx234”和张三及与张三关联的车牌尾号“xxx167”。
若根据所述修改数据的标识查询到第二数据库中存在所述修改数据对应的需要删除的增量数据,则对所述第二数据库中需要删除的所述增量数据进行删除,其中所述需要删除的增量数据为张三及与张三关联的车牌尾号“xxx000”。
在本实施例中,先根据所述新增数据和修改数据的标识分别查询第二数据库中是否存在所述标识对应的需要新增或需要修改或需要删除的增量数据;若查询出所述第二数据库中存在需要修改的或需要删除的所述增量数据,则对所述第二数据库中的增量数据进行删除,最后将所述全量数据中的新增数据或修改数据同步存储至所述第二数据库,第二数据库数据同步采用先删除再新增的方式,提高了数据同步的效率。
在一实施例中,所述将所述全量数据同步存储至所述第二数据库,具体包括如下步骤:
将所述第一格式文档的全量数据转换为所述第三格式文档的全量数据,其中,第三格式文档为BSON结构的格式文档。
将所述第三格式文档的全量数据同步存储至所述第二数据库。
可理解地,Mongo数据库中第三格式文档中存储的数据是以BSON结构进行存储的。BSON是一种计算机数据交换格式,主要被用作MongoDB数据库中的数据存储和网络传输格式。它是一种二进制表示形式,能用来表示简单数据结构、关联数组(MongoDB中称为"对象"或"文档")以及MongoDB中的各种数据类型。BSON之名缘于JSON,含义为Binary JSON(二进制JSON)。BSON结构除了能够保存简单的Key-Value模式,也能套嵌BSON格式的文档。第一数据库中的数据是以人为维度进行存储,而一个人可能有多辆车,因此在第一数据库中,一个人的BSON结构的格式文档中,可能会嵌套有多个车辆的BSON结构的格式文档。在数据同步过程中,第二数据库中的数据是以车为维度进行存储,也即每个第三格式文档中存储有一辆车对应一个人的数据,在第三格式文档中不会嵌套其他的BSON结构的格式文档,最后同将存储有一辆车对应一个人的数据同步存储至第二数据库中。
在本实施例中,全量数据以BSON结构的格式文档存储进第二数据库中,BSON结构的格式文档具有轻量性、可遍历性、高效性的特点,现有的JSON结构会导数据遍历非常慢,而BSON结构数据遍历的速度高,因此提高了第二数据库数据同步的效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明的实施过程构成任何限定。
在一实施例中,提供一种数据同步装置,该数据同步装置与上述实施例中数据同步方法一一对应。如图4所示,该数据同步装置包括获取模块10、查询模块20、删除模块30和同步模块40。各功能模块详细说明如下:
获取模块10,获取第一数据库中需要同步到第二数据库的全量数据,所述全量数据包括以第一格式文档存储的第一目标数据,所述第一格式文档中嵌有至少一个第二格式文档,所述第二格式文档存储有第一目标子数据,所述第一目标子数据为所述第一目标数据的关联数据;需要强调的是,为进一步保证上述全量数据的私密和安全性,上述全量数据还可以存储于一区块链的节点中。
查询模块20,根据所述全量数据的标识查询第二数据库中是否存在所述全量数据对应的增量数据;
删除模块30,若查询出所述第二数据库中存在所述增量数据,则对所述第二数据库中的增量数据进行删除;
同步模块40,将所述全量数据同步存储至所述第二数据库,其中,所述全量数据同步更新进所述第二数据库时以如下存储格式进行存储:所述全量数据中包括以第三格式文档存储的第二目标数据和第二目标子数据,且所述第二目标数据和第二目标子数据存在相同文档里,所述第二目标数据为所述第二目标子数据的关联数据。
所述同步模块40,具体用于:
创建多个同步子任务;
根据机构标识和机构的数据量对多个机构进行分配,得到每个同步子任务中待同步的机构类型和机构数量;
执行所述同步子任务,以使每个同步子任务按照所述机构类型和机构数量将对应的全量数据同步至所述第二数据库。
所述装置还包括同步异常模块,所述同步异常模块具体用于:
当检测到所述多个同步子任务中的某个目标同步子任务中出现同步异常时,停止同步操作,并记录同步进度;
当检测到所述目标同步子任务同步异常修复后,根据所述同步进度继续执行所述目标同步子任务。
所述查询模块20,具体用于:
根据所述新增数据的标识查询第二数据库中是否存在所述新增数据对应的需要新增的增量数据;
根据所述修改数据的标识查询第二数据库中是否存在所述修改数据对应的需要修改的或/和需要删除的增量数据;
所述删除模块30,具体用于:
若查询出所述第二数据库中存在需要修改的所述增量数据,则对所述第二数据库中待修改的所述增量数据进行删除;
若查询出所述第二数据库中存在需要删除的所述增量数据,则对所述第二数据库中待删除的所述增量数据进行删除;
所述同步模块40,具体用于:
将所述全量数据中的新增数据同步存储至所述第二数据库;
将所述全量数据中的修改数据同步存储至所述第二数据库。
所述同步模块40,具体用于:
将所述第一格式文档的全量数据转换为所述第三格式文档的全量数据,其中,第三格式文档为BSON结构的格式文档;
将所述第三格式文档的全量数据同步存储至所述第二数据库。
关于数据同步装置的具体限定可以参见上文中对于数据同步方法的限定,在此不再赘述。上述数据同步装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储全量数据、增量数据、第一目标数据和第一目标子数据等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据同步方法。需要强调的是,为进一步保证上述全量数据的私密和安全性,上述全量数据还可以存储于一区块链的节点中。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
获取第一数据库中需要同步到第二数据库的全量数据,所述全量数据包括以第一格式文档存储的第一目标数据,所述第一格式文档中嵌有至少一个第二格式文档,所述第二格式文档存储有第一目标子数据,所述第一目标子数据为所述第一目标数据的关联数据;
根据所述全量数据的标识查询第二数据库中是否存在所述全量数据对应的增量数据;
若查询出所述第二数据库中存在所述增量数据,则对所述第二数据库中的增量数据进行删除;
将所述全量数据同步存储至所述第二数据库,其中,所述全量数据同步更新进所述第二数据库时以如下存储格式进行存储:所述全量数据中包括以第三格式文档存储的第二目标数据和第二目标子数据,且所述第二目标数据和第二目标子数据存在相同文档里,所述第二目标数据为所述第二目标子数据的关联数据。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取第一数据库中需要同步到第二数据库的全量数据,所述全量数据包括以第一格式文档存储的第一目标数据,所述第一格式文档中嵌有至少一个第二格式文档,所述第二格式文档存储有第一目标子数据,所述第一目标子数据为所述第一目标数据的关联数据;
根据所述全量数据的标识查询第二数据库中是否存在所述全量数据对应的增量数据;
若查询出所述第二数据库中存在所述增量数据,则对所述第二数据库中的增量数据进行删除;
将所述全量数据同步存储至所述第二数据库,其中,所述全量数据同步更新进所述第二数据库时以如下存储格式进行存储:所述全量数据中包括以第三格式文档存储的第二目标数据和第二目标子数据,且所述第二目标数据和第二目标子数据存在相同文档里,所述第二目标数据为所述第二目标子数据的关联数据。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据同步方法,其特征在于,包括:
获取第一数据库中需要同步到第二数据库的全量数据,所述全量数据包括以第一格式文档存储的第一目标数据,所述第一格式文档中嵌有至少一个第二格式文档,所述第二格式文档存储有第一目标子数据,所述第一目标子数据为所述第一目标数据的关联数据;
根据所述全量数据的标识查询第二数据库中是否存在所述全量数据对应的增量数据;
若查询出所述第二数据库中存在所述增量数据,则对所述第二数据库中的增量数据进行删除;
将所述全量数据同步存储至所述第二数据库,其中,所述全量数据同步更新进所述第二数据库时以如下存储格式进行存储:所述全量数据中包括以第三格式文档存储的第二目标数据和第二目标子数据,且所述第二目标数据和第二目标子数据存在相同文档里,所述第二目标数据为所述第二目标子数据的关联数据。
2.如权利要求1所述的数据同步方法,其特征在于,所述全量数据存储于区块链中,所述将所述全量数据同步存储至所述第二数据库,包括:
创建多个同步子任务;
根据机构标识和机构的数据量对多个机构进行分配,得到每个同步子任务中待同步的机构类型和机构数量;
执行所述同步子任务,以使每个同步子任务按照所述机构类型和机构数量将对应的全量数据同步至所述第二数据库。
3.如权利要求2所述的数据同步方法,其特征在于,在所述每个同步子任务按照所述机构类型和数目将机构数据同步至所述第二数据库之后,还包括:
当检测到所述多个同步子任务中的某个目标同步子任务中出现同步异常时,停止同步操作,并记录同步进度;
当检测到所述目标同步子任务同步异常修复后,根据所述同步进度继续执行所述目标同步子任务。
4.如权利要求1-3任一项所述的数据同步方法,其特征在于,所述全量数据包括新增数据和修改数据,所述根据所述全量数据的标识查询第二数据库中是否存在所述全量数据对应的增量数据,包括:
根据所述新增数据的标识查询第二数据库中是否存在所述新增数据对应的需要新增的增量数据;
根据所述修改数据的标识查询第二数据库中是否存在所述修改数据对应的需要修改的或/和需要删除的增量数据;
所述若查询出所述第二数据库中存在所述增量数据,则对所述第二数据库中的增量数据进行删除,包括:
若查询出所述第二数据库中存在需要修改的所述增量数据,则对所述第二数据库中待修改的所述增量数据进行删除;
若查询出所述第二数据库中存在需要删除的所述增量数据,则对所述第二数据库中待删除的所述增量数据进行删除;
所述全量数据同步存储至所述第二数据库,包括:
将所述全量数据中的新增数据同步存储至所述第二数据库;
将所述全量数据中的修改数据同步存储至所述第二数据库。
5.如权利要求1-3任一项所述的数据同步方法,其特征在于,所述将所述全量数据同步存储至所述第二数据库,包括:
将所述第一格式文档的全量数据转换为所述第三格式文档的全量数据,其中,第三格式文档为BSON结构的格式文档;
将所述第三格式文档的全量数据同步存储至所述第二数据库。
6.一种数据同步装置,其特征在于,包括:
获取模块,获取第一数据库中需要同步到第二数据库的全量数据,所述全量数据包括以第一格式文档存储的第一目标数据,所述第一格式文档中嵌有至少一个第二格式文档,所述第二格式文档存储有第一目标子数据,所述第一目标子数据为所述第一目标数据的关联数据;
查询模块,根据所述全量数据的标识查询第二数据库中是否存在所述全量数据对应的增量数据;
删除模块,若查询出所述第二数据库中存在所述增量数据,则对所述第二数据库中的增量数据进行删除;
同步模块,将所述全量数据同步存储至所述第二数据库,其中,所述全量数据同步更新进所述第二数据库时以如下存储格式进行存储:所述全量数据中包括以第三格式文档存储的第二目标数据和第二目标子数据,且所述第二目标数据和第二目标子数据存在相同文档里,所述第二目标数据为所述第二目标子数据的关联数据。
7.如权利要求6所述的数据同步装置,其特征在于,所述全量数据存储于区块链中,所述同步模块,具体用于:
创建多个同步子任务;
根据机构标识和机构的数据量对多个机构进行分配,得到每个同步子任务中待同步的机构类型和机构数量;
执行所述同步子任务,以使每个同步子任务按照所述机构类型和机构数量将对应的全量数据同步至所述第二数据库。
8.如权利要求7所述的数据同步装置,其特征在于,所述装置还包括同步异常模块,所述同步异常模块具体用于:
当检测到多个同步子任务中的某个目标同步子任务中出现同步异常时,停止同步操作,并记录同步进度;
当检测到所述目标同步子任务同步异常修复后,根据所述同步进度继续执行所述目标同步子任务。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5任一项所述数据同步方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述数据同步方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010718550.2A CN111858764A (zh) | 2020-07-23 | 2020-07-23 | 一种数据同步方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010718550.2A CN111858764A (zh) | 2020-07-23 | 2020-07-23 | 一种数据同步方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111858764A true CN111858764A (zh) | 2020-10-30 |
Family
ID=72949811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010718550.2A Pending CN111858764A (zh) | 2020-07-23 | 2020-07-23 | 一种数据同步方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111858764A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559475A (zh) * | 2020-12-11 | 2021-03-26 | 上海哔哩哔哩科技有限公司 | 数据实时捕获和传输方法及系统 |
CN114362885A (zh) * | 2022-01-10 | 2022-04-15 | 中电望辰科技有限公司 | 物联网数据传输方法、装置、设备和介质 |
CN114362885B (zh) * | 2022-01-10 | 2024-04-26 | 中电望辰科技有限公司 | 物联网数据传输方法、通信系统、设备和介质 |
-
2020
- 2020-07-23 CN CN202010718550.2A patent/CN111858764A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559475A (zh) * | 2020-12-11 | 2021-03-26 | 上海哔哩哔哩科技有限公司 | 数据实时捕获和传输方法及系统 |
CN112559475B (zh) * | 2020-12-11 | 2023-01-10 | 上海哔哩哔哩科技有限公司 | 数据实时捕获和传输方法及系统 |
CN114362885A (zh) * | 2022-01-10 | 2022-04-15 | 中电望辰科技有限公司 | 物联网数据传输方法、装置、设备和介质 |
CN114362885B (zh) * | 2022-01-10 | 2024-04-26 | 中电望辰科技有限公司 | 物联网数据传输方法、通信系统、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111061769B (zh) | 一种区块链系统的共识方法及相关设备 | |
CN111008201B (zh) | 并行修改和读取状态树的方法和装置 | |
CN111177302B (zh) | 业务单据处理方法、装置、计算机设备和存储介质 | |
CN110555773B (zh) | 合约冲突检测方法、装置、可读存储介质和计算机设备 | |
CN111651300B (zh) | 一种区块链数据恢复方法、装置、设备及介质 | |
CN109815226B (zh) | 基于区块链的数据存储方法、装置、设备和存储介质 | |
CN111580965A (zh) | 数据请求的处理方法及系统 | |
CN111026767A (zh) | 区块链的数据存储方法、装置及硬件设备 | |
CN108765142B (zh) | 电子装置、多区块链整合控制方法和计算机可读存储介质 | |
CN110968647A (zh) | 数据存储方法、装置、计算机设备和存储介质 | |
CN112559529A (zh) | 数据存储方法、装置、计算机设备及存储介质 | |
DE102020121075A1 (de) | Einrichtung und Verfahren zur Authentifizierung von Software | |
CN113515322B (zh) | 应用程序加载方法、装置、计算机设备和可读存储介质 | |
CN111858764A (zh) | 一种数据同步方法、装置、计算机设备及存储介质 | |
CN109241057B (zh) | 一种用于分布式系统的数字id生成方法 | |
CN112862449A (zh) | 结构化工单生成方法、装置、计算机设备和存储介质 | |
CN112416350A (zh) | 视图页面构建方法、装置、计算机设备和存储介质 | |
CN109101232B (zh) | 一种产品开发的方法、装置、计算机设备及存储介质 | |
CN116578746A (zh) | 对象去重方法及装置 | |
CN111143130A (zh) | 数据恢复方法、装置、计算机可读存储介质和计算机设备 | |
CN114138734A (zh) | 基于Web的面向数据库及文件资源的版本管理方法 | |
CN113810185A (zh) | 一种抗陷门泄露的链上数据修复系统及方法 | |
CN112862454A (zh) | 试验执行工单更新方法、装置、计算机设备和存储介质 | |
CN111666281A (zh) | 基于结构化数据的开关设置方法、装置、设备及介质 | |
CN112860702A (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 |