CN110704435A - 数据存储方法、电子设备及机器可读存储介质 - Google Patents
数据存储方法、电子设备及机器可读存储介质 Download PDFInfo
- Publication number
- CN110704435A CN110704435A CN201910907241.7A CN201910907241A CN110704435A CN 110704435 A CN110704435 A CN 110704435A CN 201910907241 A CN201910907241 A CN 201910907241A CN 110704435 A CN110704435 A CN 110704435A
- Authority
- CN
- China
- Prior art keywords
- data
- fingerprint
- field
- data source
- source
- 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.)
- Granted
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/22—Indexing; Data structures therefor; Storage structures
-
- 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
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)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提出一种数据存储方法、电子设备及机器可读存储介质。电子设备获取需要写入数据表的第一数据,获取第一数据的数据源对应的指纹计算模板,根据指纹计算模板和第一数据计算第一数据的第一指纹,根据数据源从查重表中查找来自该数据源的第二数据的第二指纹,判断查找到的第二指纹与第一指纹是否相同,如果相同,则删除第一数据。如此,可以基于查重表实现数据的快速查重、去重和存储,查重过程不必查询数据表,不必在数据表上为不同数据源分别建立索引来加快查询数据表的速度,避免了对数据表上的多个索引进行动态维护所导致的数据表写入性能差的问题,且节约了数据表上索引占据的物理空间和维护开销。
Description
技术领域
本申请涉及数据存储技术领域,具体而言,涉及一种数据存储方法、电子设备及机器可读存储介质。
背景技术
在当前数据分析系统中,由于基础软件或数据采集等原因,不同批次数据之间经常会存在重复数据,这部分重复数据对数据分析结果的真实性及系统可视化效果等造成不良影响。
因此,需要先对获得的数据和数据表中已写入数据进行查重。为了提高从数据表查找数据的效率,可通过在数据表上建立索引的方式,快速从数据表中查找到需要读取的数据,用以和待查重数据比较。但是,当数据表中数据变化时,数据表上建立的索引需要进行动态更新,更新完成才可进行后续的写入操作。
如果数据表的数据是从多个数据源获取的,判断不同数据源的数据是否重复的字段不同,需要对每个数据源用于重复数据判断的一个或多个字段建立索引,导致向数据表写入数据时需对多个索引进行动态更新,耗时较长,导致数据表的数据写入的速度非常慢。
此外,除了数据表之外,索引需要占据一定的物理空间,且需要耗费时间维护,增加了数据库的存储负担和维护开销。
发明内容
有鉴于此,本申请的目的包括提供一种数据存储方法、电子设备及机器可读存储介质,以改善上述问题。
为了实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供一种数据查重方法,该方法包括:
获取需要写入数据表的第一数据,确定第一数据的数据源;
获取数据源对应的指纹计算模板,其中,指纹计算模板设置有用于判断该数据源的数据是否重复的目标字段;
根据第一数据的目标字段的内容,计算得到第一数据的第一指纹;
根据数据源从查重表中查找来自该数据源的第二数据的第二指纹,判断查找到的第二指纹与第一指纹是否相同;
若第二指纹与第一指纹相同,则删除第一数据。
第二方面,本申请实施例提供一种电子设备,包括处理器及机器可读存储介质,机器可读存储介质上存储有机器可执行指令,机器可执行指令被执行时促使处理器实现本申请实施例第一方面提供的数据存储方法。
第三方面,本申请实施例提供一种机器可读存储介质,其上存储有机器可执行指令,机器可执行指令被执行时实现本申请实施例第一方面提供的数据存储方法。
相较于现有技术,本申请实施例提供的一种数据存储方法、电子设备及机器可读存储介质,获取需要写入数据表的第一数据,获取第一数据的数据源对应的指纹计算模板,指纹计算模板中设置有用于判断该数据源的数据是否重复的目标字段。根据第一数据的目标字段的内容,计算得到第一数据的第一指纹,根据数据源从查重表中查找来自该数据源的第二数据的第二指纹,判断查找到的第二指纹与第一指纹是否相同,如果相同,则删除第一数据。如此,可以基于查重表来对第一数据和已写入数据表的数据进行快速查重、去重和存储,查重过程不必从数据表查询数据,因此不必在数据表上针对不同数据源分别建立索引来加快查询数据表的速度,一方面避免了数据表上的大量索引动态更新所导致的数据表写入性能的问题,另一方面减少了数据表上的索引占用的物理空间及所需的维护开销。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请一个实施例提供的数据存储方法的流程示意图;
图2示出了本申请另一个实施例提供的数据存储方法的流程示意图之一;
图3示出了图2所示数据存储方法的流程示意图之二;
图4示出了图2和图3所示的数据存储方法的应用场景示意图;
图5示出了本申请另一个实施例提供的一种应用场景示意图;
图6示出了本申请另一个实施例提供的一种联合索引的示意图;
图7示出了本申请另一个实施例提供的一种应用于图5所示场景的数据存储方法的流程示意图;
图8示出了本申请实施例提供的一种电子设备的方框示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
请参照图1,图1示出了本申请一实施例提供的一种数据存储方法的流程示意图,该方法包括以下步骤。
步骤101,获取需要写入数据表的第一数据,确定第一数据的数据源。
步骤102,获取数据源对应的指纹计算模板,其中,指纹计算模板设置有用于判断该数据源的数据是否重复的目标字段。
步骤103,根据第一数据的目标字段的内容,计算得到第一数据的第一指纹。
步骤104,根据数据源从查重表中查找来自数据源的第二数据的第二指纹,判断查找到的第二指纹与第一指纹是否相同。
步骤105,若第二指纹与第一指纹相同,则删除第一数据。
通过图1所示的数据存储方法,本实施例可以避免在数据表上针对不同数据源判断重复数据的字段分别建立索引以加快查重速度,避免了因索引动态维护造成的数据表数据写入速度慢的问题,并且减少了索引占用的物理空间以及对索引的维护开销。
图2和图3示出了本申请另一实施例提供的一种数据存储方法的流程示意图。该方法可以应用于电子设备,该电子设备可以是运行有数据库的服务器,数据库包括一个以上数据表,服务器可以是单个服务器或相互通信的多个服务器组成的集群。电子设备可以获取来自不同外部系统的数据并写入相应数据表,每个外部系统为一个数据源。
比如图4所示,电子设备100可以按照设定的时间间隔分别获取数据源A、数据源B和数据源C各自的用户访问信息,并需要将从数据源A、B、C获取的用户访问信息写入数据表110中。每条用户访问信息为一条数据,包括多个字段的内容,例如,用户账号(account)字段、用户名(name)字段、访问板块(block)字段、访问时间(time)字段、源IP地址(SIP)字段、目的IP(DIP)字段及定位信息(location)字段等。
其中,对于数据源A的用户访问信息,关注的是每个统计周期内的活跃用户,因此需要依据用户名字段来判断两条用户访问信息是否重复;对于数据源B的用户访问信息,关注的是用户对每个板块的访问频率,因此需要根据访问板块字段以及访问时间字段来判断两条用户访问信息是否重复;对于数据源C的用户访问信息,关注的是每个用户具体访问的板块及用户所属地区,因此需要根据用户账号字段、访问板块字段、源IP地址字段及定位信息字段来判断两条用户访问信息是否重复。上述关于数据源及用户访问信息的描述只用于举例说明,本实施例并不限定于此。
电子设备100存储了不同数据源的指纹计算模板,每个指纹计算模板设置有用于判断对应数据源的数据是否重复的目标字段。
本实施例中,指纹计算模板与数据源的对应关系如下表1所示:
数据源 | 指纹计算模板 |
A | [name] |
B | [block,time] |
C | [account,block,SIP,location] |
表1
电子设备100还存储了与数据表110相互独立的查重表120,存储于查重表120中的每一条数据记录包括数据源字段和指纹字段,每一条数据记录对应于一条已写入数据表110的用户访问信息,数据记录的数据源字段的值为对应的用户访问信息的数据源标识,指纹字段的值为对应的用户访问信息的指纹。
电子设备100在查重表120上建立了数据源字段的单一索引121,以提升电子设备100根据数据源从查重表120查询数据记录的速度。其中,单一索引121可以为B类树结构。
初始状态下,查重表120为空,单一索引121也为空。
图2示出了电子设备100对来自数据源B的第一批次数据d1的存储流程,具体包括以下步骤:
步骤201,对需要写入数据表110的第一数据进行预处理,使第一数据符合预设格式。
电子设备100首次从数据源B获取到第一批次数据d1,第一批次数据d1包括数据源的标识B以及100条用户访问信息,其中,一条用户访问信息为一个第一数据。
电子设备100将第一批次数据d1中100条用户访问信息的相同字段的值预处理为相同格式。
如此,可以确保相同字段的内容为相同格式,从而避免因数据格式差异而产生的数据指纹差异导致数据查重出错。
步骤202,获取第一数据,确定第一数据的数据源。
电子设备100依次获取预处理后的第一批次数据d1中的每条用户访问信息,根据第一批次数据d1携带的标识B确定获取的用户访问信息来自数据源B,然后按照以下描述的步骤203至步骤206对获取的每条用户访问信息进行处理。
步骤203,获取数据源对应的指纹计算模板。
从表1所示对应关系中查找到数据源B对应的指纹计算模板[block,time],从而确定用于判断数据源B的数据是否重复的目标字段包括访问板块字段和访问时间字段。
步骤204,根据第一数据的目标字段的内容,计算得到第一数据的第一指纹。
对于步骤202中获取的第i条用户访问信息d1-i(1≤i≤100,且i为整数),采用MD5消息摘要算法对用户访问信息d1-i的访问板块和访问时间进行计算,生成用户访问信息d1-i的第一指纹。其中,MD5消息摘要算法只用于举例说明,本实施例还可以采用其他的指纹计算算法,如SHA(SecureHashAlgorithm,密码散列函数家族)系列算法、非对称加密算法(如,RSA算法)等。
步骤205,根据数据源从查重表120中查找来自数据源的第二数据的第二指纹。
电子设备100从查重表120中查找数据源字段的值为标识B的数据记录。查重表120为空,无法查找到第二数据的第二指纹。
步骤206,若没有查找到第二数据的第二指纹,则将第一数据写入第一数据表。
电子设备100确定没有查找到第二数据的第二指纹,将第i条用户访问信息d1-i写入数据表110,写入数据表110后的第i条用户访问信息d1-i成为第二数据。
本实施例中,电子设备100按照步骤203至206,对第一批次数据d1中的每条用户访问信息进行处理。
步骤207,当处于相邻批次去重模式时,判断是否完成对当前批次数据的去重处理。若是,则执行步骤208;若否,则跳转至步骤202。
当查重表120仅用于存储来自每个数据源的一个批次数据的指纹与数据源的对应关系时,视作处于相邻批次去重模式。
示例性地,电子设备100中可以设置有指示去重模式的标志位,例如,当识别出标志位的值为1时,确定处于相邻批次去重模式。可以理解,相邻批次去重模式还可以用其它值表示。
电子设备100在处于相邻批次去重模式的情况下,每按照步骤203至206处理一条用户访问信息,则判断是否已按照步骤203至206完成对第一批次数据d1中每条用户访问信息的处理。
如果否,则继续跳转至步骤202,以获取下一条用户访问信息进行处理。
如果是,则可以得到经过去重的第一批次数据,表示为去重数据d1’。其中,由于数据表110为空,去重数据d1’包括100条用户访问信息,与第一批次数据d1相同。
步骤208,将当前批次数据中每个第一数据的第一指纹与数据源的对应关系写入查重表120。
针对未经去重的第一批次数据d1中的每一条用户访问信息,建立一条数据记录item1,数据记录item1的数据源字段的值为标识B、指纹字段的值为该条用户访问信息的第一指纹。如此,可以得到100条数据记录item1。
将得到的100条数据记录item1写入查重表120,以确保查重表120存储有来自数据源B的一个批次数据的所有指纹,以用于与下一批次数据的指纹比对。写入查重表120后的数据记录item1的指纹字段的第一指纹,成为第二指纹。
由于查重表120中写入了新数据,即发生了数据变化,将触发查重表120上的单一索引121更新。
此时查重表120仅存储来自数据源B的一个批次数据的指纹与数据源B的对应关系,即,只存储有数据源字段的值为标识B的数据记录item1。因此,更新后的单一索引121包括1个索引项,该索引项包括标识B及多个指针tb,每个指针tb指向查重表120中数据源字段的值为标识B的一条数据记录item1。
对应地,当查重表120中还存储有来自数据源A或C的一个批次数据的指纹与数据源的对应关系时,更新后的单一索引121还包括包含标识A的索引项或包含标识C的索引项。
值得说明的是,由于查重表120中数据较数据表110少很多,即便在没有建立索引的情况下,也能够快速查询到所需数据,查询速度与基于索引从数据表110中查询数据的速度差不多。
在查重表120上建立有单一索引121的情况下,能够进一步提升从查重表120查询数据的速度,并且由于基于一个字段建立的单一索引121的数据量非常少,单一索引121的动态更新速度非常快,对查重表120的读写性能的影响可忽略不计。
图3示出了电子设备100对来自数据源B的第二批次数据d2的存储流程,具体包括以下步骤:
步骤301,对需要写入数据表110的第一数据进行预处理,使第一数据符合预设格式。
在将第一批次数据d1写入数据表110,将第一批次数据d1的指纹与数据源B的对应关系(100条数据记录item1)写入查重表120之后,电子设备100从数据源B获取到第二批次数据d2,第二批次数据d2包括数据源的标识B以及150条用户访问信息,其中,一条用户访问信息为一个第一数据。
电子设备100将第二批次数据d2中150条用户访问信息的相同字段的值预处理为相同格式。
步骤302,获取第一数据,确定第一数据的数据源。
电子设备100依次获取预处理后的第二批次数据d2中的每一条用户访问信息,根据第二批次数据d2携带的标识B确定获取的用户访问信息来自数据源B。
步骤303,获取数据源对应的指纹计算模板。
从表1所示对应关系中查找到数据源B对应的指纹计算模板[block,time],确定用于判断数据源B的数据是否重复的目标字段包括访问板块字段和访问时间字段。
步骤304,根据第一数据的目标字段的内容,计算得到第一数据的第一指纹。
对于步骤302中获取的第j条用户访问信息d2-j(1≤j≤150,且j为整数),采用MD5消息摘要算法对用户访问信息d2-j的访问板块和访问时间进行计算,生成用户访问信息d2-j的第一指纹。
步骤305,根据数据源从查重表120中查找来自数据源的第二数据的第二指纹。
电子设备100从查重表120中查找数据源字段的值为标识B的数据记录。
由于查重表120上建立有单一索引121,且单一索引121不为空,查询过程中,电子设备100将从单一索引121中查找包含标识B的索引项,根据查找到的索引项中的指针tb分别读取到100条数据记录item1。
每条数据记录item1的指纹字段为已写入数据表110的一个第二数据(即,第一批次数据d1中的一条用户访问信息)的第二指纹。
步骤306,判断查找到的第二指纹与第一指纹是否相同。如果是,执行步骤307;如果否,执行步骤308。
步骤307,删除第一数据。
步骤308,将第一数据写入数据表110。
电子设备100在查找到100条数据记录item1之后,依次将每条数据记录item1的指纹字段的值与第j条用户访问信息d2-j的第一指纹比较,确定存在指纹字段的值与第j条用户访问信息d2-j的第一指纹相同的数据记录item1,则删除第j条用户访问信息d2-j。
对于从第二批次数据d2中获取的其他用户访问信息,如果确定不存在指纹字段的值与该其他用户访问信息的第一指纹相同的数据记录item1,则将该其他用户访问信息写入数据表110。写入数据表110的该其他用户访问信息成为第二数据。
重复执行150次上述步骤302至306,可以实现对第二批次数据d2的去重,得到去重数据d2’。示例性地,如果从第二批次数据d2中删除了用户访问信息d2-2、d2-20,去重数据d2’包括剩下的148条用户访问信息。
步骤309,当处于相邻批次去重模式时,判断是否完成对当前批次数据的去重处理。若是,则执行步骤310;若否,则跳转至步骤302。
步骤310,从查重表120中删除一个批次数据的指纹与数据源的对应关系,并将当前批次数据中每个第一数据的第一指纹与数据源的对应关系写入查重表120。
电子设备100识别出标志位的值为1,确定处于相邻批次去重模式,并确定已按照步骤302至306对第二批次数据d2中每条用户访问信息进行处理。则,将查重表120中存储的100条数据记录item1删除,并针对未经去重的第二批次数据d2中的每一条用户访问信息,建立对应的一条数据记录item2,数据记录item2的数据源字段的值为标识B,指纹字段的值为该条用户访问信息的第一指纹。如此,可以得到150条数据记录item2。
将150条数据记录item2写入查重表120。写入查重表120的数据记录item2的指纹字段的值,成为第二指纹。
通过图3所示流程,可以基于查重表实现对需要写入数据表的数据和已写入数据表的数据的快速查重、去重和存储,查重过程不必从直接从数据表查询数据,避免了在数据表上针对不同数据源分别建立索引以加快从数据表查询数据的速度,一方面避免了因数据表上的大量索引的动态更新导致数据表数据写入速度慢的问题,另一方面,节约了数据表上的大量索引占据的物理空间及对大量索引进行维护所产生的开销。
对于来自数据源B的后续批次数据,其存储流程与图3所示流程类似。对于来自其他数据源A和C的第一批次数据,其处理流程与图2所示流程类似,对于来自数据源A和C的后续批次数据,其处理流程与图3所示流程类似。在此不再赘述。
本申请另一实施例提供的数据存储方法应用于图5所示的电子设备200,电子设备200按照设定的时间间隔分别获取数据源A、B、C各自的用户访问信息,并需要将获取的用户访问信息写入数据表210中。
电子设备200存储了不同数据源的指纹计算模板。本实施例中,指纹计算模板与数据源A、B、C的对应关系与表1所示对应关系相同。
电子设备200还存储了查重表220,查重表220与数据表210相互独立。存储于查重表220中的一条数据记录对应于已写入数据表210的一条用户访问信息,该数据记录包括数据源字段和指纹字段,数据源字段的值为对应的用户访问信息所属的数据源的标识信息,指纹字段的值为对应的用户访问信息的指纹。
电子设备200在查重表220上建立了数据源字段和指纹字段的联合索引221,以提升电子设备200从查重表220中查询数据记录的速度。其中,联合索引221可以为B类树结构。
初始状态下,查重表220为空,联合索引221为空。
电子设备100对来自数据源C的第一批次数据d3的存储流程,具体流程如下:
电子设备200从数据源C获取到第一批次数据d3,第一批次数据d3包括数据源的标识信息C以及50条用户访问信息,其中,一条用户访问信息为一个第一数据。
将第一批次数据d3中50条用户访问信息的相同字段预处理为相同格式,并依次获取预处理后的第一批次数据d3中的每一条用户访问信息,根据第一批次数据d3携带的标识信息C确定获取的用户访问信息来自数据源C。
从电子设备200存储的表1所示对应关系中,查找到与数据源C对应的指纹计算模板[accunt,block,SIP,location],从而确定判断数据源C的数据是否重复的目标字段包括用户账号字段、访问板块字段、源IP字段及定位信息字段。
依次获取第一批次数据d3中的每条用户访问信息,对于获取的第m条用户访问信息d3-m(1≤m≤50,且m为整数),采用MD5消息摘要算法对其用户账号、访问板块、源IP地址及定位信息进行计算,得到第m条用户访问信息d3-m的第一指纹。
电子设备200从查重表220中查找数据源字段的值为标识信息C、指纹字段的值为第m条用户访问信息d3-m的第一指纹的数据记录。
此时查重表220为空,返回结果为空。即,没有与第m条用户访问信息d3-m的第一指纹相同的第二指纹,电子设备200将第m条用户访问信息d3-m写入数据表210。
当查重表120用于存储来自每个数据源的多个批次数据的指纹与数据源的对应关系时,确定处于多批次去重模式。示例性地,电子设备200可以设置有标志位,该标志位的值表征所处的去重模式。例如,当识别出的标志位的值为2时,确定处于多批次去重模式。可以理解,多批次去重模式还可以用其它值表示。
当电子设备200依次获取第一批次数据d3中的50条用户访问信息并按照前述流程进行处理后,确定完成对第一批次数据d3的去重处理。由于数据表210初始状态下没有存储来自数据源C的数据,对第一批次数据d3进行去重得到的去重数据d3’仍包括50条用户访问信息。
对于未经去重的第一批次数据d3中的每一条用户访问信息,电子设备200建立一条数据记录item3,数据记录item3的数据源字段的值为标识C,指纹字段的值为该用户访问信息的第一指纹。如此,可以得到50条数据记录item3,将50条数据记录item3写入查重表220。
本实施例中,对于来自数据源A、B的第一批次数据,均可以按照上述流程进行存储,在此不再赘述。
由于查重表220中写入了数据,将触发查重表220上的联合索引221更新。更新后的联合索引221包括多个索引项,每个索引项包括标识C、查重表220中的一个指纹、与该指纹对应的第一指针,其中,第一指针指向该指纹在查重表120中所属的数据记录item3。
联合索引221的所有索引项被划分成多份,存储于不同的数据块中。每个数据块包括一个以上索引项,一个以上索引项中的指纹界定了一个以上指纹范围。当查重表220存储有属于该一个以上指纹范围的指纹时,该数据块还包括与该一个以上指纹范围对应的第二指针,第二指针指向目标数据块,目标数据块中的索引项包含属于该一个以上指纹范围的指纹。
图6示例性地示出了更新后的联合索引221中的部分索引项的示意图。
数据块60包括:索引项2210、索引项2211、索引项2212及第二指针t1和t2。
索引项2210包括标识C、指纹p1、第一指针tc1,第一指针tc1指向查重表220中数据源字段的值为标识C、指纹字段的值为p1的数据记录item3。
索引项2211包括标识C、指纹p5、第一指针tc5,第一指针tc5指向查重表220中数据源字段的值为标识C、指纹字段的值为p5的数据记录item3。
索引项2212包括标识C、指纹p10、第一指针tc10,第一指针tc10指向查重表220中数据源字段的值为标识C、指纹字段的值为p10的数据记录item3。
第二指针t1与范围(p1,p5)对应,指向数据块61,数据块61存储的索引项2214和索引项2215均包含属于(p1,p5)这一范围的指纹。
索引项2214包括标识C、指纹p2、第一指针tc2,第一指针tc2指向查重表220中数据源字段的值为标识C、指纹字段的值为p2的数据记录item3。索引项2215包括标识C、指纹p4、第一指针tc4,第一指针tc4指向查重表220中数据源字段的值为标识C、指纹字段的值为p4的数据记录item3。
第二指针t2与范围(p5,p10)对应,指向数据块62,数据块62存储的索引项2216和索引项2217均包含属于(p5,p10)这一范围的指纹。
索引项2216包括标识C、指纹p7、第一指针tc7,第一指针tc7指向查重表220中数据源字段的值为标识C、指纹字段的值为p7的数据记录item3。索引项2217包括标识C、指纹p9、第一指针tc9,第一指针tc9指向查重表220中数据源字段的值为标识C、指纹字段的值为p9的数据记录item3。
数据块62还包括与范围(t7,t9)对应的第二指针t3,第二指针t3指向数据块63,数据块63存储的索引项2218包含属于(p7,p9)这一范围的指纹p8。索引项2218还包括标识C和第一指针tc8,第一指针tc8指向查重表220中数据源字段的值为标识C、指纹字段的值为p8的数据记录item3。
上述各索引项中的指纹的大小关系为:p1<p2<p4<p5<p7<p8<p9<p10。
如果需要从查重表220中查询数据源字段的值为标识C、指纹字段的值为指纹p8的数据记录item3,基于联合索引221,电子设备200首先将查询条件与数据块60中的索引项比对,可以确定数据块60中的索引项均包含标识C,而指纹p8属于索引项2211和2212中的指纹所界定的范围(p5,p10)之间,故根据指纹范围(p5,p10)对应的第二指针t2找到数据块62。
将查询条件与数据块62中的索引项比对,确定数据块62中的索引项都包含标识C,而指纹p8属于索引项2216和2217中的指纹所界定的范围(p7,p9)之间,故根据指纹范围(p7,p9)对应的第二指针t3找到数据块63。
将查询条件与数据块63中的索引项比对,确定索引项2218包含标识C和指纹p8,与查询条件相符,故根据索引项2218中的第一指针tc8找到数据源字段的值为标识C、指纹字段的值为p8的数据记录item3。
由于查重过程不必将查询条件与查重表220中的每条数据记录逐一比对,只需比对一部分,即可确定查重表中是否存在与第一指纹相同的第二指纹,加快了查重速度。
值得说明的是,相较于在数据表上针对多个数据源的不同字段分别建立索引,本实施例中针对指纹字段和数据源字段建立的联合索引的数据量较少,其更新速度较快,对查重表读写性能的影响可忽略不计。
图7示出了电子设备200对来自数据源C的第二批次数据d4进行存储的流程,具体包括以下步骤:
步骤701,对需要写入数据表210的第一数据进行预处理,使第一数据符合预设格式。
在将第一批次数据d3写入数据表210,将第一批次数据d3的指纹与数据源C的对应关系(50条数据记录item3)写入查重表220之后,电子设备200从数据源C获取到第二批次数据d4。第二批次数据d4包括数据源的标识信息C及70条用户访问信息,一条用户访问信息为一个第一数据。
电子设备200将第二批次数据d4中70条用户访问信息的相同字段的值处理成相同格式。
步骤702,获取第一数据,确定第一数据的数据源。
电子设备200依次获取第二批次数据d4中的每一条用户访问信息,根据第二批次数据d4携带的标识C确定获取的用户访问信息来自数据源C。
步骤703,获取数据源对应的指纹计算模板。
从电子设备200存储的如表1所示的对应关系中,查找到数据源C对应的指纹计算模板[account,block,SIP,location],确定判断数据源C的数据是否重复的目标字段包括用户账号字段、访问板块字段、源IP地址字段及定位信息字段。
步骤704,根据第一数据的目标字段的内容,计算得到第一数据的第一指纹。
对于获取的第n条用户访问信息d4-n(1≤n≤70,且n为整数),采用MD5消息摘要算法对第n条用户访问信息d4-n的用户账号、访问板块、源IP地址及定位信息,计算得到第n条用户访问信息d4-n的第一指纹。
步骤705,根据联合索引221,从查重表220中查找数据源字段为数据源的标识、指纹字段为第一指纹的目标数据记录。
步骤706,若查找到目标数据记录,则获取目标数据记录的指纹字段的值,确定第一指纹和第二指纹相同。
请再次参照图6,如果第n条用户访问信息d4-n的第一指纹为p8,则可以从查重表220中查询数据源字段的值为标识C、指纹字段的值为p8的数据记录item3,从而按照上文描述的流程从联合索引221中查找到索引项2218,根据索引项2218中的第一指针tc8找到数据源字段的值为标识C指纹字段的值为p8的数据记录item3,从而确定查重表220中存在与第n条用户访问信息d4-n的第一指纹相同的第二指纹。
步骤707,若第一指纹和第二指纹相同,删除第一数据。
电子设备200删除第n条用户访问信息d4-n。
步骤708,当处于多批次去重模式时,若第一指纹和第二指纹相同,则删除第一指纹。
电子设备200识别出标志位的值为2,确定当前处于多批次去重模式,且基于前述判断结果确定查重表220中存在与第一指纹相同的第二指纹,故删除第n条用户访问信息d4-n的第一指纹。
重复执行70次步骤702至708,完成对第二批次数据d4的去重,得到去重数据d4’,假设删除了d4-1、d4-2、d4-10、d4-15共4条用户访问信息,则去重数据d4’包括剩下的66条用户访问信息。
步骤709,判断是否完成对当前批次数据的去重处理。若是,则执行步骤710,若否,则跳转至步骤702。
当按照步骤703至708完成对第二批次数据d4中每条用户访问信息的处理时,确定完成对第二批次数据d4的去重处理。
步骤710,将去重后的当前批次数据中每个第一数据的第一指纹与数据源的对应关系写入查重表220。
电子设备200针对去重数据d4’中的每一条用户访问信息,建立一条对应的数据记录item4,数据记录item4的数据源字段的值为标识C、指纹字段的值为对应的用户访问信息的第一指纹,从而可以得到66条数据记录item4,并将66条数据记录item4写入查重表220。
基于去重数据d4’建立数据记录item4,可以确保多个批次数据中重复数据的指纹只在查重表220中存储一份,减少数据存储量。
对于数据源C的后续批次数据,可以按照图7所示流程进行存储。对于来自数据源A、B的第二批次及其以后的数据,可以按照图7所示流程进行存储。
图5和图7所示的实施例中,基于查重表中存储的多个批次数据的指纹与数据源的对应关系,能够快速地对需要写入数据表的数据与已写入数据表的数据进行去重和存储,去重程中不必直接查询数据表中的数据,避免了在数据表上针对不同数据源的字段分别建立索引来加快查询速度,从而在一方面避免了因对数据表上的大量索引的动态维护造成数据表的数据写入速度慢,在另一方面节约了数据表上的大量索引所占据的物理空间和维护开销。
请参照图8,图8为本申请实施例提供的一种电子设备800的方框示意图。电子设备800包括处理器810及机器可读存储介质820,处理器810和机器可读存储介质820经由系统总线通信。机器可读存储介质820存储有机器可执行指令,处理器810通过调用该机器可执行指令可以实现上述任一实施例中的数据查重方法。机器可读存储介质820还存储有数据表、查重表及与不同数据源对应的指纹计算模板。
上述实施例中的电子设备100、200与电子设备800的结构类似,在此不再赘述。
综上所述,本申请实施例提供的数据存储方法、电子设备及机器可读存储介质,电子设备获取需要写入数据表的第一数据,获取第一数据的数据源对应的指纹计算模板,根据指纹计算模板和第一数据计算第一数据的第一指纹,根据数据源从查重表中查找来自该数据源的第二数据的第二指纹,判断查找到的第二指纹与第一指纹是否相同,如果相同,则删除第一数据。如此,可以基于查重表实现数据的快速去重和存储,去重过程不必查询数据表,从而避免在数据表上为不同数据源的数据分别建立大量索引来加快从数据表查询数据的速度,避免了因对数据表上的大量索引进行动态更新造成的数据表写入速度慢的问题,并且减少了数据表上的大量索引占用的物理空间及维护开销。
以上所述仅为本申请的选定实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据存储方法,其特征在于,所述方法包括:
获取需要写入数据表的第一数据,确定所述第一数据的数据源;
获取所述数据源对应的指纹计算模板,其中,所述指纹计算模板设置有用于判断所述数据源的数据是否重复的目标字段;
根据所述第一数据的所述目标字段的内容,计算得到所述第一数据的第一指纹;
根据所述数据源从查重表中查找来自所述数据源的第二数据的第二指纹,判断查找到的第二指纹与所述第一指纹是否相同;
若所述第二指纹与所述第一指纹相同,则删除所述第一数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第二指纹与所述第一指纹不同,则将所述第一数据写入所述数据表。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若没有查找到所述第二数据的所述第二指纹,则将所述第一数据写入所述数据表。
4.根据权利要求1所述的方法,其特征在于,所述查重表存储有一个批次数据的指纹与所述数据源的对应关系;所述方法还包括:
当处于相邻批次去重模式时,判断是否完成对当前批次数据的去重处理;
若完成,则从所述查重表中删除所述一个批次数据的指纹与所述数据源的对应关系,并将所述当前批次数据中每个第一数据的第一指纹与所述数据源的对应关系写入所述查重表。
5.根据权利要求4所述的方法,其特征在于,所述查重表中的每个对应关系为包括数据源字段和指纹字段的数据记录;
所述根据所述数据源从查重表中查找来自所述数据源的第二数据的第二指纹,包括:
根据为所述数据源字段建立的单个索引,从所述查重表中查找数据源字段为所述数据源的标识的目标数据记录;
若查找到所述目标数据记录,获取所述目标数据记录的指纹字段的值,得到所述第二指纹。
6.根据权利要求1所述的方法,其特征在于,所述查重表存储有多个批次数据的指纹与所述数据源的对应关系;所述方法还包括:
当处于多批次去重模式时,若所述第一指纹和所述第二指纹相同,则删除所述第一指纹;
若完成对当前批次数据的去重处理,则将去重后的所述当前批次数据中每个第一数据的第一指纹与所述数据源的对应关系写入所述查重表。
7.根据权利要求6所述的方法,其特征在于,所述查重表中的每个对应关系为包括数据源字段和指纹字段的数据记录;
所述根据所述数据源从查重表中查找来自所述数据源的第二数据的第二指纹,判断查找到的第二指纹与所述第一指纹是否相同,包括:
根据为所述数据源字段和所述指纹字段建立的联合索引,从所述查重表中查找数据源字段为所述数据源的标识、指纹字段为所述第一指纹的目标数据记录;
若查找到所述目标数据记录,则获取所述目标数据记录的指纹字段的值,得到所述第二指纹,并确定所述第二指纹与所述第一指纹相同。
8.根据权利要求1-7中任意一项所述的方法,其特征在于,所述方法还包括:
在获取所述第一数据之前,对所述第一数据进行预处理,使所述第一数据符合预设格式。
9.一种电子设备,其特征在于,包括处理器及机器可读存储介质,所述机器可读存储介质上存储有机器可执行指令,所述机器可执行指令被执行时促使所述处理器实现权利要求1-8中任意一项所述的数据存储方法。
10.一种机器可读存储介质,其上存储有机器可执行指令,其特征在于,所述机器可执行指令被执行时实现权利要求1-8中任意一项所述的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910907241.7A CN110704435B (zh) | 2019-09-24 | 2019-09-24 | 数据存储方法、电子设备及机器可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910907241.7A CN110704435B (zh) | 2019-09-24 | 2019-09-24 | 数据存储方法、电子设备及机器可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110704435A true CN110704435A (zh) | 2020-01-17 |
CN110704435B CN110704435B (zh) | 2022-08-09 |
Family
ID=69196185
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910907241.7A Active CN110704435B (zh) | 2019-09-24 | 2019-09-24 | 数据存储方法、电子设备及机器可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110704435B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101409614A (zh) * | 2007-10-12 | 2009-04-15 | 华为技术有限公司 | 一种数据同步方法、系统和设备 |
JP2012002645A (ja) * | 2010-06-16 | 2012-01-05 | Panasonic Corp | 音源位置探査システム |
KR101244220B1 (ko) * | 2011-10-21 | 2013-03-18 | 주식회사 유니온커뮤니티 | 지문인식장치 및 그 지문 인식방법 |
CN104836835A (zh) * | 2014-02-12 | 2015-08-12 | 雷吉菲股份有限公司 | 用于检索配置相关数据的网络系统 |
US9251160B1 (en) * | 2013-06-27 | 2016-02-02 | Symantec Corporation | Data transfer between dissimilar deduplication systems |
CN106406762A (zh) * | 2016-09-19 | 2017-02-15 | 郑州云海信息技术有限公司 | 一种重复数据删除方法及装置 |
CN110245130A (zh) * | 2019-04-23 | 2019-09-17 | 平安科技(深圳)有限公司 | 数据去重方法、装置、计算机设备及存储介质 |
-
2019
- 2019-09-24 CN CN201910907241.7A patent/CN110704435B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101409614A (zh) * | 2007-10-12 | 2009-04-15 | 华为技术有限公司 | 一种数据同步方法、系统和设备 |
JP2012002645A (ja) * | 2010-06-16 | 2012-01-05 | Panasonic Corp | 音源位置探査システム |
KR101244220B1 (ko) * | 2011-10-21 | 2013-03-18 | 주식회사 유니온커뮤니티 | 지문인식장치 및 그 지문 인식방법 |
US9251160B1 (en) * | 2013-06-27 | 2016-02-02 | Symantec Corporation | Data transfer between dissimilar deduplication systems |
CN104836835A (zh) * | 2014-02-12 | 2015-08-12 | 雷吉菲股份有限公司 | 用于检索配置相关数据的网络系统 |
CN106406762A (zh) * | 2016-09-19 | 2017-02-15 | 郑州云海信息技术有限公司 | 一种重复数据删除方法及装置 |
CN110245130A (zh) * | 2019-04-23 | 2019-09-17 | 平安科技(深圳)有限公司 | 数据去重方法、装置、计算机设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
FEBRI DWIANDRIANI; TIEN FABRIANTI KUSUMASARI; M. AZANI HASIBUAN: ""Fingerprint clustering algorithm for data profiling using pentaho data integration"", 《2017 2ND INTERNATIONAL CONFERENCES ON INFORMATION TECHNOLOGY, INFORMATION SYSTEMS AND ELECTRICAL ENGINEERING (ICITISEE)》 * |
燕彩蓉等: "云存储中基于相似性的客户-服务端双端数据去重方法", 《东华大学学报(自然科学版)》 * |
Also Published As
Publication number | Publication date |
---|---|
CN110704435B (zh) | 2022-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10380073B2 (en) | Use of solid state storage devices and the like in data deduplication | |
KR101708261B1 (ko) | 개별 액세스 가능한 데이터 유닛의 스토리지 관리 | |
CN102629247B (zh) | 一种数据处理方法、装置和系统 | |
US20140297603A1 (en) | Method and apparatus for deduplication of replicated file | |
US11074225B2 (en) | Synchronization of index copies in an LSM tree file system | |
CN107911461B (zh) | 云存储系统中的对象处理方法、存储服务器及云存储系统 | |
KR20090075885A (ko) | 개별적으로 액세스 가능한 데이터 유닛의 기억 관리 방법 및 시스템 | |
US20220083618A1 (en) | Method And System For Scalable Search Using MicroService And Cloud Based Search With Records Indexes | |
CN111475105B (zh) | 监控数据存储方法、设备、服务器及存储介质 | |
CN102495894A (zh) | 重复数据查找方法、装置及系统 | |
US10515055B2 (en) | Mapping logical identifiers using multiple identifier spaces | |
CN113901279B (zh) | 一种图数据库的检索方法和装置 | |
US11650967B2 (en) | Managing a deduplicated data index | |
CN110704435B (zh) | 数据存储方法、电子设备及机器可读存储介质 | |
KR20210022503A (ko) | 연관 유사성 검색을 통한 데이터의 중복 제거 | |
US20220035784A1 (en) | Representing and managing sampled data in storage systems | |
CN114416741A (zh) | 基于多级索引的kv数据写入读取方法、装置及存储介质 | |
CN113868267A (zh) | 注入时序数据的方法、查询时序数据的方法及数据库系统 | |
US10242015B1 (en) | Handling weakening of hash functions by using epochs | |
US10963348B1 (en) | Summary change log indexed by inode numbers | |
US20230376461A1 (en) | Supporting multiple fingerprint formats for data file segment | |
US11620269B2 (en) | Method, electronic device, and computer program product for data indexing | |
CN117540056B (zh) | 数据查询的方法、装置、计算机设备和存储介质 | |
US20240028234A1 (en) | Multi-fingerprint deduplication processing | |
CN110018990B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |