一种数据处理方法、装置及计算机可读存储介质与流程

文档序号:23349485发布日期:2020-12-18 16:53阅读:102来源:国知局
一种数据处理方法、装置及计算机可读存储介质与流程

本申请涉及计算机技术领域,尤其涉及一种数据处理方法、装置及计算机可读存储介质。



背景技术:

数据压缩是指在不丢失有用信息的前提下,缩减数据中的冗余数据以减小数据存储空间的方法,通过对数据进行压缩,可以有效地节省存储空间。

合并压缩是一种常见的压缩方式,是指先将多个数据块(block)合并成一个长的数据块,然后对合并后的数据块进行压缩。

一般来说,合并压缩的数据块的数目越多,数据的缩减比越高。但是,随着合并压缩的数据块的数目的增加,数据的压缩和解压开销随之增大,数据的读写性能会降低。因此,如何选择数据块进行合并压缩,以达到数据缩减比和系统开销之间的均衡,是亟待解决的问题。



技术实现要素:

本申请实施例提供一种数据处理方法、装置及计算机可读存储介质,用以实现存储系统的数据缩减比和系统开销之间的均衡。

第一方面,本申请实施例提供一种数据处理方法,包括:获取多个数据块;从所述多个数据块中至少确定出第一数据块和第二数据块,所述第一数据块具有第一哈希值,所述第二数据块具有第二哈希值,所述第一哈希值是根据设定的哈希算法对所述第一数据块进行计算获得的,所述第二哈希值是根据所述哈希算法对所述第二数据块进行计算获得的,所述第一哈希值和所述第二哈希值之间的差值小于设定的相似阈值;将所述第一数据块和所述第二数据块进行合并并压缩。

本实施方式中,在获取多个数据块后,通过比较各个数据块之间的哈希值的差值的方式间接地对这些数据块进行相似度的评估,进而从这些数据块中确定出满足相似度条件的数据块进行合并并压缩,如此便可使得经合并压缩的数据块都能够得到较优的数据缩减比,可以较好均衡存储系统的数据缩减比和系统开销之间的均衡。

为了提高方案的灵活性,在本申请实施例中,所述预设的哈希算法可以有多种实现方式,只要是满足哈希值越接近,对应数据块越相似的规律的哈希算法即可,比如,在一种可能的实现方式中,所述预设的哈希算法可以是局部敏感哈希算法。

进一步的,当所述设定的哈希算法具体为局部敏感哈希算法时,根据设定的哈希算法对所述第一数据块进行计算的具体实现方式可以包括:首先,将所述第一数据块切分为多个不同长度的子数据块;然后,计算所述多个不同长度的子数据块中每个子数据块的哈希值;最后,再将所述多个不同长度的子数据块的哈希值进行合并计算,得到所述第一数据块对应的局部敏感哈希值,将所述局部敏感哈希值作为所述第一哈希值。

本实施方式在计算局部敏感哈希值时,可以采用不定长分块技术将数据块进行更细粒度的切分,获得多个不同长度的子数据块,以避免数据块边界移动导致数据无法重删的问题。

为了提高方案的灵活性,在本申请实施例中,计算任意两个局部敏感哈希值之间的差值的方式可以有多种实现方式。比如,计算不同局部敏感哈希值的杰卡德距离、欧式距离或者汉明距离等,本申请实施例不做限制。

其中,当计算差值的方式不同时,对应的设定的相似阈值可以不同。比如:当差值计算方式为杰卡德距离时,所述第一哈希值和所述第二哈希值的杰卡德距离小于设定的第一距离阈值。又如:当差值计算方式为欧式距离时,所述第一哈希值和所述第二哈希值的欧式距离小于设定的第二距离阈值。再如:当差值计算方式为汉明距离时,所述第一哈希值和所述第二哈希值的汉明距离小于设定的第三距离阈值。采用以上三种实现方式计算任意两个局部敏感哈希值之间的差值,均可以很好地保证计算的准确性,进而保证方案的可靠性。

在一种可能的实施方式中,将所述第一数据块和所述第二数据块进行合并并压缩,可以是先将所述第一数据块和所述第二数据块进行合并,然后对合并后的数据块进行压缩,得到目标数据块。

在一种可能的实施方式中,在将所述第一数据块和所述第二数据块进行合并并压缩之后,可以在第一数据块或者第二数据块的元数据中添加合并压缩标识。比如,在所述第一数据块对应的元数据信息中添加第一合并压缩标识,用以指示所述第一数据块的压缩方式为合并压缩;比如,在所述第二数据块对应的元数据信息中添加第二合并压缩标识,用以指示所述第二数据块的压缩方式为合并压缩。这样,在读取合并压缩数据块时,可以就根据元数据中的合并压缩标识快速地确定使用合并压缩对应的解压方法对读取出的合并压缩数据块进行解压,从而提高数据读取效率。

在一种可能的实施方式中,在将所述第一数据块和所述第二数据块进行合并并压缩之后,还可以在第一数据块或者第二数据块的元数据中添加位置标识。比如,在所述第一数据块对应的元数据信息中添加第一位置标识,用以指示所述第一数据块在所述目标数据块中的位置;比如,在所述第二数据块对应的元数据信息中添加第二位置标识,用以指示所述第二数据块在所述目标数据块中的位置。这样,在解压了合并压缩数据块后,可以根据各数据块对应的位置标识确定各数据块在该合并压缩数据块中的位置(比如根据第一位置标识确定第一数据块为合并压缩的第一个数据块),进一步提高数据读取效率。

在一种可能的实施方式中,在将所述第一数据块和所述第二数据块进行合并并压缩之前,还可以执行判断若将所述第一数据块和所述第二数据块进行合并并压缩后,得到的目标数据块对应的数据缩减比是否达到设定的缩减比阈值的步骤。只有在确定该目标数据块对应的数据缩减比达到设定的缩减比阈值时,才将所述第一数据块和所述第二数据块进行合并并压缩;如果该目标数据块对应的数据缩减比不能该达到设定的缩减比阈值,则可以放弃对第一数据块和第二数据块进行合并并压缩,而采用普通压缩算法对第一数据块和第二数据块分别进行单独压缩。如此,可以较好地保证参与合并压缩的数据块都能够得到较高的数据缩减比。

第二方面,本申请实施例提供一种数据处理装置,包括通信接口和处理器,其中,所述处理器,用于通过通信接口获取多个数据块;从所述多个数据块中至少确定出第一数据块和第二数据块,所述第一数据块具有第一哈希值,所述第二数据块具有第二哈希值,所述第一哈希值是根据设定的哈希算法对所述第一数据块进行计算获得的,所述第二哈希值是根据所述哈希算法对所述第二数据块进行计算获得的,所述第一哈希值和所述第二哈希值之间的差值小于设定的相似阈值;将所述第一数据块和所述第二数据块进行合并并压缩。通过本实施例提供的数据处理装置压缩数据,可使得经合并压缩的数据块都能够得到较优数据缩减比,可以较好均衡存储系统数据缩减比和系统开销之间的均衡。

为了提高方案的灵活性,在本申请实施例中,所述预设的哈希算法可以有多种实现方式,只要是满足哈希值越接近,对应数据块越相似的规律的哈希算法即可,比如,在一种可能的实现方式中,所述预设的哈希算法可以是局部敏感哈希算法。

在一种可能的实施方式中,所述处理器在根据设定的哈希算法对所述第一数据块进行计算时,具体可以是先将所述第一数据块切分为多个不同长度的子数据块;然后计算所述多个不同长度的子数据块中每个子数据块的哈希值;最后将所述多个不同长度的子数据块的哈希值进行合并计算,得到所述第一数据块对应的局部敏感哈希值,将所述局部敏感哈希值作为所述第一哈希值。

在本申请实施例中,所述处理器计算任意两个局部敏感哈希值之间的差值的方式可以有多种实现方式。当计算差值的方式不同时,对应的设定的相似阈值可以不同。比如,所述处理器使用杰卡德距离计算任意两个局部敏感哈希值之间的差值时,所述第一哈希值和所述第二哈希值之间的差值小于设定的第一距离阈值;又如,所述处理器使用欧式距离计算任意两个局部敏感哈希值之间的差值时,所述第一哈希值和所述第二哈希值的欧式距离小于设定的第二距离阈值;再如,所述处理器使用汉明距离计算任意两个局部敏感哈希值之间的差值时,所述第一哈希值和所述第二哈希值的汉明距离小于设定的第三距离阈值。

在一种可能的实施方式中,所述处理器在将所述第一数据块和所述第二数据块进行合并并压缩时,具体可以是先将所述第一数据块和所述第二数据块进行合并,然后对合并后的数据块进行压缩,得到目标数据块。

进一步的,所述处理器在将所述第一数据块和所述第二数据块进行合并并压缩之后,所述处理器还可以在所述第一数据块对应的元数据信息中添加第一合并压缩标识,用以指示所述第一数据块的压缩方式为合并压缩;还可以在所述第二数据块对应的元数据信息中添加第二合并压缩标识,用以指示所述第二数据块的压缩方式为合并压缩。

进一步的,所述处理器在将所述第一数据块和所述第二数据块进行合并并压缩之后,所述处理器还可以在所述第一数据块对应的元数据信息中添加第一位置标识,用以指示所述第一数据块在所述目标数据块中的位置;还可以在所述第二数据块对应的元数据信息中添加第二位置标识,用以指示所述第二数据块在所述目标数据块中的位置。

另外,所述处理器在将所述第一数据块和所述第二数据块进行合并并压缩之前,还可以确定所述第一数据块和所述第二数据块进行合并并压缩后,得到的目标数据块对应的数据缩减比达到设定的缩减比阈值。也即,所述处理器可以是只有在确定该目标数据块对应的数据缩减比达到设定的缩减比阈值时,才将所述第一数据块和所述第二数据块进行合并并压缩,如此,可以更好地保证参与合并压缩的数据块都能够得到较高的数据缩减比。

第三方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可以实现本申请上述第一方面或第一方面任一种可能的实施方式中描述的方法。

第四方面,本申请实施例还提供一种计算机程序产品,当该程序产品被计算机执行时,可以使得计算机执行本申请上述第一方面或第一方面任一种可能的实施方式中描述的方法。

第五方面,本申请实施例还提供一种芯片,所述芯片与存储器耦合,用于调用执行所述存储器中存储的计算机程序,以执行本申请上述第一方面或第一方面任一种可能的实施方式中描述的方法。

附图说明

图1为本申请实施例中合并压缩方案的示意图;

图2本申请实施例中delta压缩方案的示意图;

图3a本申请实施例可以应用的一种存储系统的结构示意图;

图3b本申请实施例可以应用的另一种存储系统的结构示意图;

图4为本申请实施例中一种可能的数据处理方法的流程图;

图5为本申请实施例所提供的局部敏感哈希算法的计算过程示意图;

图6为本申请实施例中将数据块的局部敏感哈希值拆分为多个特征向量的示意图;

图7a至图7d为本申请实施例中局部敏感哈希森林的结构示意图;

图8为本申请实施例中多个数据块的元数据信息的存储结构示意图;

图9为本申请实施例中一个数据块对应的元数据信息的示意图;

图10为本申请实施例中一种可能的数据处理装置的结构示意图;

图11为本申请实施例中另一种可能的数据处理装置的结构示意图。

具体实施方式

为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合说明书附图以及具体的实施方式对本申请实施例中的技术方案进行详细的说明。

大数据时代,存储系统存储的数据量成爆炸式增长,由于存储系统中的存储空间有限,为了保证存储系统的存储性能,可以通过压缩技术来缩减数据中的冗余数据以节省数据存储空间。对数据块进行压缩的方案主要有以下三种:

第1种:单独压缩。

即对每个数据块分别进行单独压缩,每个数据块都对应一个压缩后的数据块。一般来说,单独压缩获得的数据缩减比效果取决于压缩时使用的压缩算法,通过对数据块采用更深度的压缩算法(如zstandard、霍夫曼编码、算术编码等),能够获得比普通压缩(比如lz编码)算法更好的数据缩减比效果。但是,相比普通压缩算法,采用深度压缩算法会带来中央处理器(centralprocessingunit,cpu)开销增加、压缩和解压时延增加、前台读输入/输出(input/output,io)性能下降等问题。在主要考虑数据缩减比,如备份归档应用场景下,用户对cpu开销、io时延不敏感,可以通过提升压缩算法的深度来满足用户需求,但是针对数据库、金融、大数据分析等对性能敏感的场景,通过降低性能来提升数据缩减比是客户不能容忍的,会对关键业务的性能产生负面影响,因此仅调整压缩算法的深度只能解决部分场景的数据缩减比问题,无法覆盖绝大部分场景。

第2种:合并压缩。

由于压缩算法并未限定输入数据块的数据长度,因此可以通过将多个定长数据块进行合并成一个长的数据块后进行压缩,这种压缩方案可以在不改变算法本身的情况下达到数据缩减比提升的效果。

例如,如图1所示,假设有8个数据块,且每个数据块的数据长度均为8k,以合并的数据块的数量为2为例,不同数据块合并压缩后的数据长度可能不同。比如图1中从左至右第1个数据块和第2个数据块合并压缩后的数据块长度为6k,第3个数据块和第4个数据块合并压缩后的数据块长度为12k,第5个数据块和第6个数据块合并压缩后的数据块长度为8k,第7个数据块和第8个数据块合并压缩后的数据块长度为8k。当然,以上只是一种举例,在具体实施过程中合并压缩的数据块还可以是更多数量的数据块,本申请实施例对此不做具体限制。

在合并压缩方案中,随着合并压缩的数据块的数目增加,数据缩减比效果也会随之提升;但是,随着合并压缩的数据块的数目的增加,数据的压缩和解压开销随之增大,数据的读写性能会降低。

第3种:增量(delta)压缩。

通过提取多个数据块相同的部分作为基准(base)数据块,将不同的部分以增量(delta)的形式附加在base数据块上,利用base+delta的存储方式可以反向恢复原始数据块。这样,多个数据块的相同的部分只需要保存一个即可(即base数据块),提高了数据缩减比效果。例如,如图2所示,假设有8个数据块,且每个数据块的数据长度均为8k,delta压缩后的数据块长度为24k。

在delta压缩方案中,需要寻找多个数据块之间相同的字块作为base块,但是在实际应用中,满足该条件的场景并非常见,该方案对数据集特征有一定的依赖性,如果满足条件的base块数目较少,则相比传统的单独压缩方案,在数据缩减比上提升效果有限;另外,新写入系统的数据流经过数据块切分后,均需要与系统中已有的所有base块进行比对并判定是否满足delta压缩条件,增加了系统cpu计算和判断开销。

通过以上压缩方案分析可知,若要追求高数据缩减比,就需要牺牲较大的系统的性能开销,若要节省系统开销、提升数据读写性能,那么数据的缩减比就难以提升。鉴于此,本申请实施例提出在压缩数据时,灵活调整存储系统数据缩减比和系统开销之间的均衡。在该方法中,在获取了需要进行压缩处理的多个数据块后,先通过数据块的哈希值间接地对这些数据块进行相似度的评估,从这些数据块中确定出满足相似度条件的数据块,比如确定出第一数据块和第二数据块(其中第一数据块具有第一哈希值,第二数据块具有第二哈希值,第一哈希值是根据设定的哈希算法对第一数据块进行计算获得的,第二哈希值是根据哈希算法对第二数据块进行计算获得的,第一哈希值和第二哈希值之间的差值小于设定的相似阈值),然后再将确定出的数据块进行合并并压缩,使得经合并压缩的数据块都能够得到较优数据缩减比,而对于其他的数据块则采用普通压缩方式,以此降低系统的开销。可以实现存储系统自动根据数据块的相似度灵活地调整合并压缩的数据块数目的技术效果,进而实现存储系统数据缩减比和系统开销之间的均衡。

本申请实施例中的技术方案可以应用于多种存储系统,比如单个计算机中的存储系统,比如由多台计算机组成的分布式存储系统或集中式存储系统等,本申请实施例对此不做具体限制。

图3a示出了本申请实施例可以应用的一种存储系统。如图3a所示,该存储系统包括一个控制器301以及用于存储数据的至少一个硬盘302。图3a中示出了3个硬盘,即硬盘1、硬盘2以及硬盘3,在实际应用中,存储系统中硬盘的数量可以比3个更少或者比3个更多,本申请实施例对此不做限制。其中,硬盘302可以为固态硬盘(solidstatedisk,ssd)、磁盘或者混合硬盘等。当该存储系统具有多个硬盘302时,不同的硬盘302可以位于同一个存储节点上,也可以位于多个不同的存储节点上,本申请实施对此不做具体限制。控制器301可以为cpu、特定应用集成电路(application-specificintegratedcircuit,asic)或者现场可编程门阵列(field-programmablegatearray,fpga)等。控制器301可以接收外部的输入/输出(i/o)请求,并响应请求将数据写入硬盘302的存储介质中或者从硬盘302的存储介质中读取数据等。

图3b示出了本申请实施例可以应用的另一种存储系统。与图3a所示的架构不同的是,在图3b所示的架构中包括多个控制器301,例如控制器a和控制器b,控制器a和控制器b之间可以进行通信,这样,当该存储系统中的某一个控制器301发生故障时,该存储系统仍然可以通过其他的控制器301为与该存储系统交互的其他设备(例如客户端)提供服务。

当然,存储系统中还可以包括其他的设备,例如主机、服务器等,本申请实施例描述的存储系统是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,应理解,随着存储技术和存储系统架构的演变,本申请实施例提供的技术方案对于类似的技术问题,同样适用。

以下,先对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。

1)数据块:对于存储系统而言,数据可以以数据流的形式进入系统并持久化。为了更高效地对数据进行组织、分析、管理以及保存,并最大限度地利用分布式技术、并行技术等提高数据的处理性能,可以对进入存储系统的数据流按照预设的规则进行切分,将一个数据流划分为多个数据块。其中,对数据流进行划分可以采用定长分块方式也可以采用变长分块方式。定长分块方式中,数据块的容量均为预设容量,即划分得到的各个数据块的数据长度均为同一固定长度,通过定长分块方式得到的数据块称为定长数据块;变长分块方式中,数据块的容量可以有多种容量,即划分得到的各个数据块的数据长度可以不同,通过变长分块方式得到的数据块称为变长数据块或不定长数据块。本申请实施例中的数据处理方案可以应用于定长数据块的数据处理,也可以应用于变长数据块的数据处理,本申请实施例对此不做限制。由于大多数存储系统一般都以定长数据块的形式来存储数据,因此在本文后文中,主要以定长数据块例对本申请实施例中的技术方案进行详细说明。

2)压缩:是指通过采用特殊编码方式将数据信息中存在的重复度、冗余度等有效地降低,从而达到数据量减少的目的。按照压缩效果,压缩可分为无损压缩和有损压缩两种类型。无损压缩方式中,能够无失真地从压缩后的数据重构,准确地还原数据;有损压缩方式中,压缩后的数据有失真,不能完全准确地恢复原始数据,重构的数据只是原始数据的一个近似。本申请实施例中的技术方案主要考虑无损压缩,即压缩后的数据块经过解压后,能够恢复成压缩前的数据块。

3)在本申请的描述中,“多个”是指两个或两个以上,也可以将“多个”理解为“至少两个”。“至少一个”,可理解为一个或多个,例如理解为一个、两个或更多个,包括至少一个,是指包括一个、两个或更多个,而且不限制包括的是哪几个,例如,包括a、b和c中的至少一个,那么包括的可以是a、b、c、a和b、a和c、b和c、或a和b和c。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,单独存在b,同时存在a和b这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。

4)除非有相反的说明,本申请中提及“第一”、“第二”等序数词用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。

此外,本申请实施例和权利要求书及附图中的术语“包括”和“具有”不是排他的。例如,包括了一系列步骤或模块的过程、方法、系统、产品或设备,不限定于已列出的步骤或模块,还可以包括没有列出的步骤或模块。

请参见图4,为本申请实施例所提供的数据处理方法的流程图。在下面的介绍中,以该方法应用在图3a所示的存储系统中为例,也就是说,该方法可以由图3a所示的存储系统中的控制器执行。

s401、存储系统的控制器获取多个数据块。

具体的,存储系统的控制器获取最新一批数据块的地址空间,其中最新一批数据块是指未经过压缩处理的数据块;基于地址空间读取数据块,控制器每次读取多个数据块,每次读取完后对读取到的多个数据块执行步骤s402,在对该次读取的数据块执行完步骤s402后,再进行下一次的读取。

在本申请实施中,控制器每次读取的数据块数量可以相同,也可以不同,本申请实施例不做具体限制。

s402、存储系统的控制器从获取到的多个数据块中至少确定出第一数据块和第二数据块;其中,第一数据块具有第一哈希值,第二数据块具有第二哈希值,第一哈希值是根据设定的哈希算法对第一数据块进行计算获得的,第二哈希值是根据该预设的哈希算法对第二数据块进行计算获得的,第一哈希值和第二哈希值之间的差值小于设定的相似阈值。

具体的,存储系统的控制器在获取多个数据块之后,采用设定的哈希算法对该多个数据块中的每个数据块进行哈希计算,得到每个数据块对应的哈希值;然后判断所述多个数据块中是否存在至少两个数据块满足如下条件:该至少两个数据块中任意两个数据块对应的哈希值之间的差值小于预设的相似阈值;若存在这样的至少两个数据块,则执行步骤s403;否则,转至继续执行步骤s401。

作为一种可选的实施方式,在本申请实施例中,每次确定出的数据块的数量可以为预设值。本申请实施例可以根据应用场景设定需要确定该预设值的大小。比如,在要求高数据缩减比的场景下可以将该预设值设定地较大,如设定为4、5、7等,在要求低cpu开销的场景下可以将该预设值设定地较小,如设定为2或3。本申请实施例对该预设值的具体取值不做具体限制。在本文接下来的描述中,以预设值为2为例,且以确定出的数据块分别为第一数据块和第二数据块为例,对本申请实施例技术方案进行详细介绍。

在本申请实施中,预设的哈希算法可以有多种实现方式,只要是满足哈希值越接近,对应数据块越相似的规律的哈希算法即可,本申请实施例不做具体限制。下面以预设的哈希算法为局部敏感哈希(locality-sensitivehashing,lsh)算法为例,对步骤s402的具体实现方式进行详细说明:

(1)计算每一个数据块的局部敏感哈希值(min-hash)。

请参见图5,以第一数据块data_a为例。首先,将第一数据块data_a切分为多个不同长度的子数据块,其中,切分得到的子数据块的数量可以为大于等于2的任意正整数,本申请实施例对此不做具体限制。比如,图5所示,将数据块切分为a1、a2、a3、a4四个不定长子数据块。然后,计算多个不同长度的子数据块中每个子数据块的哈希值。此处计算每个子数据块的哈希值所采用的哈希算法可以有多种实现方式,比如md5算法、sha1算法等,本申请实施例对此不做具体限制。比如图5所示,采用md5算法计算得到a1、a2、a3、a4四个子数据块的哈希值为别为hash_1、hash_2、hash_3、hash_4。最后,将多个不同长度的子数据块的哈希值进行合并计算,得到第一数据块data_a对应的局部敏感哈希值min-hash_a。

应理解,对于其他数据块的局部敏感哈希值的计算过程,与数据块data_a的局部敏感哈希值的计算过程类似,此处不再赘述。

(2)计算该多个数据块中任意两个数据块对应的局部敏感哈希值之间的差值,从所述多个中确定出局部敏感哈希值差值小于预设的相似阈值的两个数据块,确定出的数据块即为第一数据块和第二数据块。

在本申请实施中,计算任意两个局部敏感哈希值之间的差值的方式可以有多种实现方式,比如可以通过计算不同局部敏感哈希值的杰卡德(jaccard)距离、欧式距离或者汉明距离等方式来实现,本申请实施例不做具体限制。当差值计算方式为杰卡德距离时,确定出的第一数据块和第二数据块对应的哈希值的杰卡德距离小于设定的第一距离阈值;当差值计算方式为欧式距离时,确定出的第一数据块和第二数据块对应的哈希值的欧式距离小于设定的第二距离阈值;当差值计算方式为汉明距离时,确定出的第一数据块和第二数据块对应的哈希值的汉明距离小于设定的第三距离阈值。

下面,以杰卡德距离为例进行详细说明。

在得到第一数据块data_a的局部敏感哈希值min-hash_a后,将minhasha切分成m个特征向量,然后将每个特征向量分别存入对应的局部敏感哈希树(lshtree)中,m个lshtree组成一个局部敏感哈希森林(lshforest)。

以m=8为例,如图6所示,将min-hash_a拆分为8个特征向量:h0、h1、h2、h3、h4、h5、h6、h7,并将h0存入lshtree0、将h1存入lshtree1、将h2存入lshtree2、将h3存入lshtree3、将h4存入lshtree4、将h5存入lshtree5、将h6存入lshtree6、将h7存入lshtree7。对于其他的数据块的局部敏感哈希值也是同局部敏感哈希值min-hash_a同样的方式进行处理,此处不再赘述。

图7a至图7d为lshtree0至lshtree7示意图,在图7a至图7d所示的实施例中,全局的8个lshtree组成一个lshforest。每棵树的每一层具有相同向量维度,位于子节点的特征向量的前若干位的值与父节点上的特征向量的值相同,兄弟节点上的特征向量仅最后一位不同。

如图7a至图7d所示,lshforest中已存有数据块b、数据块c、数据块d、数据块e以及数据块f对应的局部敏感哈希值。在将第一数据块data_a的局部敏感哈希值min-hash_a存入lshforest后,在lshforest中为min-hash_a对应的各个特征向量所在的节点(即(a,hx),其中x=0,1,2,…,7)寻找最近的子节点、兄弟节点和父节点,根据树的结构,这些节点上的特征向量与min-hash_a的特征向量最相似;然后确定距离min-hash_a对应的各个特征向量所在节点最近的所有节点中,特征向量出现次数超过预定次数的一个局部敏感哈希值,确定该局部敏感哈希值对应的数据块即为第二数据块。

例如,在lshtree0中寻找得到离a最近的b,然后在lshtree1中寻找得到离a最近的b、f、d,直到找遍lshforest中的所有lshtree位置。图7a至图7d所示的实施例中,b出现8次、d出现3次、f出现4次、c出现1次,假设预定次数为5,则只有数据块b满足,则确定数据块b为第二数据块。在一些可能的实施例中,可能存在多个数据块的重复次数均超过该预定次数的情况,比如假设预定次数为2,则数据块b、d、f都满足,则可以进一步从数据块b、d、f中确定出重复次数最高的数据块,即数据块b,将其确定第二数据块。

s403、将第一数据块和第二数据块进行合并并压缩。

