CN108062399A - 数据处理方法及装置 - Google Patents
数据处理方法及装置 Download PDFInfo
- Publication number
- CN108062399A CN108062399A CN201711395391.1A CN201711395391A CN108062399A CN 108062399 A CN108062399 A CN 108062399A CN 201711395391 A CN201711395391 A CN 201711395391A CN 108062399 A CN108062399 A CN 108062399A
- Authority
- CN
- China
- Prior art keywords
- data
- fingerprint
- target
- source
- cryptographic hash
- 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
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/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (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示出了本发明实施例提供的数据服务器、源服务器和目标服务器进行交互的示意图。
图2示出了本发明实施例提供的源服务器和目标服务器进行交互的示意图。
图3示出了本发明第一实施例提供的数据处理方法流程图。
图4示出了本发明第二实施例提供的数据处理方法部分流程图。
图5示出了本发明第三实施例提供的数据处理方法部分流程图。
图6示出了示出了本发明第四实施例提供的数据服务器的方框示意图。
图7示出了示出了本发明第五实施例提供的数据处理装置的模块图。
图标:10-数据服务器;20-源服务器;21-源数据库;30-目标服务器;31-目标数据库;101-处理器;102-存储器;103-总线;104-通信接口;200-数据处理装置;201-数据获取模块;202-数据记载模块;203-指纹集建立模块;204-更新指纹集获取模块;205-目标数据删除模块;206-源数据同步模块。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
请参照图1,请参照图1,图1示出了本发明实施例提供的数据服务器10、源服务器20和目标服务器30进行交互的示意图。数据服务器10可通过网络与源服务器20和目标服务器30均进行通信,以实现将源服务器20中的源数据集成到目标服务器30上。源服务器20包括至少一个源数据库21,源数据库21可以是各种业务***的数据库,业务***可以是,但不限于企业业务***、医院业务***、银行业务***、学校管理***等等。目标服务器30包括至少一个目标数据库31,每个源数据库21在目标服务器30中均有一个对应的目标数据库31。数据服务器10可以读取源数据库21中的源数据,并根据目标数据库31中的目标数据判断出发生变化的源数据,即增加、删除、修改的源数据,再将发生变化的源数据同步到目标服务器30的目标数据库31中,以在不改动源数据库21的情况下,实现大数据场景下的数据增量抽取。
需要指出的是,在另一种应用场景中,数据服务器10并不是必需的,可以在不借助数据服务器10的情形下,将源服务器20中的源数据集成到目标服务器30中,此时目标服务器30可以实现本发明实施例提供的数据抽取方法。请参照图2,图2示出了本发明实施例提供的源服务器20和目标服务器30进行交互的示意图。目标服务器30可以读取源数据库21中的源数据,并根据目标数据库31中的目标数据判断出发生变化的源数据,即增加、删除、修改的源数据,再将发生变化的源数据同步到目标数据库31中,以在不改动源数据库21的情况下,实现大数据场景下的数据增量抽取,下面进行详细描述。
第一实施例
请参照图3,图3示出了本发明第一实施例提供的数据处理方法流程图。本发明第一实施例的数据处理方法应用于数据服务器10中,数据处理方法包括以下步骤:
步骤S101,获取源数据库中的所有源数据和目标数据库中的所有目标数据。
在本发明实施例中,源数据可以是各种业务***在运行过程中产生的大量数据,例如,医院业务***中病人的挂号信息、就诊信息、病例信息、药品信息等,学校管理***中学生的学号、姓名、性别等,这些大量的源数据被存储到相应业务***的源数据库21中,例如,医院源数据库、学校源数据库等。数据服务器10可以以周期性循环的方式对源数据库21中的所有源数据进行读取,例如,每3天读取一次。
在本发明实施例中,目标数据可以是将源数据库21中的源数据集成到目标服务器30中得到的数据,每个源数据库21在目标服务器30中都有一个对应的目标数据库31,例如,医院目标数据库、学校目标数据库等。数据服务器10可以以周期性循环的方式对目标数据库31中的所有目标数据进行读取,例如,每3天读取一次,数据服务器10读取所有目标数据和所有源数据的周期一致。
步骤S102,将所有源数据和所有目标数据记载到内存。
在本发明实施例中,数据服务器10可以采用JDBC(Java DataBase Connectivity,java数据库连接)驱动方式对源数据库21中的源数据和目标数据库31中的所有目标数据进行读取,并将读取到的所有源数据和所有目标数据加载到其内存之中,但是现有的JDBC驱动方式在读取海量数据时需要耗费大量的时间,因此本发明实施例中采用多线程批量读取的方式对源数据进行读取,也就是执行多个线程读取源数据,同时每个线程读取的源数据是批量的。
具体地,以读取源数据库21中的所有源数据为例,数据服务器10根据所有源数据的总数据量和预设读取量计算总读取次数,也就是,以预设读取量读取全部的源数据所需要的读取次数;接下来根据计算出的总读取次数,组织用于源数据读取的查询语句,查询语句的条数等于总读取次数;再将查询语句的执行提交到线程池中,利用多个线程并行读取源所有数据。
换句话说,首先,获取源数据库21的所有源数据的源数据量,也就是源数据库21中所有源数据的总条数,例如,2000条;
然后,根据源数据量和预设读取量,计算读取源数据量所需的总读取次数,预设读取量可以是每次读取的源数据的条数,例如,100条,预设读取量可以由用户根据实际需要灵活设置。总读取次数可以根据公式N=源数据量/预设读取量+1进行计算,例如,源数据量为2000条,预设读取量为100条,则总读取次数为21次;
接下来,根据总读取次数确定查询语句的数量,计算出源数据的总读取次数之后,根据总读取次数组织用于源数据读取的查询语句,查询语句的总条数等于总读取次数,例如,21条。查询语句可以是,但不限于SQL(Structured Query Language,结构化查询语言)语句,查询语句可以预先存储于数据服务器10中;
最后,利用查询语句,对源数据库21进行读取操作,得到所有源数据,也就是说,组织出查询语句之后,将查询语句的执行提交到线程池中,每个线程执行一条查询语句,来并行读取源数据,结合到上述例子,就是利用21个线程对所有源数据进行并行读取,每个线程读取100条源数据。
在本发明实施例中,通过批量读取的方式能够避免一次读取大量数据造成的数据服务器10的内存溢出、读取程序卡死等情形,同时通过多线程并行技术,可以同时执行多个读取工作,大大减少了数据读取的时间。
需要指出的是,数据服务器10可以按照上述的多线程批量读取方式,并行读取所有源数据和所有目标数据,也可以先读取所有目标数据再读取所有源数据、或者先读取所有源数据再读取所有目标数据,在此不做限定。
步骤S103,建立源数据库对应的第一指纹集和目标数据库对应的第二指纹集,其中,第一指纹集包括源数据库中每条源数据的源数据指纹,第二指纹集包括目标数据库中每条目标数据的目标数据指纹,源数据指纹包括源数据哈希值,目标数据指纹包括目标数据哈希值。
在本发明实施例中,数据服务器10完成源数据的读取之后,可以得到一个包含源数据的数据集合和一个包含目标数据的数据集合,该包含源数据的数据集合可以用变量SrcList表示,该包含目标数据的数据集合可以用变量TgtList表示。
然后,利用预设算法抽象出每条源数据的源数据指纹和每条目标数据的目标数据指纹,并由每条源数据的源数据指纹得到第一指纹集,由每条目标数据的目标数据指纹得到第二指纹集。
预设算法可以是利用哈希算法计算出每条源数据的源数据哈希值,并将该源数据的源数据哈希值和源数据ID值组合在一起,共同组成该源数据的源数据指纹,再将该源数据指纹放入第一指纹集中,第一指纹集可以是预设的Hash集合,可以用变量SrcHash表示。例如,SrcHash=[9D07DC14790098D846AA4F165EC27FAD=1722,65FAFD5A5973BEF5E1DE02D61688F7E6=1734,6CD9C7DA28EC81DF51DF962666383BFA=1],其中,“9D07DC14790098D846AA4F165EC27FAD、65FAFD5A5973BEF5E1DE02D61688F7E6、6CD9C7DA28EC81DF51DF962666383BFA”是源数据哈希值,“1722、1734、1”是源数据ID值。
同时,利用哈希算法计算出每条目标数据的目标数据哈希值,并将该目标数据的目标数据哈希值和目标数据ID值组合在一起,共同组成该目标数据的目标数据指纹,再将该目标数据指纹放入第二指纹集中,第二指纹集可以是预设的Hash集合,可以用变量TgtHash表示。例如,TgtHash=[65FAFD5A5973BEF5E1DE02D61688F7E6=1734,CCD9C7DA28EC81DF51DF962666383BFA=1],其中,“65FAFD5A5973BEF5E1DE02D61688F7E6、CCD9C7DA28EC81DF51DF962666383BFA”是目标数据哈希值,“1734、1”是目标数据ID值。
需要指出的是,建立第一指纹集和第二指纹集的过程中,数据服务器10可以按照并行建立第一指纹集和第二指纹集,也可以先建立第一指纹集再建立第二指纹集、或者先建立第二指纹集再建立第一指纹集,在此不做限定。建立源数据库21对应的第一指纹集和目标数据库31对应的第二指纹集的具体方法请参照第二实施例。
步骤S104,获取待更新的数据对应的更新指纹集,其中,更新指纹集包括:第一指纹集中与目标数据指纹不同的源数据指纹,以及第二指纹集中与源数据指纹不同的目标数据指纹。
在本发明实施例中,建立出第一指纹集和第二指纹集之后,逐个获取第二指纹集中的目标数据指纹的目标数据哈希值,并将获取到的目标数据哈希值与第一指纹集中的源数据哈希值进行逐个比对,得到第一指纹集中与目标数据指纹不同的源数据指纹构成的第一更新指纹集、以及第二指纹集中与源数据指纹不同的目标数据指纹构成的第二更新指纹集,共同构成待更新的数据对应的更新指纹集。待更新数据包括第一更新指纹集中每个源数据指纹的源数据ID值独对应的源数据、以及第二更新指纹集中每个目标数据指纹的目标数据ID值对应的目标数据。
当第一指纹集中存在与该目标数据哈希值一致的源数据哈希值时,说明该目标数据对应的源数据未发生变化,此时将第一指纹集中与该目标数据哈希值一致的源数据哈希值对应的源数据指纹删除,全部的目标数据哈希值比对完成后,得到第一指纹集中与目标数据指纹不同的源数据指纹构成的第一更新指纹集,例如,结合到步骤S103中的例子,第一指纹集中存在与目标数据哈希值“65FAFD5A5973BEF5E1DE02D61688F7E6”一致的源数据哈希值“65FAFD5A5973BEF5E1DE02D61688F7E6”,则说明目标数据指纹“65FAFD5A5973BEF5E1DE02D61688F7E6=1734”对应的目标数据的源数据未发生变化,此时删除第一指纹集中的源数据指纹“65FAFD5A5973BEF5E1DE02D61688F7E6=1734”,得到第一更新指纹集“9D07DC14790098D846AA4F165EC27FAD=1722、6CD9C7DA28EC81DF51DF962666383BFA=1”。
当第一指纹集中不存在与该目标数据哈希值一致的源数据哈希值时,说明该目标数据对应的源数据发生了变化,例如,该源数据被删除或者修改,此时提取出该目标数据哈希值对应的目标数据指纹,全部的目标数据哈希值比对完成后,得到第二指纹集中与源数据指纹不同的目标数据指纹构成的第二更新指纹集,例如,完成之后,将所有提取出来的目标数据指纹作为第二更新指纹集。例如,结合步骤S103中的例子,第一指纹集中不存在与目标数据哈希值“CCD9C7DA28EC81DF51DF962666383BFA”一致的源数据哈希值,则说明目标数据指纹“CCD9C7DA28EC81DF51DF962666383BFA”对应的目标数据的源数据发生了变化,此时得到第二更新指纹集“CCD9C7DA28EC81DF51DF962666383BFA=1”。
在本发明实施例中,获取待更新的数据对应的更新指纹集包括第一指纹集中与目标数据指纹不同的源数据指纹,包括增加、删除、修改的源数据的源数据指纹;以及第二指纹集中与源数据指纹不同的目标数据指纹,也就是源数据库21中被修改或者删除的源数据对应的目标数据的目标数据指纹,获取待更新的数据对应的更新指纹集的具体方法请参照第三实施例。
步骤S105,根据第二更新指纹集中的目标数据指纹的目标数据ID值,删除目标数据库中与目标数据ID值对应的目标数据。
在本发明实施例中,得到更新指纹集之后,根据第二更新指纹集中目标数据指纹的目标数据ID值,删除目标数据库31中与该目标数据ID值对应的目标数据,例如,结合步骤S104中的例子,删除目标数据库31中与目标数据指纹“CCD9C7DA28EC81DF51DF962666383BFA=1”的目标数据ID值“1”对应的目标数据。
步骤S106,将与第一更新指纹集中的源数据指纹的源数据ID值对应的源数据同步到目标数据库中。
在本发明实施例中,根据第二更新指纹集中的目标数据指纹的目标数据ID值,删除目标数据库31中与目标数据ID值对应的目标数据之后,将第一更新指纹集中每个源数据ID值对应的源数据同步到目标数据库31中,例如,结合步骤S104中的例子,将源数据指纹“9D07DC14790098D846AA4F165EC27FAD=1722、6CD9C7DA28EC81DF51DF962666383BFA=1”中的源数据ID“1722、1”对应的源数据同步到目标数据库31中。
在本发明实施例中,首先,从源数据库21中读取源数据和从目标数据库31中读取目标数据均可以采用多线程批量读取的方式,同时,可以并行读取源数据和目标数据,可以有效提高读取速度;另外,建立第一指纹集和第二指纹集的过程中也可以采用多线程并行的方式。同时,利用更新指纹集对待更新数据进行更新的过程中,采用了批量更新技术,有效提高了数据处理的速度。
第二实施例
请参照图4,图4示出了本发明第二实施例提供的数据处理方法部分流程图。本实施例提供的数据处理方法部分流程图应用于数据服务器10中,包括以下步骤:
步骤S1031,从内存读取所有源数据和所有目标数据,依据哈希算法依次计算每条源数据的源数据哈希值和每条目标数据的目标数据哈希值。
在本发明实施例中,按照第一实施例中记载的方式,数据服务器10获取源数据库21中的所有源数据和目标数据库31中的所有目标数据并记载到其内存之后,从内存读取所有源数据和所有目标数据,并依据哈希算法依次计算每条源数据的源数据哈希值和每条目标数据的目标数据哈希值。
以计算源数据的源数据哈希值为例,每条源数据的源数据哈希值可以由该源数据的所有字段计算得到,例如,一条源数据下表1所示:
表1源数据记录表
userId(用户id,主键) | userName(用户名字) | userSex(用户性别) |
1 | 张三 | 男 |
则计算该源数据的源数据哈希值时,需将该源数据中的“1”、“张三”、“男”合并在一起进行计算,结合哈希算法,计算出该源数据的源数据哈希值为“CCD9C7DA28EC81DF51DF962666383BFA”。
目标数据的目标数据哈希值的计算过程同源数据,即目标数据的目标数据哈希值可以由该目标数据的所有字段计算得到,也就是说,计算目标数据的目标数据哈希值时,需将该目标数据中的所有字段合并在一起,结合哈希算法计算出该目标数据的目标数据哈希值,在此不再赘述。
步骤S1032,依据每条源数据的源数据哈希值和源数据ID值生成该源数据的源数据指纹,并将所有源数据的源数据指纹放入第一指纹集。
在本发明实施例中,源数据ID值包括该源数据的主键,结合到表1所示的源数据,其源数据ID值为这条源数据中的主键userId,即“1”。得到源数据的源数据哈希值和源数据ID值之后,依据源数据哈希值和源数据ID值生成该源数据的源数据指纹,该源数据的源数据指纹包括该源数据的源数据哈希值和源数据ID值。结合到表1所示的源数据,该源数据的源数据指纹为“CCD9C7DA28EC81DF51DF962666383BFA=1”。
需要指出的是,如果源数据有多个主键,则将多个主键连接到一起共同组成源数据ID值,例如,源数据的主键为1、2、3,则该源数据的源数据ID值为“123”。
第一指纹集为预设的Hash集合,得到每条源数据的源数据指纹之后,将每个源数据指纹均放入该第一指纹集进行Hash存储。
需要指出的是,建立第一指纹集的过程中,可以依次生成每条源数据的源数据指纹,也可以并行生成每条源数据的源数据指纹,也就是说,根据哈希算法计算每条源数据的源数据哈希值的过程、以及依据每条源数据的源数据哈希值和源数据ID值生成该源数据的源数据指纹的过程都是并行执行的,这样可以提高建立第一指纹集的效率。
步骤S1033,依据每条目标数据的目标数据哈希值和目标数据ID值生成该目标数据的目标数据指纹,并将所有目标数据的目标数据指纹放入第二指纹集。
在本发明实施例中,目标数据ID值包括该目标数据的主键,得到目标数据的目标数据哈希值和目标数据ID值之后,依据目标数据哈希值和目标数据ID值生成该目标数据的目标数据指纹。目标数据的目标数据ID值的获取方式同源数据,在此不再赘述。
在本发明实施例中,第二指纹集为预设的Hash集合,得到每条目标数据的目标数据指纹之后,将每个目标数据指纹均放入该第二指纹集进行Hash存储。
需要指出的是,建立第二指纹集的过程中,也可以依次生成每条目标数据的目标数据指纹,也可以并行生成每条目标数据的目标数据指纹。另外,数据服务器10可以按照并行建立第一指纹集和第二指纹集,也可以先建立第一指纹集再建立第二指纹集、或者先建立第二指纹集再建立第一指纹集,在此不做限定。
第三实施例
请参照图5,图5示出了本发明第二实施例提供的数据处理方法部分流程图。本实施例提供的数据处理方法部分流程图应用于数据服务器10中,包括以下步骤:
步骤S1041,将每条目标数据的目标数据哈希值与所有源数据的源数据哈希值进行逐个比对。
在本发明实施例中,建立源数据库21对应的第一指纹集和目标数据库31对应的第二指纹集之后,将每条目标数据的目标数据哈希值与所有源数据的源数据哈希值进行逐个比对。例如,结合到步骤S104中的例子,将每条目标数据的目标数据哈希值“65FAFD5A5973BEF5E1DE02D61688F7E6”和“CCD9C7DA28EC81DF51DF962666383BFA”与所有源数据的源数据哈希值“9D07DC14790098D846AA4F165EC27FAD、65FAFD5A5973BEF5E1DE02D61688F7E6、6CD9C7DA28EC81DF51DF962666383BFA”进行逐个比对。
步骤S1042,当目标数据哈希值与源数据哈希值一致时,在第一指纹集中删除源数据哈希值对应的源数据指纹以得到第一更新指纹集。
在本发明实施例中,当第一指纹集中存在与待比对的目标数据哈希值一致的源数据哈希值时,说明该目标数据哈希值对应的目标数据的源数据未发生变化,此时将第一指纹集中与该目标数据哈希值一致的源数据哈希值对应的源数据指纹删除。将第二指纹集中所有的目标数据哈希值比对完成之后,最终剩余的源数据指纹组成第一更新指纹集。例如,结合到步骤S104中的例子,第一更新指纹集为“9D07DC14790098D846AA4F165EC27FAD=1722、6CD9C7DA28EC81DF51DF962666383BFA=1”。
步骤S1043,当目标数据哈希值与所有源数据的源数据哈希值均不一致时,则将目标数据哈希值对应的目标数据指纹加入第二更新指纹集,其中,待更新的数据对应的更新指纹集包括第一更新指纹集和第二更新指纹集。
在本发明实施例中,当目标数据哈希值与所有源数据的源数据哈希值均不一致时,说明该目标数据哈希值对应的目标数据的源数据发生了变化,则将该目标数据哈希值对应的目标数据指纹提取出来。将第二指纹集中所有的目标数据哈希值比对完成之后,将所有提取出来的目标数据指纹作为第二更新指纹集。例如,结合到步骤S104中的例子,第二更新指纹集“CCD9C7DA28EC81DF51DF962666383BFA=1”。
第四实施例
请参照图6,图6示出了本发明第四实施例提供的数据服务器10的方框示意图。该数据服务器10包括处理器101、存储器102、总线103和通信接口104,所述处理器101、存储器102和通信接口104通过总线103连接;处理器101用于执行存储器102中存储的可执行模块,例如计算机程序。
其中,存储器102可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口104(可以是有线或者无线)实现该***网元与至少一个其他网元之间的通信连接。
总线103可以是ISA总线、PCI总线或EISA总线等。图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器102用于存储程序,如图7所示的数据处理装置200。该数据处理装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器102中或固化在所述数据服务器10的操作***(operating system,OS)中的软件功能模块。所述处理器101在接收到执行指令后,执行所述程序以实现本发明第一实施例、第二实施例和第三实施例揭示的数据处理方法。
处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。该存储介质位于存储器102,处理器101读取存储器102中的信息,结合其硬件完成上述方法的步骤。
需要指出的是,在不借助数据服务器10实现数据提供功能的应用场景下,目标服务器30具有与本发明第二实施例中提供的数据服务器10相同的结构和功能。也就是说,目标服务器30包括处理器101、存储器102、总线103和通信接口104,存储器102中存储有上述的数据处理装置200,当数据处理装置200被处理器101执行时,使得处理器101实现本发明第一实施例、第二实施例和第三实施例揭示的数据处理方法。
需要指出的是,本发明实施例中所指的接口均为程序接口,通过调用程序接口,以实现对应程序接口下的程序功能。
第五实施例
请参照图7,图7示出了本发明第五实施例提供的数据处理装置200的模块图。所述数据处理装置200存储于存储器102中,并由处理器101执行。所述数据处理装置200包括数据获取模块201、数据记载模块202、指纹集建立模块203、更新指纹集获取模块204、目标数据删除模块205及源数据同步模块206。
数据获取模块201,用于获取源数据库中的所有源数据和目标数据库中的所有目标数据。
数据记载模块202,用于将所有源数据和所有目标数据记载到内存。
指纹集建立模块203,用于建立源数据库对应的第一指纹集和目标数据库对应的第二指纹集,其中,第一指纹集包括源数据库中每条源数据的源数据指纹,第二指纹集包括目标数据库中每条目标数据的目标数据指纹,源数据指纹包括源数据哈希值,目标数据指纹包括目标数据哈希值。
在本发明实施例中,指纹集建立模块203,具体用于从内存读取所有源数据和所有目标数据,依据哈希算法依次计算每条源数据的源数据哈希值和每条目标数据的目标数据哈希值;依据每条源数据的源数据哈希值和源数据ID值生成该源数据的源数据指纹,并将所有源数据的源数据指纹放入第一指纹集;依据每条目标数据的目标数据哈希值和目标数据ID值生成该目标数据的目标数据指纹,并将所有目标数据的目标数据指纹放入第二指纹集。
更新指纹集获取模块204,用于获取待更新的数据对应的更新指纹集,其中,更新指纹集包括:第一指纹集中与目标数据指纹不同的源数据指纹,以及第二指纹集中与源数据指纹不同的目标数据指纹。
在本发明实施例中,更新指纹集获取模块204,具体用于将每条目标数据的目标数据哈希值与所有源数据的源数据哈希值进行逐个比对;当目标数据哈希值与源数据哈希值一致时,在第一指纹集中删除源数据哈希值对应的源数据指纹以得到第一更新指纹集;当目标数据哈希值与所有源数据的源数据哈希值均不一致时,则将目标数据哈希值对应的目标数据指纹加入第二更新指纹集,其中,待更新的数据对应的更新指纹集包括第一更新指纹集和第二更新指纹集。
目标数据删除模块205,用于根据第二更新指纹集中的目标数据指纹的目标数据ID值,删除目标数据库中与目标数据ID值对应的目标数据。
源数据同步模块206,用于将与第一更新指纹集中的源数据指纹的源数据ID值对应的源数据同步到目标数据库中。
综上所述,本发明实施例提供的一种数据处理方法及装置,所述方法包括:建立源数据库对应的第一指纹集和目标数据库对应的第二指纹集,其中,第一指纹集包括源数据库中每条源数据的源数据指纹,第二指纹集包括目标数据库中每条目标数据的目标数据指纹,源数据指纹包括源数据哈希值,目标数据指纹包括目标数据哈希值;获取待更新的数据对应的更新指纹集,其中,更新指纹集包括:第一指纹集中与目标数据指纹不同的源数据指纹,以及第二指纹集中与源数据指纹不同的目标数据指纹。与现有技术相比,本发明实施例可以在不改动源数据库的情况下,实现大数据场景下的数据增量抽取。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
Claims (10)
1.一种数据处理方法,其特征在于,所述方法包括:
建立源数据库对应的第一指纹集和目标数据库对应的第二指纹集,其中,所述第一指纹集包括源数据库中每条源数据的源数据指纹,所述第二指纹集包括目标数据库中每条目标数据的目标数据指纹,所述源数据指纹包括源数据哈希值,所述目标数据指纹包括目标数据哈希值;
获取待更新的数据对应的更新指纹集,其中,所述更新指纹集包括:第一指纹集中与目标数据指纹不同的源数据指纹,以及第二指纹集中与源数据指纹不同的目标数据指纹。
2.如权利要求1所述的数据处理方法,其特征在于,所述建立源数据库对应的第一指纹集和目标数据库对应的第二指纹集的步骤之前,还包括:
获取源数据库中的所有源数据和目标数据库中的所有目标数据;
将所有源数据和所有目标数据记载到内存。
3.如权利要求2所述的数据处理方法,其特征在于,所述建立源数据库对应的第一指纹集和目标数据库对应的第二指纹集的步骤,包括:
从内存读取所有源数据和所有目标数据,依据哈希算法依次计算每条源数据的源数据哈希值和每条目标数据的目标数据哈希值;
依据每条源数据的源数据哈希值和源数据ID值生成该源数据的源数据指纹,并将所有源数据的源数据指纹放入第一指纹集;
依据每条目标数据的目标数据哈希值和目标数据ID值生成该目标数据的目标数据指纹,并将所有目标数据的目标数据指纹放入第二指纹集。
4.如权利要求1所述的数据处理方法,其特征在于,所述获取待更新的数据对应的更新指纹集合的步骤,包括:
将每条目标数据的目标数据哈希值与所有源数据的源数据哈希值进行逐个比对;
当所述目标数据哈希值与所述源数据哈希值一致时,在所述第一指纹集中删除所述源数据哈希值对应的源数据指纹以得到第一更新指纹集;
当所述目标数据哈希值与所有源数据的源数据哈希值均不一致时,则将所述目标数据哈希值对应的目标数据指纹加入第二更新指纹集,其中,所述待更新的数据对应的更新指纹集包括所述第一更新指纹集和所述第二更新指纹集。
5.如权利要求4所述的数据处理方法,其特征在于,所述源数据指纹还包括源数据ID值,所述目标数据指纹还包括目标数据ID值,所述方法还包括:
根据所述第二更新指纹集中的目标数据指纹的目标数据ID值,删除所述目标数据库中与所述目标数据ID值对应的目标数据;
将与所述第一更新指纹集中的源数据指纹的源数据ID值对应的源数据同步到所述目标数据库中。
6.一种数据处理装置,其特征在于,所述装置包括:
指纹集建立模块,用于建立源数据库对应的第一指纹集和目标数据库对应的第二指纹集,其中,所述第一指纹集包括源数据库中每条源数据的源数据指纹,所述第二指纹集包括目标数据库中每条目标数据的目标数据指纹,所述源数据指纹包括源数据哈希值,所述目标数据指纹包括目标数据哈希值;
更新指纹集获取模块,用于获取待更新的数据对应的更新指纹集,其中,所述更新指纹集包括:第一指纹集中与目标数据指纹不同的源数据指纹,以及第二指纹集中与源数据指纹不同的目标数据指纹。
7.如权利要求6所述的数据处理装置,其特征在于,所述装置还包括:
数据获取模块,用于获取源数据库中的所有源数据和目标数据库中的所有目标数据;
数据记载模块,用于将所有源数据和所有目标数据记载到内存。
8.如权利要求7所述的数据处理装置,其特征在于,所述指纹集建立模块具体用于:
从内存读取所有源数据和所有目标数据,依据哈希算法依次计算每条源数据的源数据哈希值和每条目标数据的目标数据哈希值;
依据每条源数据的源数据哈希值和源数据ID值生成该源数据的源数据指纹,并将所有源数据的源数据指纹放入第一指纹集;
依据每条目标数据的目标数据哈希值和目标数据ID值生成该目标数据的目标数据指纹,并将所有目标数据的目标数据指纹放入第二指纹集。
9.如权利要求6所述的数据处理装置,其特征在于,所述更新指纹集获取模块具体用于:
将每条目标数据的目标数据哈希值与所有源数据的源数据哈希值进行逐个比对;
当所述目标数据哈希值与所述源数据哈希值一致时,在所述第一指纹集中删除所述源数据哈希值对应的源数据指纹以得到第一更新指纹集;
当所述目标数据哈希值与所有源数据的源数据哈希值均不一致时,则将所述目标数据哈希值对应的目标数据指纹加入第二更新指纹集,其中,所述待更新的数据对应的更新指纹集包括所述第一更新指纹集和所述第二更新指纹集。
10.如权利要求9所述的数据处理装置,其特征在于,所述装置还包括:
目标数据删除模块,用于根据所述第二更新指纹集中的目标数据指纹的目标数据ID值,删除所述目标数据库中与所述目标数据ID值对应的目标数据;
源数据同步模块,用于将与所述第一更新指纹集中的源数据指纹的源数据ID值对应的源数据同步到所述目标数据库中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711395391.1A CN108062399A (zh) | 2017-12-21 | 2017-12-21 | 数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711395391.1A CN108062399A (zh) | 2017-12-21 | 2017-12-21 | 数据处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108062399A true CN108062399A (zh) | 2018-05-22 |
Family
ID=62139681
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711395391.1A Pending CN108062399A (zh) | 2017-12-21 | 2017-12-21 | 数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108062399A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109558448A (zh) * | 2018-10-10 | 2019-04-02 | 北京海数宝科技有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN109656964A (zh) * | 2018-12-19 | 2019-04-19 | 北京超萌国际文化有限公司 | 数据比对的方法、装置以及存储介质 |
CN110046155A (zh) * | 2018-12-07 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 特征数据库的更新、数据特征的确定方法、装置及设备 |
CN111339107A (zh) * | 2020-02-10 | 2020-06-26 | 支付宝(杭州)信息技术有限公司 | 比对源数据同步方法、装置、电子设备及存储介质 |
CN115145943A (zh) * | 2022-09-06 | 2022-10-04 | 北京麦聪软件有限公司 | 多数据源元数据快速比对方法、***、设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719143A (zh) * | 2009-12-01 | 2010-06-02 | 北京中科创元科技有限公司 | 并行处理比对式增量数据抽取方法 |
CN102607577A (zh) * | 2011-01-25 | 2012-07-25 | 北京四维图新科技股份有限公司 | 一种导航电子地图的增量更新方法、装置及*** |
CN104182502A (zh) * | 2014-08-18 | 2014-12-03 | 浪潮(北京)电子信息产业有限公司 | 一种数据抽取方法及装置 |
CN104317823A (zh) * | 2014-09-30 | 2015-01-28 | 北京合力思腾科技股份有限公司 | 一种利用数据指纹进行数据检测的方法 |
CN105763644A (zh) * | 2016-04-21 | 2016-07-13 | 广州杰赛科技股份有限公司 | 云盘文件同步更新方法与装置 |
CN106407321A (zh) * | 2016-08-31 | 2017-02-15 | 东软集团股份有限公司 | 同步数据的方法及装置 |
CN107229721A (zh) * | 2017-06-02 | 2017-10-03 | 泰华智慧产业集团股份有限公司 | 一种变更数据抽取的方法及装置 |
-
2017
- 2017-12-21 CN CN201711395391.1A patent/CN108062399A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719143A (zh) * | 2009-12-01 | 2010-06-02 | 北京中科创元科技有限公司 | 并行处理比对式增量数据抽取方法 |
CN102607577A (zh) * | 2011-01-25 | 2012-07-25 | 北京四维图新科技股份有限公司 | 一种导航电子地图的增量更新方法、装置及*** |
CN104182502A (zh) * | 2014-08-18 | 2014-12-03 | 浪潮(北京)电子信息产业有限公司 | 一种数据抽取方法及装置 |
CN104317823A (zh) * | 2014-09-30 | 2015-01-28 | 北京合力思腾科技股份有限公司 | 一种利用数据指纹进行数据检测的方法 |
CN105763644A (zh) * | 2016-04-21 | 2016-07-13 | 广州杰赛科技股份有限公司 | 云盘文件同步更新方法与装置 |
CN106407321A (zh) * | 2016-08-31 | 2017-02-15 | 东软集团股份有限公司 | 同步数据的方法及装置 |
CN107229721A (zh) * | 2017-06-02 | 2017-10-03 | 泰华智慧产业集团股份有限公司 | 一种变更数据抽取的方法及装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109558448A (zh) * | 2018-10-10 | 2019-04-02 | 北京海数宝科技有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN110046155A (zh) * | 2018-12-07 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 特征数据库的更新、数据特征的确定方法、装置及设备 |
CN109656964A (zh) * | 2018-12-19 | 2019-04-19 | 北京超萌国际文化有限公司 | 数据比对的方法、装置以及存储介质 |
CN111339107A (zh) * | 2020-02-10 | 2020-06-26 | 支付宝(杭州)信息技术有限公司 | 比对源数据同步方法、装置、电子设备及存储介质 |
CN111339107B (zh) * | 2020-02-10 | 2023-07-28 | 支付宝(杭州)信息技术有限公司 | 比对源数据同步方法、装置、电子设备及存储介质 |
CN115145943A (zh) * | 2022-09-06 | 2022-10-04 | 北京麦聪软件有限公司 | 多数据源元数据快速比对方法、***、设备和存储介质 |
CN115145943B (zh) * | 2022-09-06 | 2023-02-28 | 北京麦聪软件有限公司 | 多数据源元数据快速比对方法、***、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108062399A (zh) | 数据处理方法及装置 | |
US20170277769A1 (en) | Techniques to manage time-varying cluster configuration information | |
US11947502B2 (en) | Concurrent enumeration of multiple hierarchies in a database environment | |
US20140215495A1 (en) | Task-specific application monitoring and analysis | |
AU2015347304B2 (en) | Testing insecure computing environments using random data sets generated from characterizations of real data sets | |
WO2017151194A1 (en) | Atomic updating of graph database index structures | |
US10127254B2 (en) | Method of index recommendation for NoSQL database | |
US20140244654A1 (en) | Data migration | |
CN109522332A (zh) | 客户信息数据合并方法、装置、设备及可读存储介质 | |
CN111125229B (zh) | 数据血缘生成方法、装置、电子设备 | |
CN107705199A (zh) | 特征计算代码的生成方法和装置 | |
CN107391506A (zh) | 用于查询数据的方法和装置 | |
CN105095425A (zh) | 一种数据库的跨库结转方法及装置 | |
CN110008246A (zh) | 元数据管理方法及装置 | |
CN107908442A (zh) | 基于spring的资源加载方法、装置、终端设备及计算机可读存储介质 | |
CN112699142A (zh) | 冷热数据处理方法、装置、电子设备及存储介质 | |
CN105868216A (zh) | 一种实现对象过期操作的方法、装置和设备 | |
CN107451280B (zh) | 数据打通方法、装置及电子设备 | |
CN110569372B (zh) | 一种心脏病大数据知识图谱***的构建方法 | |
CN108875048A (zh) | 报表生成方法、装置、电子设备及可读存储介质 | |
WO2018226255A1 (en) | Functional equivalence of tuples and edges in graph databases | |
CN103226610A (zh) | 数据库表查询方法和装置 | |
CN114637811A (zh) | 数据表实体关系图生成方法、装置、设备及存储介质 | |
CN103984723A (zh) | 一种针对增量数据对频繁项进行更新数据挖掘方法 | |
Chu et al. | Automatic data extraction of websites using data path matching and alignment |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180522 |
|
RJ01 | Rejection of invention patent application after publication |