CN108121618A - 一种修复数据的方法和装置 - Google Patents
一种修复数据的方法和装置 Download PDFInfo
- Publication number
- CN108121618A CN108121618A CN201611069108.1A CN201611069108A CN108121618A CN 108121618 A CN108121618 A CN 108121618A CN 201611069108 A CN201611069108 A CN 201611069108A CN 108121618 A CN108121618 A CN 108121618A
- Authority
- CN
- China
- Prior art keywords
- record
- subclass
- address
- sample
- cluster
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供一种修复数据的方法和装置,用于减少业务节点修复缓存集群记录的执行时间,从而提升业务节点的***性能。方法包括:获取样本组,样本组包括至少一个样本集合,样本集合包括缓存集群中的部分记录;根据样本组获取差错率,差错率表示样本组中异常记录占样本组中所有记录的比例,异常记录是指与数据库集群中的参考记录不同的记录,异常记录的地址与参考记录的地址一一对应。若差错率大于0小于第一阈值,则当缓存集群中的第一集合的摘要与数据库集群中的第二集合的摘要不同时,根据第二集合修复第一集合中的异常记录;第一集合包括缓存集群中的部分记录,第一集合的地址与第二集合的地址一一对应。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种修复缓存数据的方法和装置。
背景技术
如图1所示,分布式网络控制器集群包括缓存集群,数据库集群和业务集群。其中,缓存集群包括多个缓存节点,数据库集群包括多个数据库节点,业务集群包括多个业务节点。
业务节点在写记录的过程中,先将记录写入数据库集群,再将记录写入缓存集群。由于缓存集群的读写性能强于数据库集群的读写性能,因此业务节点一般从缓存集群中读取记录。若业务节点检测到缓存集群中没有要读取的记录(即缓存集群的记录缺失),则向数据库集群发送请求;数据库集群根据该请求,向业务节点发送所请求的记录;业务节点接收到数据库集群发送的记录后,向数据库集群发送携带该记录的响应消息。由此可知,若缓存集群的记录缺失,则增加了业务节点访问缓存集群中的记录的开销,也增加了业务节点访问数据库集群中的记录的开销。
为了解决上述技术问题,业务节点可以在将记录写入缓存集群的过程中,将该记录持久化到持久化数据库中,然后,通过对比持久化数据库和缓存集群中的记录,从而对缓存集群中的记录进行修复。具体的:业务节点获取缓存集群中的部分记录作为样本缓存记录,并在持久化集群中获取与该样本缓存记录的地址相同的样本持久化记录;若确定样本缓存记录和样本持久化记录不相同,则通过对比缓存集群中的所有记录和持久化数据库中对应的记录,找出缓存集群丢失的记录的地址;最后,利用持久化数据库中的与丢失的记录的地址一一对应的记录,对缓存集群中的丢失的记录进行修复,从而保证缓存集群中的记录与持久化数据库中的记录一致,即保证缓存集群中的记录与数据库集群中的记录一致。
但是,上述方法,在业务节点修复缓存集群中的丢失的记录的过程中,需要对比缓存集群中的所有记录和持久化数据库中的对应的记录,因此,增加了业务节点修复缓存集群中的记录的执行时间,使***性能下降。
发明内容
本申请提供一种修复数据的方法和装置,用于减少业务节点修复缓存集群中的记录的执行时间,从而提升业务节点的***性能。
为了达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种修复数据的方法,应用于包括缓存集群和数据库集群的***中,该方法可以包括:业务节点获取样本组,其中,样本组包括至少一个样本集合,样本集合包括缓存集群中的部分记录。业务节点根据样本组获取差错率,其中,差错率表示样本组中异常记录占样本组中所有记录的比例,异常记录是指与数据库集群中的参考记录不同的记录,异常记录的地址与参考记录的地址一一对应。若差错率大于0小于第一阈值,则当缓存集群中的第一集合的摘要与数据库集群中的第二集合的摘要不同时,根据第二集合修复第一集合中的异常记录;其中,第一集合包括缓存集群中的部分记录,第一集合的地址与第二集合的地址一一对应。由于本发明实施例提供的技术方案中,若缓存集群中的集合与数据库集群中与该集合对应的集合的摘要相同,则可以不对比缓存集群中的该集合中的每条记录和数据库集群中的该每条记录的参考记录。因此,可以缩短业务节点确定缓存集群中的异常记录的执行时间,提升了***性能。
在第一方面的第一种可能的实现中,第一集合是样本集合;业务节点根据样本组获取差错率,可以包括:业务节点获取第一集合的摘要和第二集合的摘要。若第一集合的摘要与第二集合的摘要相同,则不修复第一集合中的任一记录。若第一集合的摘要与第二集合的摘要不同,则获取第一集合中的异常记录的条数;然后,业务节点根据第一集合中的异常记录的条数,获取差错率。
在第一方面的第二种可能的实现方式中,第一集合是非样本集合;若差错率大于0小于第一阈值,则该方法还可以包括:获取第一集合的摘要和第二集合的摘要。
结合第一方面或第一方面的任一种可能的实现方式,在第一方面的第三种可能的实现方式中,该方法还可以包括:若差错率大于等于第一阈值,则根据数据库集群中的所有记录修复缓存集群中的所有记录。其中,业务节点将缓存集群中的所有记录都作为异常记录,能够节省确定缓存集群中的异常记录的时间,从而节省修复缓存集群中的异常记录的时间。
结合第一方面或第一方面的任一种可能的实现方式,在第一方面的第四种可能的实现方式中,该方法还可以包括:若差错率等于0,则减少样本组中的样本集合的个数;若差错率大于0,则增加样本组中的样本集合的个数。其中,若差错率等于0,则业务节点减少样本组中的样本集合的个数。这样,可以减少业务节点获取样本切片的开销。若差错率大于0,则业务节点增加样本组中的样本集合的个数。这样,业务节点在下一次获取样本集合的过程中,可以更加准确的确定差错率。
结合第一方面或第一方面的任一种可能的实现方式,在第一方面的第五种可能的实现方式中,第一集合包括M个子集合,每个子集合包括至少两条记录;第二集合包括M个子集合,第一集合中的第m个子集合的地址与第二集合中的第m个子集合的地址一一对应,M≥2,1≤m≤M,M和m均为整数;该情况下,业务节点根据第二集合修复第一集合中的异常记录,可以包括:获取第一子集合的摘要与第二子集合的摘要;其中,第一子集合是第一集合包括的M个子集合中的任一个子集合,第二子集合是第二集合中的与第一子集合的地址一一对应的子集合;若第一子集合的摘要与第二子集合的摘要不同,则确定第一子集合中的异常记录的地址,并根据第二子集合修复第一子集合中的异常记录。这样,业务节点通过对比第一集合的各子集合的摘要和第二节点中与该各子集合的地址一一对应的子集合的摘要,可以减少业务节点对比第一集合中的记录和第二集合中与该记录的地址之间存在对应关系的记录的次数,从而减少业务节点的开销。
结合第一方面,在第一方面的第六种可能的实现方式中,该方法还可以包括:若差错率等于0,则业务节点不修复缓存集群中的任一记录。
结合第一方面或第一方面的第五种可能的实现方式,在第一方面的第七种可能的实现方式中,该方法还可以包括:若差错率大于或等于第二阈值,则增加M的取值。若差错率大于0且小于第二阈值,则减少M的取值。其中,差错率大于或等于第二阈值,说明缓存集群包括较多异常记录,则增加M的取值,这样,业务节点可以减少缓存集群中除样本集合外的各集合分成的子集合的个数,减少业务节点对比缓存集群中的子集合的摘要和数据库集群中与该子集合的地址一一对应的子集合的摘要的次数,从而减少业务节点的开销。差错率大于0且小于第二阈值,说明缓存集群包括较少异常记录,这样,业务节点可以增加缓存集群中除样本集合外的各集合分成的子集合的个数,从而更加准确的确定异常记录。
第二方面,提供一种修复缓存集群中的数据的装置,该装置可以包括:获取模块和修复模块。获取模块,用于获取样本组,并根据样本组获取差错率。其中,样本组包括至少一个样本集合,样本集合包括缓存集群中的部分记录。差错率表示样本组中异常记录占样本组中所有记录的比例。异常记录是指与数据库集群中的参考记录不同的记录。异常记录的地址与参考记录的地址一一对应。修复模块,用于若差错率大于0小于第一阈值,则当缓存集群中的第一集合的摘要与数据库集群中的第二集合的摘要不同时,根据第二集合修复第一集合中的异常记录。其中,第一集合包括缓存集群中的部分记录,第一集合的地址与第二集合的地址一一对应。
在第二方面的第一种可能的实现方式中,第一集合是样本集合;获取模块具体用于,获取第一集合的摘要并第二集合的摘要,若第一集合的摘要和第二集合的摘要不同,则获取第一集合中的异常记录的条数;以及根据第一集合中的异常记录的条数,获取差错率。
在第二方面的第二种可能的实现方式中,第一集合是非样本集合;获取模块还用于,若差错率大于0小于第一阈值,则获取第一集合的摘要和第二集合的摘要。
结合第二方面或第二方面的任一种可能的实现方式,在第二方面的第三种可能的实现方式中,修复模块还用于,若差错率大于等于第一阈值,则根据数据库集群中的所有记录修复缓存集群中的所有记录。
结合第二方面或第二方面的任一种可能的实现方式,在第二方面的第四种可能的实现方式中,该装置还包括:增减模块,用于若差错率等于0,则减少样本组中的样本集合的个数。或,若差错率大于0,则增加样本组中的样本集合的个数。
结合第二方面或第二方面的任一种可能的实现方式,在第二方面的第五种可能的实现方式中,第一集合包括M个子集合,每个子集合包括至少两条记录;第二集合包括M个子集合,第一集合中的第m个子集合的地址与第二集合中的第m个子集合的地址一一对应,M≥2,1≤m≤M,M和m均为整数。获取模块具体用于,获取第一子集合的摘要与第二子集合的摘要;其中,第一子集合是第一集合包括的M个子集合中的任一个子集合,第二子集合是第二集合中的与第一子集合的地址一一对应的子集合。修复模块具体用于:若第一子集合的摘要与第二子集合的摘要不同,则根据第二子集合修复第一子集合中的异常记录,并确定第一子集合中的异常记录的地址。
结合第二方面,在第二方面的第六种可能的实现方式中,修复模块还用于,若差错率等于0,则不修复缓存集群中的任一记录。
结合第二方面的第七种可能的实现方式,在第二方面的第五种可能的实现方式中,该装置还包括:增减模块,用于若所以差错率大于或等于第二阈值,则增加M的取值。或,若差错率大于0且小于第二阈值,则减少M的取值。
第三方面,提供一种修复数据的装置,该装置可以实现上述第一方面提供的修复数据的方法示例中所执行的功能,所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个上述功能相应的模块。
在第三方面的一种可能的实现方式中,该装置的结构中包括处理器、***总线和通信接口;该处理器被配置为支持该装置执行上述方法中相应的功能。该通信接口用于支持该装置与其他网元(例如数据库集群)之间的通信。
第四方面,提供了一种计算机存储介质,存储有计算机程序代码,计算机程序代码包括指令,当业务节点的处理器执行指令时,业务节点执行如上述第一方面的修复数据的方法。
上述提供的任一种修复数据的装置或计算机存储介质用于执行上文所提供的修复数据的方法,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
附图说明
图1为现有技术中提供的一种***架构图;
图2为本发明实施例提供的一种修复缓存数据的方法流程示意图;
图3为本发明实施例提供的一种缓存集群中的集合与数据库集群中的集合的示意图;
图4为本发明实施例提供的一种修复第一集合中的记录的方法流程示意图;
图5为本发明实施例提供的一种缓存集群中的子集合与数据库集群中的子集合的示意图;
图6为本发明实施例提供的一种修复缓存数据的装置的结构示意图;
图7为本发明实施例提供的一种修复缓存数据的装置的结构示意图。
具体实施方式
本发明提供的实施例可以适用于如图1所示的***架构中,图1所示的***包括:缓存集群,数据库集群和业务集群。缓存集群包括多个缓存节点,数据库集群包括多个数据库节点,业务集群包括多个业务节点。业务集群中的每个业务节点可以与缓存集群中的一个或多个缓存节点之间进行通信,也可以与数据库集群的一个或多个数据库节点之间进行通信。
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行示例性描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
如图2所示,为本发明实施例提供的一种修复缓存数据的方法流程示意图,该方法可以应用于如图1所示的***架构中。该方法可以包括:
S101:业务节点获取缓存集群中的各样本集合中的记录,以及数据库集群中与该各样本集合的地址一一对应的集合中的记录。
缓存集群中存储有多条记录,每条记录具有一个地址。记录的地址可以是记录的标识(英文:identity,ID)。数据库集群中存储有多条记录,每条记录具有一个地址。缓存集群中每条记录的地址与数据库集群中的一条记录的地址一一对应。在本发明实施例中,业务节点可以将缓存集群中的记录分为至少两个集合,每个集合包括至少两条记录;并根据缓存集群中的记录的地址与数据库集群中的记录的地址对应关系,将数据库集群中的记录分为至少两个集合。
S101中的业务节点可以是业务集群中的任一业务节点。业务集群分为的多个集合可以包括样本集合和非样本集合。业务集群中的各样本集合构成的集合可以称为样本组。样本组中的样本集合用于确定缓存集群中的异常记录。其中,异常记录是指与数据库集群中的参考记录不同的记录;异常记录的地址与参考记录的地址一一对应。若样本组中的任一个样本集合包括异常记录,则认为缓存集群包括异常记录。若样本组中的各样本集合均不包括异常记录,则认为缓存集群不包括异常记录。缓存集群中任一集合均可以作为样本集合。样本组中的样本集合的个数越多,业务节点确定的缓存集群是否包括异常记录的结果越精确。
集合的地址,是指能够表示该集合中的所有记录的地址的信息。可选的,集合的地址可以是该集合中的所有记录的地址构成的集合。可选的,若集合中的记录的地址是连续的,则集合的地址可以用该集合中的记录的地址中的最小值和最大值表示,也可以理解为用起始地址和终止地址表示。
示例的,如图3所示,为缓存集群中的集合与数据库集群中的集合的示意图。假设业务节点获取的缓存集群中的集合分别为集合1、集合2和集合3;其中,业务节点获取的缓存集群中的各集合中的记录的地址是连续的;这样,业务节点获取的数据库集群中的集合分别为集合4、集合5和集合6。该情况下,集合1中的记录的地址包括ID1至ID5;集合2中的记录的地址包括ID6至ID10;集合3中的记录的地址包括ID11至ID15;集合4中的记录的地址包括ID1至ID5;集合5中的记录的地址包括ID6至ID10;集合6中的记录的地址包括ID11至ID15。
若样本集合包括多条记录,则业务节点获取缓存集群中的样本集合,可以通过以下任一种方式实现:
方式1:业务节点向缓存集群发送携带样本集合的地址的请求。缓存集群接收该请求,并根据该请求获取样本集合中的记录,然后向业务节点发送样本集合中的记录。业务节点接收缓存集群发送的样本集合中的记录。
示例的,若样本集合为集合{a1,a2,a3},样本集合的地址为集合{a1的地址,a2的地址,a3的地址};则业务节点向缓存集群发送的请求中可以携带集合{a1的地址,a2的地址,a3的地址},以获取a1,a2和a3。
方式2:业务节点按照以下步骤获取样本集合中的每条记录:业务节点向缓存集群发送携带样本集合中的一条记录的地址的请求。缓存集群接收该请求,并根据该请求获取该记录,然后向业务节点发送该记录。业务节点接收缓存集群发送的该记录。
示例的,若样本集合为集合{a1,a2,a3},则业务节点向缓存集群发送携带a1的地址的请求,以获取a1;向缓存集群发送携带a2的地址的请求,以获取a2;向缓存集群发送携带a3的地址的请求,以获取a3。
S102:业务节点获取样本组中的各样本集合的摘要,以及数据库集群中与该各样本集合的地址一一对应的集合的摘要。
业务节点可以通过对样本集合中的记录进行摘要运算,得到样本集合的摘要。若缓存集群中的记录的存储格式与数据库集群中的记录的存储格式不同,则在对数据库中的与各样本集合的地址一一对应的集合的摘要之前,可以先将数据库中的与各样本集合的地址一一对应的集合转化为缓存格式,然后对缓存格式的与各样本集合的地址一一对应的集合进行摘要运算。摘要运算可以包括但不限于消息摘要算法(英文:message digestalgorithm,MD)5,MD4等。
S103:业务节点对比样本组中的各样本集合摘要和数据库集群中与该各样本集合的地址一一对应的集合中的记录。
在一种可能的实现方式中,业务节点判断样本集合中的每条记录和数据库集群中与该样本集合的地址一一对应的集合的记录是否相同;若相同,则确定样本集合中不包括异常记录;若不同,则确定样本集合中的该包括异常记录,并记录样本集合中异常记录的地址。
在另一种可能的实现方式中,样本集合包括第一记录,数据库集群包括第二记录;其中,第一记录的地址和第二记录的地址之间存在对应关系。业务节点对第一记录进行哈希码运算,得到第一记录的哈希码值;对第二记录进行哈希码运算,得到第二记录的哈希码值。然后,对比第一记录的哈希码值和第二记录的哈希码值;若第一记录的哈希码值和第二记录的哈希码值相同,则确定第一记录不是异常记录;若第一记录的哈希码值和第二记录的哈希码值不相同,则确定第一记录是异常记录,并确定第一记录的地址。业务节点根据确定第一记录是否为异常记录的方法,确定第一集合中其他记录是否为异常记录。若第一集合包括异常记录,则记录异常记录的地址。由于记录的哈希码值长度小于记录的长度,因此,该可选的实现方式可以减少业务节点在确定样本集合中异常记录的地址的执行时间。
S104:业务节点获取差错率;其中,差错率表示样本组中异常记录占样本组中所有记录的比例。
若样本组中包括一个样本集合,则差错率可以表示为其中,w表示为差错率;a表示为样本集合中的异常记录的条数;b表示为样本集合中所有记录的条数。若样本组中包括多个样本集合,则差错率可以表示为其中,w表示为差错率;an表示为样本组中的第n个样本集合中的异常记录的条数,bn表示第n个样本集合中所有记录的条数,N表示样本组中的样本集合的个数,N为大于或等于1的整数。
若差错率为0,说明缓存集群中的不包括异常记录,则执行S105;若差错率大于0小于第一阈值,说明缓存集群中包括少量异常记录,则执行S106;若差错率大于或等于第一阈值,说明缓存集群中包括大量异常记录,则执行S109。第一阈值大于0,本发明实施例对第一阈值的具体取值不进行限定。
S105:业务节点不修复缓存集群中的任一记录。执行S105后,结束。
S106:业务节点修复样本组中的样本集合中的异常记录。
具体的,业务节点向数据库集群发送携带样本集合中异常记录的地址的请求。数据库集群接收业务节点发送的请求,并根据该请求向业务节点发送样本集合中异常记录。业务节点接收数据库集群发送的样本集合异常记录之后,向缓存集群发送携带样本集合中异常记录的请求,将样本集合中异常记录写入缓存集群。
示例的,假设样本集合包括记录a1,且a1为异常记录;那么,业务节点向数据库集群发送携带a1的地址的请求;数据库集群接收该请求,并根据该请求获取b1,其中,a1的地址与b1的地址之间存在对应关系,然后向业务节点发送b1。业务节点获取b1之后,向缓存集群发送携带b1的请求;缓存集群接收该请求,并根据该请求获取b1的地址,用b1覆盖a1。
S107:业务节点确定缓存集群中除样本集合之外的各集合(即非样本集合)中的异常记录的地址。
业务节点可以根据S103的示例中,确定样本集合中的异常记录的地址的方式,来确定缓存集群中除样本集合之外的各集合中的异常记录的地址。
S108:业务节点修复缓存集群中除样本集合之外的集合(即非样本集合)中的异常记录。执行S108之后,结束。
业务节点可以根据S106中,修复样本集合中的异常记录的方式,来修复缓存集群中非样本集合中的异常记录。
S109:业务节点修复缓存集群中所有集合中的所有记录。执行S109之后,结束。
业务节点获取数据库集群中所有集合中的所有记录,然后向缓存集群发送请求,来覆盖缓存集群中的所有记录。需要说明的是,差错率大于第一预设阈值,说明缓存集群中包括大量异常记录,该情况下,业务节点将缓存集群中的所有记录都作为异常记录,能够节省确定缓存集群中的异常记录的地址的时间,从而节省业务节点修复缓存集群中的异常记录的时间。
在一种可能的实现方式中,业务节点确定缓存集群中的集合(包括样本集合和非样本集合)中的异常记录的地址,可以包括:业务节点对比缓存集群中的一个集合的摘要与数据库集群中的与该集合的之间一一对应的集合的摘要,若不相同,说明缓存集群中该集合包括异常记录,则记录该集合中异常记录的地址,然后,对比缓存集群中的下一个集合的摘要和数据库集群的与该下一个集合的地址一一对应的集合的摘要;若相同,则对比缓存集群的下一个集合的摘要和数据库集群的与该下一个集合的地址一一对应的集合的摘要。依次类推,直至对比完缓存集群中所有集合的摘要和数据库集群的与该集合的地址之间一一对应的集合的摘要,从而确定缓存集群中每个集合是否包括异常记录,若缓存集群包括异常记录,则记录异常记录的地址。
该情况下,业务节点修复缓存集群中各集合中异常记录(例如S106和S108),可以包括:业务节点向数据库集群发送携带缓存集群中所有异常记录的地址的请求。数据库集群接收业务节点发送的请求,并根据该请求向业务节点发送缓存集群中所有异常记录。业务节点接收缓存集群中所有异常记录之后,向缓存集群发送携带缓存集群中所有异常记录的请求,将获取的缓存集群中所有异常记录写入缓存集群。这样,可以减少业务节点向数据库集群发送的获取与缓存集群中异常记录的地址一一对应的记录的请求,从而减少业务节点的开销。
本发明实施例提供的修复缓存数据的方法中,业务节点通过将缓存集群中的记录分为至少两个集合,并将数据库集群中的记录分为对应的至少两个集合;然后对比缓存集群中的集合的摘要和数据库集群中的与该集合对应的集合的摘要是否相同,若不同,说明缓存集群中的该集合包括异常记录,则确定第一集合中异常记录的地址,并修复第一集合中的异常记录。与现有技术相比,若缓存集群中的该集合与数据库集群该集合对应的集合的摘要相同,则可以不对比缓存集群中的该集合中的每条记录和数据库集群中的与该每条记录对应的记录的地址。因此,可以缩短业务节点确定缓存集群中的异常记录的执行时间,提升了***性能。
在一种可能的实现方式中,该方法还可以包括:根据差错率,调整样本组中的样本集合的个数,具体的:若差错率为0,说明缓存集群中的不包括异常记录,说明缓存集群中不包括异常记录,该情况下,业务节点可以减小样本组中的样本集合的个数。从而可以节省下一次利用样本组中的样本集合确定缓存集群中是否包括异常记录的时间。若差错率大于0,说明缓存集群中包括异常记录。该情况下,业务节点可以增加样本组中的样本集合的个数。从而可以在下一次确定的差错率的准确度。
在一种可能的实现方式中,第一集合是缓存集群中的任一个集合,第一集合可以是样本集合,也可以是非样本集合。第二集合是数据库集群中的与第一集合的地址之间存在对应关系的集合。该情况下,如图4所示,为本发明提供的一种修复第一集合中的记录的方法流程示意图。该方法可以包括以下步骤S201~S204:
S201:业务节点获取第一集合的各子集合和第二集合的各子集合。
业务节点可以将第一集合分成M个子集合,其中,M≥2,M是整数;每个子集合包括至少两条记录。相应的,业务节点可以将第二集合分成M个子集合。第一集合中的第m个集合的地址与第二集合中的第m个集合的地址之间存在对应关系,其中,1≤m≤M,m是整数。根据将第一集合分成M个子集合的方法,业务节点可以将缓存集群中的任一集合分成多个子集合。缓存集群中的不同集合分成的子集合的个数可以相同,也可以不同。不同的子集合中的记录的条数可以相同,也可以不同。
示例的,基于图3,如图5所示,为一种缓存集群中的子集合与数据库集群中的子集合的示意图。假设集合1为第一集合;由于集合4的地址与缓存集合1的地址一一对应,那么,集合4为第二集合。该情况下,业务节点将第一集合分为3个子集合,分别为:子集合1、子集合2和合子集合3。子集合1中的记录的地址包括ID1至ID2,子集合2中的记录的地址包括ID3至ID4,子集合3中的记录的地址包括ID5;这样,业务节点将第二集合分为3个子集合,分别为:子集合4、集合5和子集合6。子集合4中的记录的地址包括ID1至ID2,子集合5中的记录的地址包括ID3至ID4,子集合6中的记录的地址包括ID5。
S202:业务节点获取第一集合的各子集合的摘要,以及第二集合中与该各子集合的地址一一对应的子集合的摘要。
业务节点按照S102中,业务节点获取样本组中的各样本集合的摘要,来确定第一集合的各子集合的摘要,以及第二集合的各子集合的摘要。
S203:业务节点对比第一集合中的各子集合的摘要,以及第二集合中与该各子集合的地址一一对应的子集合的摘要。
第一集合包括第一子集合,第一子集合包括第一集合中的部分记录,第一子集为第一集合中的任一子集合;第二集合包括第二子集合,第二子集合包括第二集合中的部分记录;第一子集合的地址与第二子集合的地址一一对应。若第一子集合的摘要与第二子集合的摘要相同,说明第一子集合不包括异常记录,则业务节点不需要对比第一子集合中的各记录和第二子集合中与该各记录地址一一对应的记录。若第一子集合的摘要与第二子集合的摘要不相同,说明第一子集合包括异常记录,则业务节点对比第一子集合中的各记录和第二子集合中与该各记录地址一一对应的记录,来确定异常记录的地址。业务节点根据可以确定第一子集合中异常记录的地址的方式,来确定第一集合中除第一子集合之外的子集合中异常记录的地址。
S204:业务节点修复第一集合中的子集合中的异常记录。
具体的,业务节点根据S108中业务节点修复样本集合中的异常记录的方式,来修复第一集合中的子集合中的异常记录。
在一种可能的实现方式中,业务集群中的其他业务节点可以对缓存集群中的其他集合进行修复。其中,业务集群中的任一业务节点可以按照上述S201至S204的方法,对缓存集群中的集合中的记录进行修复。因此,在一次修复过程中,业务集群中的多个业务节点可以分别对缓存集群中不同的集合进行修复,这样,可以减少修复缓存集群中的异常记录的执行时间。其中,每个业务节点获取的缓存集群中的集合的个数不进行限定。
需要说明的是,若业务节点基于集合粒度从数据库集群或缓存集群中读取记录,则能够减少读取记录的次数,从而节省读取记录的时间;并且,若业务节点基于子集合粒度确定第一集合中是否存在异常记录,则业务节点不需要查找第一集合中的“与第二集合中的子集合的摘要相同的子集合”中是否包括异常记录,因此减少了业务节点确定缓存集群中的异常记录的地址的执行时间,提升了业务节点的***性能。
在一种可能的实现方式中,该方法还可以包括:当差错率小于第一阈值时,若差错率大于0小于第二阈值,其中,第二阈值小于第一阈值,说明缓存集群中的异常记录较少,则业务节点可以减少非样本集合分成的子集合的块数,从而减少对比子集合的摘要的次数,从而节省开销。若差错率大于等于第二阈值且小于第一阈值,说明缓存集群中的异常记录较多,则业务节点可以增加非样本集合分成的子集合的块数,从而增加对比子集合的摘要的次数,减少确定异常记录的地址使用的时间。
示例的,假设第一阈值为0.2,第二阈值为0.01;业务节点将样本集合分成的子集合的个数为8;业务节点获取的缓存集群的各集合包括24条记录。该情况下,若差错率大于0小于0.01,则业务节点可以将缓存集群中除样本集合外的各集合(即非样本集合)分成的6个子集合,各子集合包括4条记录。若差错率大于等于0.01且小于0.2,则业务节点可以将缓存集群中除样本集合外的各集合(即非样本集合)分成12个子集合,各子集合包括2条记录。
上述主要从业务节点的角度对本发明实施例提供的方案进行了介绍。可以理解的是,为了实现上述各个功能,业务节点包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本发明实施例可以根据上述方法示例对业务节点进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图6示出了一种修复缓存集群中的数据的装置6的结构示意图。该装置6可以包括:获取模块601、修复模块602。其中,获取模块601用于支持装置6执行图2中的S101、S102和S104,图4中的S201和S202,和/或用于本文所描述的技术的其它过程。修复模块602用于支持装置6执行图2中的S103至S109,图4中的S203和S204,和/或用于本文所描述的技术的其它过程。另外,装置6还可以包括:存储模块。存储模块用于存储装置6执行上文所提供的任一修复缓存数据的方法所对应的程序代码和数据。
如图7所示,为本发明实施例提供的一种修复数据的装置7的结构示意图。该装置7可以包括:存储器700、处理器701、通信接口702以及总线703;其中,存储器700、处理器701、通信接口702通过总线703相互连接。存储器700用于存储业务节点必要的程序指令和数据,该程序用于在装置7运行时,处理器701执行上文提供的任一种修复数据的方法。处理器701可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP)或者CPU和NP的组合。处理器701还可以进一步包括硬件芯片。上述硬件芯片可以是数字信号处理器(英文:digital signal processor),专用集成电路(英文:application-specific integrated circuit),现场可编程门阵列(英文:field programmable gatearray)或者其任意组合。其可以实现或执行结合本发明实施例所描述的各种示例性模块和电路。总线703可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
结合本发明公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理模块执行程序指令的方式来实现。程序指令可以被存放于非易失性存储器(英文:non-volatile memory),例如闪存、只读存储器(英文:read only memory)、可擦除可编程只读存储器(英文:erasable programmable ROM)、电可擦可编程只读存储器(英文:electrically EPROM)、寄存器、硬盘、移动硬盘、只读光盘(英文:CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (12)
1.一种修复数据的方法,其特征在于,应用于包括缓存集群和数据库集群的***中,所述方法包括:
获取样本组,其中,所述样本组包括至少一个样本集合,所述样本集合包括所述缓存集群中的部分记录;
根据所述样本组获取差错率,其中,所述差错率表示所述样本组中异常记录占所述样本组中所有记录的比例,所述异常记录是指与所述数据库集群中的参考记录不同的记录;所述异常记录的地址与所述参考记录的地址一一对应;
若所述差错率大于0小于第一阈值,则当所述缓存集群中的第一集合的摘要与所述数据库集群中的第二集合的摘要不同时,根据所述第二集合修复所述第一集合中的异常记录;其中,所述第一集合包括所述缓存集群中的部分记录,所述第一集合的地址与所述第二集合的地址一一对应。
2.根据权利要求1所述的方法,其特征在于,所述第一集合是样本集合;所述根据所述样本组获取差错率,包括:
获取所述第一集合的摘要和所述第二集合的摘要,若所述第一集合的摘要和所述第二集合的摘要不同,则获取所述第一集合中的异常记录的条数;
根据所述第一集合中的异常记录的条数,获取差错率。
3.根据权利要求1所述的方法,其特征在于,所述第一集合是非样本集合;若所述差错率大于0小于第一阈值,则所述方法还包括:
获取所述第一集合的摘要和所述第二集合的摘要。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:
若所述差错率大于等于所述第一阈值,则根据所述数据库集群中的所有记录修复所述缓存集群中的所有记录。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
若所述差错率等于0,则减少所述样本组中的样本集合的个数;
若所述差错率大于0,则增加所述样本组中的样本集合的个数。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述第一集合包括M个子集合,每个子集合包括至少两条记录;所述第二集合包括M个子集合,所述第一集合中的第m个子集合的地址与所述第二集合中的第m个子集合的地址一一对应,M≥2,1≤m≤M,M和m均为整数;
所述根据所述第二集合修复所述第一集合中的异常记录,包括:
获取第一子集合的摘要与第二子集合的摘要;其中,所述第一子集合是所述第一集合包括的M个子集合中的任一个子集合,所述第二子集合是所述第二集合中的与所述第一子集合的地址一一对应的子集合;
若所述第一子集合的摘要与所述第二子集合的摘要不同,则确定所述第一子集合中的异常记录的地址,并根据所述第二子集合修复所述第一子集合中的异常记录。
7.一种修复数据的装置,其特征在于,应用于包括缓存集群和数据库集群的***中,所述装置包括:
获取模块,用于获取样本组,并根据所述样本组获取差错率;其中,所述样本组包括至少一个样本集合,所述样本集合包括所述缓存集群中的部分记录;所述差错率表示所述样本组中异常记录占所述样本组中所有记录的比例,所述异常记录是指与所述数据库集群中的参考记录不同的记录;所述异常记录的地址与所述参考记录的地址一一对应;
修复模块,用于若所述差错率大于0小于第一阈值,则当所述缓存集群中的第一集合的摘要与所述数据库集群中的第二集合的摘要不同时,根据所述第二集合修复所述第一集合中的异常记录;其中,所述第一集合包括所述缓存集群中的部分记录,所述第一集合的地址与所述第二集合的地址一一对应。
8.根据权利要求7所述的装置,其特征在于,所述第一集合是样本集合;
所述获取模块具体用于,获取所述第一集合的摘要和所述第二集合的摘要,若所述第一集合的摘要和所述第二集合的摘要不同,则获取所述第一集合中的异常记录的条数;并根据所述第一集合中的异常记录的条数,获取差错率。
9.根据权利要求7所述的装置,其特征在于,所述第一集合是非样本集合;
所述获取模块还用于,若所述差错率大于0小于第一阈值,则获取所述第一集合的摘要和所述第二集合的摘要。
10.根据权利要求7至9任一项所述的装置,其特征在于,
所述修复模块还用于,若所述差错率大于等于所述第一阈值,则根据所述数据库集群中的所有记录修复所述缓存集群中的所有记录。
11.根据权利要求7至10任一项所述的装置,其特征在于,所述装置还包括:增减模块,用于若所述差错率等于0,则减少所述样本组中的样本集合的个数;若所述差错率大于0,则增加所述样本组中的样本集合的个数。
12.根据权利要求7至11任一项所述的装置,其特征在于,所述第一集合包括M个子集合,每个子集合包括至少两条记录;所述第二集合包括M个子集合,所述第一集合中的第m个子集合的地址与所述第二集合中的第m个子集合的地址一一对应,M≥2,1≤m≤M,M和m均为整数;
所述获取模块具体用于,获取第一子集合的摘要与第二子集合的摘要;其中,所述第一子集合是所述第一集合包括的M个子集合中的任一个子集合,所述第二子集合是所述第二集合中的与所述第一子集合的地址一一对应的子集合;
所述修复模块具体用于,若所述第一子集合的摘要与所述第二子集合的摘要不同,则确定所述第一子集合中的异常记录的地址,并根据所述第二子集合修复所述第一子集合中的异常记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611069108.1A CN108121618B (zh) | 2016-11-28 | 2016-11-28 | 一种修复数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611069108.1A CN108121618B (zh) | 2016-11-28 | 2016-11-28 | 一种修复数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108121618A true CN108121618A (zh) | 2018-06-05 |
CN108121618B CN108121618B (zh) | 2021-02-12 |
Family
ID=62225406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611069108.1A Active CN108121618B (zh) | 2016-11-28 | 2016-11-28 | 一种修复数据的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108121618B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111177513A (zh) * | 2019-12-31 | 2020-05-19 | 北京百度网讯科技有限公司 | 异常访问地址的确定方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102938001A (zh) * | 2012-12-10 | 2013-02-20 | 曙光信息产业(北京)有限公司 | 数据加载装置和数据加载方法 |
CN103078927A (zh) * | 2012-12-28 | 2013-05-01 | 合一网络技术(北京)有限公司 | 一种key-value数据分布式缓存***及其方法 |
CN103685575A (zh) * | 2014-01-06 | 2014-03-26 | 洪高颖 | 一种基于云架构的网站安全监控方法 |
CN104504147A (zh) * | 2015-01-04 | 2015-04-08 | 华为技术有限公司 | 一种数据库集群的资源协调方法、装置及*** |
US20160132535A1 (en) * | 2014-11-06 | 2016-05-12 | National Applied Research Laboratories | Acceleration method for database using index value operation and mixed-mode leveled cache |
CN105701219A (zh) * | 2016-01-14 | 2016-06-22 | 北京邮电大学 | 一种分布式缓存的实现方法 |
-
2016
- 2016-11-28 CN CN201611069108.1A patent/CN108121618B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102938001A (zh) * | 2012-12-10 | 2013-02-20 | 曙光信息产业(北京)有限公司 | 数据加载装置和数据加载方法 |
CN103078927A (zh) * | 2012-12-28 | 2013-05-01 | 合一网络技术(北京)有限公司 | 一种key-value数据分布式缓存***及其方法 |
CN103685575A (zh) * | 2014-01-06 | 2014-03-26 | 洪高颖 | 一种基于云架构的网站安全监控方法 |
US20160132535A1 (en) * | 2014-11-06 | 2016-05-12 | National Applied Research Laboratories | Acceleration method for database using index value operation and mixed-mode leveled cache |
CN104504147A (zh) * | 2015-01-04 | 2015-04-08 | 华为技术有限公司 | 一种数据库集群的资源协调方法、装置及*** |
CN105701219A (zh) * | 2016-01-14 | 2016-06-22 | 北京邮电大学 | 一种分布式缓存的实现方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111177513A (zh) * | 2019-12-31 | 2020-05-19 | 北京百度网讯科技有限公司 | 异常访问地址的确定方法、装置、电子设备及存储介质 |
CN111177513B (zh) * | 2019-12-31 | 2023-10-31 | 北京百度网讯科技有限公司 | 异常访问地址的确定方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108121618B (zh) | 2021-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108829344A (zh) | 数据存储方法、装置及存储介质 | |
CN112597153B (zh) | 一种基于区块链的数据存储方法、装置及存储介质 | |
CN105511957A (zh) | 用于生成作业告警的方法和*** | |
US9495286B2 (en) | Method and arrangement for completion or recovery of data transactions in a flash type memory device using a commit process | |
US10229023B2 (en) | Recovery of storage device in a redundant array of independent disk (RAID) or RAID-like array | |
CN111324303B (zh) | Ssd垃圾回收方法、装置、计算机设备及存储介质 | |
CN104731896A (zh) | 一种数据处理方法及*** | |
US11567912B1 (en) | Database segmentation | |
CN106407224A (zh) | 一种键值存储***中文件压实的方法和装置 | |
EP4390706A1 (en) | Embedded vector prefetching method, apparatus and system, and related device | |
CN107291392A (zh) | 一种固态硬盘及其读写方法 | |
CN107430546B (zh) | 一种文件更新方法及存储设备 | |
CN108121618A (zh) | 一种修复数据的方法和装置 | |
CN106325769A (zh) | 一种数据存储的方法及装置 | |
US20190332484A1 (en) | Method, device and program product for reducing data recovery time of storage system | |
CN112818007B (zh) | 数据处理方法、装置及可读存储介质 | |
CN110085284B (zh) | 一种面向ssd的基因对比方法及*** | |
CN104216666A (zh) | 一种管理磁盘数据写入的方法及装置 | |
CN115202589A (zh) | 放置组成员选择方法、装置、设备及可读存储介质 | |
CN107273423A (zh) | 多媒体消息数据处理方法、装置和*** | |
CN113468105A (zh) | 数据快照的数据结构、相关数据处理方法及装置和*** | |
EP2653972A1 (en) | Journal management system | |
CN101185056A (zh) | 数据流水线管理***和使用该***的方法 | |
CN105827681A (zh) | 一种san网络下备份数据传输方法 | |
CN106528452B (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 |