具体的,存储系统中的控制器先将第一数据块和第二数据块合并成一个长的数据块,然后再对合并后的数据块进行压缩,获得压缩后的目标数据块。其中,对合并后的数据块采用的压缩算法可以是多种实现方式,比如zstandard、霍夫曼编码、算术编码等,本申请实施例对此不做具体限制。

作为一种可选的实施方式,在本申请实施中,在存储系统的控制器将第一数据块和第二数据块进行合并并压缩之前,该方法还可以包括:确定第一数据块和第二数据块进行合并并压缩后,得到的目标数据块对应的数据缩减比达到设定的缩减比阈值,比如缩减比达到50%(即目标数据块的数据量小于或者等于第一数据块和第二数据块的数据块总量的一半)。如果该目标数据块对应的数据缩减比不能该达到设定的缩减比阈值,则可以放弃对第一数据块和第二数据块进行合并并压缩,而采用普通压缩算法对第一数据块和第二数据块分别进行单独压缩。虽然一般来说,数据块的相似度越高,合并压缩后的数据缩减比越高,但在实际应用时也可能存在一些意外情况导致合并压缩后的数据缩减比较低,比如参与压缩的第一数据块和第二数据块是已经压缩后的数据块,那么相似度两者的相似度再高,但也不能再次压缩。本实施方式通过对数据缩减比进行预判之后再确定合并压缩,可以更好地保证参与合并压缩的数据块都能够得到较高的数据缩减比。

进一步的,存储系统的控制器在得到合并压缩的目标数据块之后,还可以将该目标数据块写入存储介质,并更新第一数据块和第二数据块对应的元数据(meta_info)信息。

在具体实施时,如果合并压缩后的目标数据块的数据长度超过存储粒度(比如存储系统的存储粒度8k),则可以将该目标数据块按照粒度单位拆分为若干粒度,并在每一段数据结尾增加标记,标识拆分后的接续数据块地址。如果合并压缩后的目标数据块的数据长度不足存储粒度,则可以对目标数据块进行末尾补0处理。

在申请实施例中,需要更新的元数据信息可以包括目标数据块的物理地址(包括起始物理地址和数据偏移)、合并压缩标识、位置标识等。

比如,可以在第一数据块对应的元数据信息中添加第一合并压缩标识,用以指示第一数据块的压缩方式为合并压缩,以及在第二数据块对应的元数据信息中添加第二合并压缩标识,用以指示第二数据块的压缩方式为合并压缩;还可以在第一数据块对应的元数据信息中添加第一位置标识,用以指示第一数据块在目标数据块中的位置,以及在第二数据块对应的元数据信息中添加第二位置标识,用以指示第二数据块在目标数据块中的位置。

相应的,第一数据块对应的更新后的元数据信息可以包括第一数据块的元数据id、目标数据块的物理地址、第一位置标识以及第一合并压缩标识;第二数据块对应的更新后的元数据信息可以包括第二数据块的元数据id、目标数据块的物理地址、第二位置标识以及第二合并压缩标识。

在具体实施过程中,合并压缩标识或位置标识可以通过元数据信息中的预定义的字段上的值来指示。例如,将第一数据块和对应的元数据信息上的第一预设字段上的值设置为“1”,用来指示第一数据块的压缩方式为合并压缩,以及将第二数据块和对应的元数据信息上的第一预设字段上的值设置为“1”,用来指示第而数据块的压缩方式为合并压缩,如果有数据块未采用合并压缩方式,则其对应的元数据信息的第一预设字段上的值为“0”。例如,将第一数据块对应的元数据信息上的第二预设字段上的值设置为“0”,用来指示第一数据块是合并后的数据块中的第一个数据块,将第二数据块对应的元数据信息上的第二预设字段上的值设置为“1”,用来指示第二数据块是合并后的数据块中的第二个数据块。当然,在具体实施时,第一预设字段和第二预设字段的字段长度、值的定义方式还可以有其它实现方式,本申请实施例对此不做限制。

在本申请实施例中,上述数据处理流程可以是通过定时器来触发,或者是存储空间中新数据量达到阈值来触发,本申请实施例对此不做限制。

以上介绍了本申请技术方案中的数据压缩的过程,接下来介绍对应数据解压实施例。

(1)存储系统的控制器接收到用户发起的读请求,该请求中包含了应用程序需要获取数据块的逻辑地址(logicalblockaddress,lba),比如lba5。

(2)存储系统的控制器在收到该读请求后,根据该读请求中的逻辑块地址lba5在元数据树(meta_info_tree)到对应的元数据信息meta_info。其中,meta_info_tree是一个专门维护逻辑地址和物理地址的树结构,该树结构的每个叶子节点包含一个meta_info。

如图8示,每个meta_info对应为一个数据块的元数据信息,里面包含了该数据块的元数据身份标识号(identity,id)、物理地址(包括起始物理地址和偏移地址)、合并压缩标记以及位置标记,如图9所示。

(3)存储系统的控制器在lba5对应的meta_info中确定该数据块的合并压缩标识所在字段的值是否为指示压缩方式为合并压缩的值(假设“1”为指示合并压缩方式),若是,则进入步骤(4);否则,说明没有采用合并压缩,进入其它解压流程,比如单独压缩对应的解压流程。

(4)存储系统的控制器在lba5对应的meta_info中获取物理地址(该物理地址即为此次请求的数据块所在合并压缩数据块的物理地址),通过该物理地址从存储介质上取出对应的合并压缩数据块。其中,读取的方式可以是一次一次地读,每次读出指定大小的数据,例如8k。

