CN105138635B - 一种利用哈希值比对进行数据增量复制的方法 - Google Patents
一种利用哈希值比对进行数据增量复制的方法 Download PDFInfo
- Publication number
- CN105138635B CN105138635B CN201510518758.9A CN201510518758A CN105138635B CN 105138635 B CN105138635 B CN 105138635B CN 201510518758 A CN201510518758 A CN 201510518758A CN 105138635 B CN105138635 B CN 105138635B
- Authority
- CN
- China
- Prior art keywords
- train value
- cryptographic hash
- file
- data
- major key
- 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
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
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种利用哈希值比对进行数据增量复制的方法,包括以下步骤:确定源表的主键列与非主键列;计算当前记录非主键列值的哈希值;按照当前记录主键列值升序的顺序,将当前记录的主键列值与哈希值存储到文件1中;按照变化后记录的主键列值升序的顺序,计算变化后记录的非主键列值的哈希值;进行数据比对,得到数据增量,并将其进行标记并分类入数据库;将变化后记录的主键列值和哈希值存储于文件2中;将文件2覆盖文件1,数据增量复制完成。本发明所述方法不受数据库类型限制,不侵入不影响数据库,提高了比对效率。
Description
技术领域
本发明涉及一种利用哈希值比对进行数据增量复制的方法,具体的,利用计算后的哈希值,通过比对来完成数据增量的捕获。
背景技术
在数据整合过程中,对于数据增量的复制始终是一个关键点、一个难点。要实现增量抽取,需要快速准确地捕获变化的数据,好的增量抽取机制要求整合过程能够将数据库中的变化数据按一定的频率准确地捕获到,同时不能给数据库造成太大的压力,影响现有业务使用。相对全量抽取而言,增量抽取的设计更复杂。
现有的增量抽取机制主要有:触发器方式、时间戳方式、全表比对方式、数据库日志分析方式、特定数据库方式(Oracle CDC方式)。其中,触发器方式由于不需要在抽取过程中执行比对步骤,所以增量抽取的性能较佳,但是触发器方式需要直接在数据集表上建立触发器,同时写临时表,对于频繁操作的业务系统可能会有一定的性能损失,尤其是当业务表上执行批量操作时,行级触发器将会对性能产生严重的影响;时间戳方式不能捕获delete操作,需要结合其它方式一起使用,同时该方式需要修改数据源系统表结构,对于不支持时间戳字段自动更新的关系型数据库产品,还必须要修改业务系统的功能,让它在源表执行每次操作时都要显示的更新表的时间戳字段;全表比对方式需要经过复杂的比对过程才能识别出更改的记录,抽取性能较差,此外还有一些需要建立临时表这种在某些场合中也遭到拒绝;基于数据库日志分析的方式上,因为大多数的数据库产品只允许特定组的用户甚至只有DBA才能执行日志分析,这样使得开放给数据整合进程的数据库权限的限制而无法实施;特定数据库方式(Oracle CDC方式)限定了数据库类型,难以广泛地应用。
发明内容
为解决上述问题,本发明的目的在于提供一种利用哈希值比对进行数据增量复制的方法,基于对数据记录哈希值的计算,利用其进行数据比对完成数据增量复制的实现。
本发明是通过以下技术方案实现的:
一种利用哈希值比对进行数据增量复制的方法,包括以下步骤:
步骤1,确定源表的主键列与非主键列;
步骤2,计算当前记录的非主键列值的哈希值;
步骤3,按照所述当前记录的主键列值升序的顺序,将所述当前记录的主键列值与所述主键列值对应的哈希值存储到文件1中;
步骤4,按照变化后记录的主键列值升序的顺序,计算所述变化后记录的非主键列值的哈希值;
步骤5,将所述变化后记录的主键列值和其对应的哈希值,与所述文件1的主键列值和其对应的哈希值进行比对,得到数据增量,舍弃没有变化的数据,将所述数据增量进行标记并分类入数据库;
步骤6,将所述变化后记录的主键列值和哈希值存储于文件2中;
步骤7,将步骤6中的所述文件2覆盖步骤3中的所述文件1,数据增量复制完成。
进一步的,计算所述非主键列值的哈希值为将所述非主键列值排成字符串,计算所述字符串的哈希值。
进一步的,步骤5包括:
步骤5.1,将所述变化后记录的主键列值与所述文件1的主键列值进行比对,当所述主键列值有差异时,所述数据增量为新插入数据或删除数据;
步骤5.2,当所述主键列值没有差异时,将所述变化后记录的哈希值与所述文件1的哈希值进行比对;当所述哈希值有差异时,所述数据增量为更新数据;当所述哈希值没有差异时,无对应数据增量;
步骤5.3,将所述数据增量标记并分类入数据库。
进一步的,步骤5.1中,所述变化后记录的主键列值在所述文件1中没有出现的为新插入数据;所述文件1的主键列值在所述变化后记录中没有出现的为删除数据。
进一步的,所述文件1和文件2均位于所述数据库之外。
本发明的有益效果为:
本发明中,数据集的哈希值计算、主键列值与哈希值的存储和数据比对过程均在数据库之外进行操作,这样对数据库没有进行任何侵入性的操作同时对数据库的性能几乎没有任何影响;其次数据的比对是依据主键列值升序后的顺序来进行的,这样避免了主键列值查询,提高了比对效率。
附图说明
图1为本发明所述进行数据增量复制的方法流程图;
图2为现有技术中数据比对时进行键值查询的示意图;
图3为本发明中数据比对时进行键值查询的示意图;
图4为现有技术和本发明的主键列值哈希值存储比较的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图及实施例对本发明作进一步详细说明。但所举实例不作为对本发明的限定。
一种利用哈希值比对进行数据增量复制的方法,如图1所示,包括以下步骤:
步骤1,确定源表的主键列与非主键列;
步骤2,计算当前记录的非主键列值的哈希值;计算所述非主键列值的哈希值为将所述非主键列值排成字符串,计算所述字符串的哈希值。
步骤3,按照所述当前记录的主键列值升序的顺序,将所述当前记录的主键列值与所述主键列值对应的哈希值存储到文件1中;
步骤4,按照变化后记录的主键列值升序的顺序,计算所述变化后记录的非主键列值的哈希值;
步骤5,将所述变化后记录的主键列值和其对应的哈希值,与所述文件1的主键列值和其对应的哈希值进行比对,得到数据增量,舍弃没有变化的数据,将所述数据增量进行标记并分类入数据库;
其中,所述步骤5具体为:
步骤5.1,将所述变化后记录的主键列值与所述文件1的主键列值进行比对,当所述主键列值有差异时,所述数据增量为新插入数据或删除数据;所述变化后记录的主键列值在所述文件1中没有出现的为新插入数据;所述文件1的主键列值在所述变化后记录中没有出现的为删除数据。
步骤5.2,当所述主键列值没有差异时,将所述变化后记录的哈希值与所述文件1的哈希值进行比对;当所述哈希值有差异时,所述数据增量为更新数据;当所述哈希值没有差异时,无对应数据增量;
步骤5.3,将所述数据增量标记并分类入数据库。
步骤6,将所述变化后记录的主键列值和哈希值存储于文件2中;
步骤7,将步骤6中的所述文件2覆盖步骤3中的所述文件1,数据增量复制完成。
其中,所述文件1和文件2均位于所述数据库之外。
如图2所示,为现有的数据库存储的主键列值与哈希值临时表在数据比对时进行键值查询的说明。
目前数据库键值比对次序的不确定性,需要通过数据库连接(join)来进行键值匹配,匹配过程需要进行查找,如图2所示,键值需要进行连接后才能在后续的记录中找到匹配的数据,查找完成后才可进行比对,这样降低了执行效率。
如图3所示,为本发明中对主键列值排序后数据比对时进行键值查询的说明。
由于比对双方数据的主键列值都已进行了排序,所以各主键列值的数据是确定的,那么无需查询直接轮询进行键值匹配,如图3所示,键值1直接进行了匹配然后比对,键值4没有匹配键值5,然后进行比较由于键值小,所以键值5进行保留,直接进行下一条记录的匹配,然后匹配成功,这样避免了连接查询,提高了执行效率。
如图4所示,为本发明的主键列值与哈希值文件存储和现有的数据库存储比较的示意图。
现有的应用中,为了方便使用数据库提供的支持来完成比对,将键值与哈希值存储与数据集相同的数据库中,这样导致的问题是首先对数据库有了侵入的操作和性能影响,同时对于数据的文件存储需要通过数据库系统来完成。如图4所示,采用数据库存储在数据文件存储之前需要数据库管理系统的维护工作,这样较本发明所述直接进行文件存储降低了效率。
通过本发明,增量数据的复制不受数据库类型限制,运行过程不存在侵入数据库的操作,同时仅对数据库存在读取操作,几乎不影响数据库性能。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (3)
1.一种利用哈希值比对进行数据增量复制的方法,其特征在于,包括以下步骤:
步骤1,确定源表的主键列与非主键列;
步骤2,计算当前记录的非主键列值的哈希值;
步骤3,按照所述当前记录的主键列值升序的顺序,将所述当前记录的主键列值与所述主键列值对应的哈希值存储到文件1中;
步骤4,按照变化后记录的主键列值升序的顺序,计算所述变化后记录的非主键列值的哈希值;
步骤5,将所述变化后记录的主键列值和其对应的哈希值,与所述文件1的主键列值和其对应的哈希值进行比对,得到数据增量,舍弃没有变化的数据,将所述数据增量进行标记并分类入数据库;
步骤6,将所述变化后记录的主键列值和哈希值存储于文件2中;
步骤7,将步骤6中的所述文件2覆盖步骤3中的所述文件1,数据增量复制完成;
其中,所述步骤5包括:
步骤5.1,将所述变化后记录的主键列值与所述文件1的主键列值进行比对,当所述主键列值有差异时,所述数据增量为新插入数据或删除数据;
步骤5.2,当所述主键列值没有差异时,将所述变化后记录的哈希值与所述文件1的哈希值进行比对;当所述哈希值有差异时,所述数据增量为更新数据;当所述哈希值没有差异时,无对应数据增量;
步骤5.3,将所述数据增量标记并分类入数据库;
并且,所述步骤5.1中,所述变化后记录的主键列值在所述文件1中没有出现的为新插入数据;所述文件1的主键列值在所述变化后记录中没有出现的为删除数据。
2.根据权利要求1所述的数据增量复制的方法,其特征在于,计算所述非主键列值的哈希值为将所述非主键列值排成字符串,计算所述字符串的哈希值。
3.根据权利要求1所述的数据增量复制的方法,其特征在于,所述文件1和文件2均位于所述数据库之外。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510518758.9A CN105138635B (zh) | 2015-08-21 | 2015-08-21 | 一种利用哈希值比对进行数据增量复制的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510518758.9A CN105138635B (zh) | 2015-08-21 | 2015-08-21 | 一种利用哈希值比对进行数据增量复制的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105138635A CN105138635A (zh) | 2015-12-09 |
CN105138635B true CN105138635B (zh) | 2019-04-09 |
Family
ID=54723983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510518758.9A Active CN105138635B (zh) | 2015-08-21 | 2015-08-21 | 一种利用哈希值比对进行数据增量复制的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105138635B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107133249A (zh) * | 2016-02-29 | 2017-09-05 | 上海格尔软件股份有限公司 | 一种对已删除数据进行同步的数据库同步方法 |
CN106777272A (zh) * | 2016-12-29 | 2017-05-31 | 成都康赛信息技术有限公司 | 一种数据比对及同步方法 |
CN107423436A (zh) * | 2017-08-04 | 2017-12-01 | 郑州云海信息技术有限公司 | 一种用于不同类型数据库间在线数据迁移的方法 |
CN110147359A (zh) * | 2017-12-13 | 2019-08-20 | 北京奇虎科技有限公司 | 一种增量生成方法、装置以及一种数据更新方法、装置 |
CN110348732A (zh) * | 2019-07-08 | 2019-10-18 | 泰华智慧产业集团股份有限公司 | 基于哈希算法的企业画像数据预处理方法和系统 |
CN110599169B (zh) * | 2019-09-16 | 2021-03-26 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、终端及介质 |
CN110825762A (zh) * | 2019-11-14 | 2020-02-21 | 北京融易做科技有限公司 | 数据存储方法、装置及系统 |
CN111078699B (zh) * | 2019-12-12 | 2024-01-26 | 金蝶软件(中国)有限公司 | 一种增量数据的判断方法及其相关设备 |
CN111309673B (zh) * | 2020-02-12 | 2023-06-23 | 普信恒业科技发展(北京)有限公司 | 增量数据的快照数据生成方法及装置 |
CN112783508B (zh) * | 2021-02-01 | 2022-05-24 | 北京百度网讯科技有限公司 | 文件的编译方法、装置、设备以及存储介质 |
CN113407538B (zh) * | 2021-06-17 | 2023-03-10 | 北京计算机技术及应用研究所 | 一种多源异构关系型数据库数据的增量采集方法 |
CN113449505A (zh) * | 2021-07-01 | 2021-09-28 | 浪潮天元通信信息系统有限公司 | 一种文件比对方法 |
CN113836157A (zh) * | 2021-09-18 | 2021-12-24 | 上海安钛飞信息技术有限公司 | 获取数据库增量数据的方法和装置 |
CN114791916B (zh) * | 2022-06-22 | 2022-10-11 | 广东杰纳医药科技有限公司 | 一种临床试验数据的快速比对方法 |
CN115145943B (zh) * | 2022-09-06 | 2023-02-28 | 北京麦聪软件有限公司 | 多数据源元数据快速比对方法、系统、设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102607577A (zh) * | 2011-01-25 | 2012-07-25 | 北京四维图新科技股份有限公司 | 一种导航电子地图的增量更新方法、装置及系统 |
CN104021213A (zh) * | 2014-06-20 | 2014-09-03 | 中国银行股份有限公司 | 一种合并关联记录的方法及装置 |
-
2015
- 2015-08-21 CN CN201510518758.9A patent/CN105138635B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102607577A (zh) * | 2011-01-25 | 2012-07-25 | 北京四维图新科技股份有限公司 | 一种导航电子地图的增量更新方法、装置及系统 |
CN104021213A (zh) * | 2014-06-20 | 2014-09-03 | 中国银行股份有限公司 | 一种合并关联记录的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105138635A (zh) | 2015-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105138635B (zh) | 一种利用哈希值比对进行数据增量复制的方法 | |
CN110879813B (zh) | 一种基于二进制日志解析的MySQL数据库增量同步实现方法 | |
CN102521225A (zh) | 增量数据抽取装置和增量数据抽取方法 | |
CN106033436B (zh) | 一种数据库的合并方法 | |
CN103853820A (zh) | 一种数据处理方法及系统 | |
CN102752372A (zh) | 一种基于文件的数据库同步方法 | |
CN101158958B (zh) | 基于MySQL存储引擎的融合查询方法 | |
CN104899295B (zh) | 一种异构数据源数据关联分析方法 | |
CN109558452B (zh) | 一种查询建表操作的同步方法 | |
CN102135995A (zh) | 一种etl数据清洗设计方法 | |
CN110059092A (zh) | 基于区块链的关系型数据库的数据写入方法及系统 | |
CN113779144B (zh) | 大数据整合处理方法、系统和存储介质 | |
CN104142930A (zh) | 通用δ数据装载 | |
CN104298769A (zh) | 一种数据库间共有域差异数据同步系统及方法 | |
CN105279285A (zh) | 一种关系型数据库与非关系型数据库的同步系统及方法 | |
CN103945326A (zh) | 一种精确的信息推送的方法及装置 | |
WO2019024391A1 (zh) | 差异代码的同步方法、存储介质、电子设备及系统 | |
CN111367994A (zh) | 数据库增量数据同步备份方法及系统 | |
CN103678682B (zh) | 基于抽象模板的海量栅格数据处理及管理方法 | |
CN105447168A (zh) | Mp4格式的碎片文件恢复与重组的方法 | |
CN107169003B (zh) | 一种数据关联方法及装置 | |
CN105446824B (zh) | 表增量获取方法及异地数据备份方法 | |
CN114185991A (zh) | 基于分布式数据库实现数据同步的方法及相关装置 | |
CN104615782A (zh) | 基于滑动窗口最大匹配算法的地址匹配方法 | |
CN110222121A (zh) | 一种基于CDC方式的SQL Server数据库增量同步实现方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |