一种带有层级关系数据定期增量同步方法及系统与流程

文档序号:33386907发布日期:2023-03-08 08:39阅读:45来源:国知局
一种带有层级关系数据定期增量同步方法及系统与流程

1.本发明涉及it开发技术领域,具体而言,涉及一种带有层级关系数据定期增量同步方法及系统。


背景技术:

2.普通的数据库数据同步只要把上次的更新时间到当前时间期间的数据增量同步即可,带有层级关系的数据同步比较特殊,因为树形结构数据除了新增删除,还可以更换父节点。以公司员工数据为例,有的公司会委托第三方公司分析员工入职率,离职率、调岗率之类的数据,因此涉及该技术,就会每个周期由第三方公司来同步本公司的员工数据,然后进行一系列的分析。因为此类特殊的数据需要快速精准的同步。
3.在增量同步例如菜单这种带有层级关系的树状结构时,难点就在于各个节点与上次同步相比,可能已经删除,或是删除,或者移动到其他节点下,因为有父节点的关系,所以要如何快速获取新旧数据差异,并将差异补充到需同步数据库中成为难点。


技术实现要素:

4.为了克服上述问题或者至少部分地解决上述问题,本发明实施例提供一种带有层级关系数据定期增量同步方法及系统,可实现在精确同步数据的同时大大降低系统资源消耗,提高同步过程的安全性。
5.本发明的实施例是这样实现的:
6.第一方面,本发明实施例提供一种带有层级关系数据定期增量同步方法,包括以下步骤:
7.构建树节点的数据结构;
8.传入同步数据库和被同步数据库中的数据;
9.查询同步数据库和被同步数据库中的数据,并利用树节点的数据结构将查询到的数据构建成对应数据库的层级关系树;
10.将同步数据库的层级关系树和被同步数据库的层级关系树进行比对,以得到差异数据;
11.将差异数据同步给同步数据库,使得同步数据库和被同步数据库的数据一致,完成同步。
12.为了解决现有技术中的问题,本方法通过自建节点数据结构,利用该自建节点构建出带有层级关系节点数据树进行比较,收集比较差异结果方式,实现两个数据库的数据同步。传入两个列表数据,以及层级关系字段,根据该字段,把两个列表数据,自动构建成两棵树状数据结构,然后进行比对,再返回需要新增和删除的两个列表数据,用户只要对两个差异数据在数据库中进行批量操作即可。本发明可实现在精确同步数据的同时大大降低系统资源消耗,提高同步过程的安全性。
13.基于第一方面,在本发明的一些实施例中,上述数据结构为由双向链表和有序图
表组成的双向多叉树数据结构。
14.基于第一方面,在本发明的一些实施例中,上述利用树节点的数据结构将查询到的数据构建成对应数据库的层级关系树的方法包括以下步骤:
15.提取查询到的数据中的层级关系字段;
16.根据层级关系字段利用树节点的数据结构将查询到的数据构建成对应数据库的层级关系树。
17.基于第一方面,在本发明的一些实施例中,上述将同步数据库的层级关系树和被同步数据库的层级关系树进行比对的方法包括以下步骤:
18.利用宽度优先遍历算法将同步数据库的层级关系树和被同步数据库的层级关系树进行层层比对。
19.第二方面,本发明实施例提供一种带有层级关系数据定期增量同步系统,包括:自建节点模块、数据库传入模块、关系树构建模块、数据比对模块以及数据同步模块,其中:
20.自建节点模块,用于构建树节点的数据结构;
21.数据库传入模块,用于传入同步数据库和被同步数据库中的数据;
22.关系树构建模块,用于查询同步数据库和被同步数据库中的数据,并利用树节点的数据结构将查询到的数据构建成对应数据库的层级关系树;
23.数据比对模块,用于将同步数据库的层级关系树和被同步数据库的层级关系树进行比对,以得到差异数据;
24.数据同步模块,用于将差异数据同步给同步数据库,使得同步数据库和被同步数据库的数据一致,完成同步。
25.为了解决现有技术中的问题,本系统通过自建节点模块、数据库传入模块、关系树构建模块、数据比对模块以及数据同步模块等多个模块的配合,通过自建节点数据结构,利用该自建节点构建出带有层级关系节点数据树进行比较,收集比较差异结果方式,实现两个数据库的数据同步。传入两个列表数据,以及层级关系字段,根据该字段,把两个列表数据,自动构建成两棵树状数据结构,然后进行比对,再返回需要新增和删除的两个列表数据,用户只要对两个差异数据在数据库中进行批量操作即可。本发明可实现在精确同步数据的同时大大降低系统资源消耗,提高同步过程的安全性。
26.基于第二方面,在本发明的一些实施例中,上述数据结构为由双向链表和有序图表组成的双向多叉树数据结构。
27.基于第二方面,在本发明的一些实施例中,上述关系树构建模块包括字段提取单元和层级构建单元,其中:
28.字段提取单元,用于提取查询到的数据中的层级关系字段;
29.层级构建单元,用于根据层级关系字段利用树节点的数据结构将查询到的数据构建成对应数据库的层级关系树。
30.基于第二方面,在本发明的一些实施例中,上述数据比对模块包括遍历对比单元,用于利用宽度优先遍历算法将同步数据库的层级关系树和被同步数据库的层级关系树进行层层比对。
31.第三方面,本技术实施例提供一种电子设备,其包括存储器,用于存储一个或多个程序;处理器。当一个或多个程序被处理器执行时,实现如上述第一方面中任一项的方法。
32.第四方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面中任一项的方法。
33.本发明实施例至少具有如下优点或有益效果:
34.本发明实施例提供一种带有层级关系数据定期增量同步方法及系统,通过自建节点数据结构,利用该自建节点构建出带有层级关系节点数据树进行比较,收集比较差异结果方式,实现两个数据库的数据同步。传入两个列表数据,以及层级关系字段,根据该字段,把两个列表数据,自动构建成两棵树状数据结构,然后进行比对,再返回需要新增和删除的两个列表数据,用户只要对两个差异数据在数据库中进行批量操作即可。本发明可实现在精确同步数据的同时大大降低系统资源消耗,提高同步过程的安全性。
附图说明
35.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
36.图1为本发明实施例一种带有层级关系数据定期增量同步方法的流程图;
37.图2为现有的同步架构示意图;
38.图3为本发明实施例一种带有层级关系数据定期增量同步方法中数据库的同步数据的示意图;
39.图4为本发明实施例的数据库的树结构示意图;
40.图5为本发明实施例提供的一种电子设备的结构框图。
41.附图标记说明:101、存储器;102、处理器;103、通信接口。
具体实施方式
42.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
43.因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
44.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
45.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的
要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
46.在本发明实施例的描述中,“多个”代表至少2个。
47.实施例:
48.如图1,图3及图4所示,第一方面,本发明实施例提供一种带有层级关系数据定期增量同步方法,包括以下步骤:
49.s1、构建树节点的数据结构;该数据结构为由双向链表和有序图表组成的双向多叉树数据结构。
50.在本发明的一些实施例中,每个存储数据的节点使用了双向链表+有序图表(treemap)组成双向多叉树数据结构,把数据存入此种结构,每条数据就能利用双向链表的指针快速找到自己的上级节点,以及自己的所有下级节点。
51.带有层级关系的数据特点,每条数据都有一个自己的id,以及只拥有一个父级id,因此每条数据都有一个父节点id,数据两两关联,一个字子节点拥有一个父节点,一个父节点可以拥有多个子节点,所以每个节点都隶属于一个节点下因为这个父级id,唯一标识,我们数据库中的数据中存储的数据是一条一条的,每条数据特点都只有一个自己的专属id,以及仅一个的父级id,这就表示当前数据是挂在自己父级id下的数据,换言之,每个节点都会和一个父节点关联起来,每个父节点可以有多个子节点与其关联,如此,数据间就形成了层级结构数据,从虚拟根节点往下,依次延迟子节点,形成带有层级关系的树形结构数据。
52.每个节点只有一个父节点,可以有多个子节点的数据结构,有一个指向前一个节点的指针,目的是连接本节点的父级节点形成层级结构,同时可以被多个其他节点指向,即本节点可以同时有多个子节点,因此这个数据结构我定义一个node,那这个节点里面的属性就有一个node指向父节点,还有一个有序图表(treemap)用来存多个子节点的,还有其他自身属性,比如自身id,员工名称,级别之类的数据,这个node就是自建结构。
53.数据结构使用的是双向链表+有序图表(treemap)组成双向多叉树数据结构,双向链表的作用是在构建树时,来了一个员工节点信息,我要找到这个员工的父节点,然后利用双向链表连接起来,多叉树则是为了存储当前员工的直属下属信息,可以有多个。
54.s2、传入同步数据库和被同步数据库中的数据;
55.s3、查询同步数据库和被同步数据库中的数据,并利用树节点的数据结构将查询到的数据构建成对应数据库的层级关系树;
56.在本发明的一些实施例中,利用自建节点的数据结构来将库中查询到的信息构建成一个层级关系的树。
57.首先,将该数据全部查出,再利用上述自建节点,构建成一个节点树,将每个节点的关系构建出来。如图4所示,此树有个最顶端的虚拟节点,每个节点都会有一个父节点id,因此每个节点最终都能找到属于自己的父级节点将自己挂父节点下面,每个节点只有一个父节点,但可以有多个子节点,因此就能构建成一颗由逐步发散的节点树数据存储结构。
58.当a数据库中是同步库,b数据库是被同步库,a要定时向b增量同步树状结构数据。如图3所示,将ab库查出来的数据(数据可乱序,不需要排序)构建成两棵树,a库构建的树以下称之为treea,b库构建的树以下称之为treeb,树中每个节点我们称其为node,每个node都有个指向前个父node的指针,node还有一个存储多个子节点的treemap数据结构,以此形
成一颗从上到下存在关联关系的树结构,因此每次读取一条数据,只需要查看当前数据的父级节点id是不是在构建的树中,如果存在则可以当前数据存入一个node节点中,这个节点的父级节点就指向父级id的节点,由此数据出现关联关系,然后再将数据构建完成。
59.s4、将同步数据库的层级关系树和被同步数据库的层级关系树进行比对,以得到差异数据;
60.进一步地,利用宽度优先遍历算法将同步数据库的层级关系树和被同步数据库的层级关系树进行层层比对。
61.s5、将差异数据同步给同步数据库,使得同步数据库和被同步数据库的数据一致,完成同步。
62.如图2所示,旧技术中先对比树形顶端数据,节点id=1,比对一样之后,再查询节点1下的id=2,id=3两个子节点,两节点比对结束后,再以id=2,id=3作为领导下的员工数据,查询到为空,则最终比对完结。此种比对方式能达到增量同步的目的,不过每个节点均需要访问一次数据库,随着数据量增加,则同步的时间就会增加,增加同步间的异常概率。
63.为了解决现有技术中的问题,本方法通过自建节点数据结构,利用该自建节点构建出带有层级关系节点数据树进行比较,收集比较差异结果方式,实现两个数据库的数据同步。传入两个列表数据,以及层级关系字段,根据该字段,把两个列表数据,自动构建成两棵树状数据结构,然后进行比对,再返回需要新增和删除的两个列表数据,用户只要对两个差异数据在数据库中进行批量操作即可。本发明可实现在精确同步数据的同时大大降低系统资源消耗,提高同步过程的安全性。
64.对数据库连接次数对比递归函数,递归函数是每个节点在比对本节点外,还需要同时查询本节点下的所有子节点,每个节点都需要查询数据库,查询数据库的时间复杂度由o(n)降为o(1),构建树,比对数的操作均在内存中进行,速度为纳秒级别,一个数据库连接平均速度为1ms,如果有1000个菜单,那程序执行查询操作大概是1秒,基于本发明,数据库连接只需要查询两次,此处只用了2ms,两种方案内存操作纳秒级别的可忽略,大致统计下速度提升为n/2倍,n为菜单数量,因此能大大提高增量同步的数据量。
65.基于第一方面,在本发明的一些实施例中,上述利用树节点的数据结构将查询到的数据构建成对应数据库的层级关系树的方法包括以下步骤:
66.提取查询到的数据中的层级关系字段;
67.根据层级关系字段利用树节点的数据结构将查询到的数据构建成对应数据库的层级关系树。
68.将数据构建成一颗上面自定义节点的树。因此当a库从b库需要同步此种树形结构数据时,只需要将a库中的数据一次性查出,建立一个最顶端的虚拟节点,然后根据子节点和父节点的关系,存在自建节点中,每读取一条数据,数据中会有自身id和父级节点id,根据父级节点id从已构建好的树中寻找自己的父节点位置,如果能找到,则将自己挂在父节点下成为树种一部分,自己的id将会成为其他数据的父级id,如果暂时没找到,节点数据先保留,等待此数据的父节点的出现再连接过去,每条数据做此操作,在构建树状结构完成后,就会得到一个从虚拟节点开始,一直往下发散延伸的树状结构数据结构treea。然后b库的数据同样的通过自建节点来构建树的操作,即能得到b库构建出来的结构树treeb。
69.有了两颗treea和treeb,再利用常规的宽度优先遍历算法,依次一层层比较数据,将差异点取出,就达到我们的快速比对两库的差异的目的,再将差异数据同步给a库即可,使a库与b库达成一致,即同步成功。
70.第二方面,本发明实施例提供一种带有层级关系数据定期增量同步系统,包括:自建节点模块、数据库传入模块、关系树构建模块、数据比对模块以及数据同步模块,其中:
71.自建节点模块,用于构建树节点的数据结构;
72.数据库传入模块,用于传入同步数据库和被同步数据库中的数据;
73.关系树构建模块,用于查询同步数据库和被同步数据库中的数据,并利用树节点的数据结构将查询到的数据构建成对应数据库的层级关系树;
74.数据比对模块,用于将同步数据库的层级关系树和被同步数据库的层级关系树进行比对,以得到差异数据;
75.数据同步模块,用于将差异数据同步给同步数据库,使得同步数据库和被同步数据库的数据一致,完成同步。
76.为了解决现有技术中的问题,本系统通过自建节点模块、数据库传入模块、关系树构建模块、数据比对模块以及数据同步模块等多个模块的配合,通过自建节点数据结构,利用该自建节点构建出带有层级关系节点数据树进行比较,收集比较差异结果方式,实现两个数据库的数据同步。传入两个列表数据,以及层级关系字段,根据该字段,把两个列表数据,自动构建成两棵树状数据结构,然后进行比对,再返回需要新增和删除的两个列表数据,用户只要对两个差异数据在数据库中进行批量操作即可。本发明可实现在精确同步数据的同时大大降低系统资源消耗,提高同步过程的安全性。
77.基于第二方面,在本发明的一些实施例中,上述数据结构为由双向链表和有序图表组成的双向多叉树数据结构。
78.基于第二方面,在本发明的一些实施例中,上述关系树构建模块包括字段提取单元和层级构建单元,其中:
79.字段提取单元,用于提取查询到的数据中的层级关系字段;
80.层级构建单元,用于根据层级关系字段利用树节点的数据结构将查询到的数据构建成对应数据库的层级关系树。
81.基于第二方面,在本发明的一些实施例中,上述数据比对模块包括遍历对比单元,用于利用宽度优先遍历算法将同步数据库的层级关系树和被同步数据库的层级关系树进行层层比对。
82.如图5所示,第三方面,本技术实施例提供一种电子设备,其包括存储器101,用于存储一个或多个程序;处理器102。当一个或多个程序被处理器102执行时,实现如上述第一方面中任一项的方法。
83.还包括通信接口103,该存储器101、处理器102和通信接口103相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。存储器101可用于存储软件程序及模块,处理器102通过执行存储在存储器101内的软件程序及模块,从而执行各种功能应用以及数据处理。该通信接口103可用于与其他节点设备进行信令或数据的通信。
84.其中,存储器101可以是但不限于,随机存取存储器(random access memory,
ram),只读存储器(read only memory,rom),可编程只读存储器(programmable read-only memory,prom),可擦除只读存储器(erasable programmable read-only memory,eprom),电可擦除只读存储器(electric erasable programmable read-only memory,eeprom)等。
85.处理器102可以是一种集成电路芯片,具有信号处理能力。该处理器102可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
86.在本技术所提供的实施例中,应该理解到,所揭露的方法及系统和方法,也可以通过其它的方式实现。以上所描述的方法及系统实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的方法及系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
87.另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
88.第四方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器102执行时实现如上述第一方面中任一项的方法。所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
89.以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
90.对于本领域技术人员而言,显然本技术不限于上述示范性实施例的细节,而且在不背离本技术的精神或基本特征的情况下,能够以其它的具体形式实现本技术。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本技术的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本技术内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1