(5)存储系统的控制器使用合并压缩对应的解压方法对读取出的合并压缩数据块进行解压;在lba5对应的meta_info中获取位置标识,根据获得的位置标识确定此次请求的数据块在该合并压缩数据块中的位置(比如为合并压缩的第一个数据块),进而读取到该数据块,并响应用户的读请求,返回该数据块。

在本申请实施例技术方案中,储存系统在获取了需要进行压缩处理的多个数据块后,先通过对各个数据块采用预设的哈希算法计算出哈希值,然后通过比较各个数据块之间的哈希值的差值的方式间接地对这些数据块进行相似度的评估(其中差值越小,相似度越高),进而从这些数据块中确定出满足相似度条件数据块进行合并并压缩,使得经合并压缩的数据块都能够得到较优数据缩减比,而对于其他数据块则采用普通压缩方式,以此尽可能地降低系统的压缩和解压开销。本申请实施例技术方案中存储系统可以自动根据数据块的相似度灵活地调整合并压缩的数据块数目,可以较好均衡存储系统的数据缩减比和系统开销之间的均衡。

不仅如此,本申请实施例技术方案使用局部敏感哈希算法对各个数据块进行计算,利用lshforest的数据结构在数据集中查找满足相似度条件的数据块,可以提高相似数据块的查找效率。在计算局部敏感哈希值时,采用不定长分块技术将数据块进行更细粒度的切分,获得多个不同长度的子数据块,可以解决数据块边界移动导致的数据无法重删的问题。

请参见图10,基于同一技术构思,本申请实施例还提供一种数据处理装置100,包括通信接口1001和处理器1002,其中,所述处理器1002用于通过所述通信接口1001获取多个数据块;从所述多个数据块中至少确定出第一数据块和第二数据块,所述第一数据块具有第一哈希值,所述第二数据块具有第二哈希值,所述第一哈希值是根据设定的哈希算法对所述第一数据块进行计算获得的,所述第二哈希值是根据所述哈希算法对所述第二数据块进行计算获得的,所述第一哈希值和所述第二哈希值之间的差值小于设定的相似阈值;将所述第一数据块和所述第二数据块进行合并并压缩。通过本实施例提供的数据处理装置100来执行压缩数据,可使得经合并压缩的数据块都能够得到较优数据缩减比,可以较好均衡存储系统数据缩减比和系统开销之间的均衡。

为了提高方案的灵活性,在本申请实施例中,所述预设的哈希算法可以有多种实现方式,只要是满足哈希值越接近,对应数据块越相似的规律的哈希算法即可,比如,在一种可能的实现方式中,所述预设的哈希算法可以是局部敏感哈希算法。

进一步的,当所述处理器1002在根据局部敏感哈希算法对所述第一数据块进行计算时,具体可以是先将所述第一数据块切分为多个不同长度的子数据块;然后计算所述多个不同长度的子数据块中每个子数据块的哈希值;最后将所述多个不同长度的子数据块的哈希值进行合并计算,得到所述第一数据块对应的局部敏感哈希值,将所述局部敏感哈希值作为所述第一哈希值。

为了提高方案的灵活性,在本申请实施例中,所述处理器1002计算任意两个局部敏感哈希值之间的差值的方式可以有多种实现方式。比如,计算不同局部敏感哈希值的杰卡德距离、欧式距离或者汉明距离等,本申请实施例不做限制。

在本申请实施例中,当计算差值的方式不同时,对应的设定的相似阈值可以不同。

比如,所述处理器1002使用杰卡德距离计算任意两个局部敏感哈希值之间的差值时,所述第一哈希值和所述第二哈希值之间的差值小于设定的第一距离阈值。

又如,所述处理器1002使用欧式距离计算任意两个局部敏感哈希值之间的差值时,所述第一哈希值和所述第二哈希值的欧式距离小于设定的第二距离阈值。

再如,所述处理器1002使用汉明距离计算任意两个局部敏感哈希值之间的差值时,所述第一哈希值和所述第二哈希值的汉明距离小于设定的第三距离阈值。

在本申请实施例中,所述处理器1002在将所述第一数据块和所述第二数据块进行合并并压缩时,具体可以是先将所述第一数据块和所述第二数据块进行合并,然后对合并后的数据块进行压缩,得到目标数据块。

进一步的,所述处理器1002在将所述第一数据块和所述第二数据块进行合并并压缩之后,还可以在所述第一数据块对应的元数据信息中添加第一合并压缩标识,用以指示所述第一数据块的压缩方式为合并压缩;还可以在所述第二数据块对应的元数据信息中添加第二合并压缩标识,用以指示所述第二数据块的压缩方式为合并压缩。

进一步的,所述处理器1002在将所述第一数据块和所述第二数据块进行合并并压缩之后,还可以在所述第一数据块对应的元数据信息中添加第一位置标识,用以指示所述第一数据块在所述目标数据块中的位置;还可以在所述第二数据块对应的元数据信息中添加第二位置标识,用以指示所述第二数据块在所述目标数据块中的位置。

另外,所述处理器1002在将所述第一数据块和所述第二数据块进行合并并压缩之前,还可以确定所述第一数据块和所述第二数据块进行合并并压缩后,得到的目标数据块对应的数据缩减比达到设定的缩减比阈值。也即,所述处理器1002只有在确定该目标数据块对应的数据缩减比达到设定的缩减比阈值时,才将所述第一数据块和所述第二数据块进行合并并压缩,如此,可以更好地保证参与合并压缩的数据块都能够得到较高的数据缩减比。

请参见图11,基于同一技术构思,本申请实施例还提供一种数据处理装置110,包括获取模块1101,用于获取多个数据块;确定模块1102,用于从所述多个数据块中至少确定出第一数据块和第二数据块,所述第一数据块具有第一哈希值,所述第二数据块具有第二哈希值,所述第一哈希值是所述确定模块1102根据设定的哈希算法对所述第一数据块进行计算获得的,所述第二哈希值是所述确定模块1102根据所述哈希算法对所述第二数据块进行计算获得的,所述第一哈希值和所述第二哈希值之间的差值小于设定的相似阈值;压缩模块1103,用于将所述第一数据块和所述第二数据块进行合并并压缩。

通过本实施例提供的数据处理装置110压缩数据,可使得经合并压缩的数据块都能够得到较优数据缩减比,可以较好均衡存储系统数据缩减比和系统开销之间的均衡。

为了提高方案的灵活性,在本申请实施例中,所述预设的哈希算法可以有多种实现方式,只要是满足哈希值越接近,对应数据块越相似的规律的哈希算法即可,比如,在一种可能的实现方式中,所述预设的哈希算法可以是局部敏感哈希算法。

当所述确定模块1102根据局部敏感哈希算法对所述第一数据块进行计算时,具体过程可以是:首先,将所述第一数据块切分为多个不同长度的子数据块;然后,计算所述多个不同长度的子数据块中每个子数据块的哈希值;最后,将所述多个不同长度的子数据块的哈希值进行合并计算,得到所述第一数据块对应的局部敏感哈希值,将所述局部敏感哈希值作为所述第一哈希值。

为了提高方案的灵活性,在本申请实施例中,所述确定模块1102计算任意两个局部敏感哈希值之间的差值的方式可以有多种实现方式。比如,计算不同局部敏感哈希值的杰卡德距离、欧式距离或者汉明距离等,本申请实施例不做限制。

在本申请实施例中,当计算差值的方式不同时,对应的设定的相似阈值可以不同。

比如,所述确定模块1102使用杰卡德距离计算任意两个局部敏感哈希值之间的差值时,所述第一哈希值和所述第二哈希值之间的差值小于设定的第一距离阈值。

又如,所述确定模块1102使用欧式距离计算任意两个局部敏感哈希值之间的差值时,所述第一哈希值和所述第二哈希值的欧式距离小于设定的第二距离阈值。

再如,所述确定模块1102使用汉明距离计算任意两个局部敏感哈希值之间的差值时,所述第一哈希值和所述第二哈希值的汉明距离小于设定的第三距离阈值。

在本申请实施例中,所述压缩模块1103在将所述第一数据块和所述第二数据块进行合并并压缩时,具体可以是先将所述第一数据块和所述第二数据块进行合并,然后对合并后的数据块进行压缩,得到目标数据块。

进一步的,所述压缩模块1103在将所述第一数据块和所述第二数据块进行合并并压缩之后,所述压缩模块1103还可以在所述第一数据块对应的元数据信息中添加第一合并压缩标识,用以指示所述第一数据块的压缩方式为合并压缩;还可以在所述第二数据块对应的元数据信息中添加第二合并压缩标识,用以指示所述第二数据块的压缩方式为合并压缩。

进一步的,所述压缩模块1103在将所述第一数据块和所述第二数据块进行合并并压缩之后,所述压缩模块1103还可以所述第一数据块对应的元数据信息中添加第一位置标识,用以指示所述第一数据块在所述目标数据块中的位置;还可以在所述第二数据块对应的元数据信息中添加第二位置标识,用以指示所述第二数据块在所述目标数据块中的位置。

另外,所述压缩模块1103在将所述第一数据块和所述第二数据块进行合并并压缩之前,还可以确定所述第一数据块和所述第二数据块进行合并并压缩后,得到的目标数据块对应的数据缩减比达到设定的缩减比阈值。也即,所述压缩模块1103只有在确定该目标数据块对应的数据缩减比达到设定的缩减比阈值时,才将所述第一数据块和所述第二数据块进行合并并压缩,如此,可以更好地保证参与合并压缩的数据块都能够得到较高的数据缩减比。

应理解,上述获取模块1101、确定模块1102以及压缩模块1103的功能,可以由处理器单独执行,也可以由处理器调用存储器中的程序指令执行,本申请实施例对此不做限制。比如,当处理器为中央处理器(centralprocessingunit,cpu)时,该cpu调用存储器中的程序指令执行上述各个模块的功能;比如,当处理器为现场可编程门阵列(field-programmablegatearray,fpga)时,该fpga单独执行执行上述各个模块的功能。

由于本发明所述方法和装置基于同一发明构思,所以上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。

基于同一技术构思,本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本申请实施例所述的数据处理方法。

基于同一技术构思,本申请实施例还提供一种计算机程序产品,当该程序产品被计算机执行时,可以使得计算机实现本申请实施例所述的数据处理方法。

基于同一技术构思,本申请实施例还提供一种芯片,所述芯片可以与存储器耦合,所述芯片可以与所述存储器物理独立设置,或者所述芯片中可以包含所述存储器,所述芯片可以调用执行所述存储器中存储的计算机程序,以执行本申请实施例所述的数据处理方法。

本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriberline,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digitalversatiledisc,dvd))、或者半导体介质(例如,固态硬盘(solidstatedisk,ssd))等。

显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1