一种数据操作方法及系统与流程

文档序号:11198915阅读:397来源:国知局
一种数据操作方法及系统与流程

本申请涉及计算机技术领域,尤其涉及一种数据操作方法及系统。



背景技术:

在计算机领域中存储设备无处不在,存储设备为用户提供数据存储功能。由于存储设备可以服务于一个用户或多个用户,每个用户均可以向存储设备存储数据。

在实际使用过程中会出现用户向存储设备存储相同数据的过程,目前,存储设备会将一份数据存储多次。这样会浪费存储设备的存储空间。



技术实现要素:

本申请提供了一种数据操作方法及系统,提供了对目标对象的去重存储过程,从而可以避免将相同对象进行重复存储,从而保证存储空间仅存储一份目标对象,从而节省存储空间。

为了实现上述目的,本申请提供了以下技术特征:

一种数据去重存储方法,包括:

确定目标对象以及所述目标对象的目标哈希值;

若在哈希值和存储次数的对应关系中未查找到所述目标哈希值,则基于所述目标哈希值存储所述目标对象,并在哈希值和存储次数的对应关系中增加所述目标哈希值和目标存储次数的对应关系,并将所述目标存储次数在初始值基础上加一;

若在哈希值和存储次数的对应关系中查找到所述目标哈希值,则不存储所述目标对象,在哈希值和存储次数的对应关系中,将所述目标哈希值对应的目标存储次数加一。

可选的,所述确定目标对象包括:

接收目标对象标识和目标内容;

判断哈希值和对象标识的对应关系中是否包括所述目标对象标识;其中,所述哈希值和对象标识的对应关系中的对象标识为已存储对象的标识;

若不包括所述目标对象标识,则将所述目标内容确定为目标对象;

若包括所述目标对象标识,则获取所述目标对象标识对应的目标哈希值,基于目标哈希值获取已存储对象,合并所述已存储对象和所述目标内容,将合并后数据确定为所述目标对象。

可选的,在所述将合并后数据确定为所述目标对象之后,还包括:

在所述哈希值和对象标识的对应关系中删除所述目标对象标识记录;

在所述哈希值和存储次数的对应关系中,将所述目标哈希值对应的目标存储次数减一。

可选的,还包括:

在哈希值和对象标识的对应关系中,增加所述目标哈希值和所述目标对象的目标对象标识的对应关系。

可选的,还包括:

对所述哈希值和对象标识的对应关系和哈希值和存储次数的对应关系进行存储备份。

一种数据删除方法,包括:

接收目标对象标识;

在哈希值和对象标识的对应关系中,获取与所述目标对象标识对应的目标哈希值,并删除该对应关系中所述目标对象标识的记录;

在哈希值和存储次数的对应关系中,将与所述目标哈希值对应的目标存储次数减一;

在所述目标存储次数为初始值的情况下,基于所述目标哈希值删除所述目标对象标识对应的目标对象。

可选的,在哈希值和对象标识的对应关系中获取与所述目标对象标识对应的目标哈希值之前,还包括:

判断哈希值和对象标识的对应关系中是否包括所述目标对象标识;其中,所述哈希值和对象标识的对应关系中的对象标识为已存储对象的标识;

若所述哈希值和对象标识的对应关系中包括所述目标对象标识,则执行在哈希值和对象标识的对应关系中获取与所述目标对象标识对应的目标哈希值的步骤;

若所述哈希值和对象标识的对应关系中不包括所述目标对象标识,则反馈错误提示信息。

一种数据读取方法,包括:

接收目标对象标识;

在哈希值和对象标识的对应关系中,获取与所述目标对象标识对应的目标哈希值;

基于所述目标哈希值读取所述目标对象标识对应的目标对象。

可选的,在哈希值和对象标识的对应关系中获取与所述目标对象标识对应的目标哈希值之前,还包括:

判断哈希值和对象标识的对应关系中是否包括所述目标对象标识;其中,所述哈希值和对象标识的对应关系中的对象标识为已存储对象的标识;

若所述哈希值和对象标识的对应关系中包括所述目标对象标识,则执行在哈希值和对象标识的对应关系中获取与所述目标对象标识对应的目标哈希值的步骤;

若所述哈希值和对象标识的对应关系中不包括所述目标对象标识,则反馈错误提示信息,其中,所述错误提示信息用于表示存储设备中不存在所述目标对象标识。

一种数据操作系统,包括:

终端,用于发送文件到分布式设备;

分布式设备,用于对文件执行池化操作获得多个对象,设置哈希值和存储次数的对应关系和所述哈希值和对象标识的对应关系,利用哈希值和存储次数的对应关系和所述哈希值和对象标识的对应关系,执行数据去重存储操作、数据删除操作以及数据读取操作。通过以上技术手段,可以实现以下有益效果:

本申请提供了对目标对象的去重存储过程,从而可以避免将相同对象进行重复存储,从而保证存储空间仅存储一份目标对象,从而节省存储设备的存储空间。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例公开的一种数据操作系统的结构示意图;

图2为现有技术中数据存储方法的流程图;

图3为本申请实施例公开的一种数据去重存储方法的流程图;

图4为本申请实施例公开的一种数据删除方法的流程图;

图5为本申请实施例公开的一种数据读取方法的流程图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

术语解释:

分布式存储:将数据分散存储到多个数据存储服务器上。

pg:placementgroups,放置组。分布式设备中的虚拟概念。

osd:object-basedstoragedevice,对象存储设备。

哈希值:在本实施例中对对象执行哈希操作后得到的数据值,称为哈希值。

为了方便本领域技术人员了解本申请的应用场景,提供了一种数据操作系统。参见图1,具体包括终端100和分布式设备200。

终端100用于发送文件至分布式设备200。

分布式设备200用于对文件执行池化操作获得多个对象,设置哈希值和存储次数的对应关系和所述哈希值和对象标识的对应关系,利用哈希值和存储次数的对应关系和所述哈希值和对象标识的对应关系,执行数据去重存储操作、数据删除操作以及数据读取操作。

为了方便对对象进行去重存储操作、数据删除操作以及数据读取操作,本实施例为本预先建立两个数据表:一个数据表存储哈希值和存储次数的对应关系,另一个数据表存储哈希值和对象标识的对应关系。

哈希值为对对象执行哈希操作后得到的数据值,用于唯一表示一个对象。对象标识为分布式设备中表示一个对象的标识。在分布式设备中,当一个对象被存储至对象存储设备后,在哈希值和对象标识的对应关系中建立该对象的对象标识和哈希值的对应关系。

由于用户可以存储相同对象,所以,利用存储次数来表示相同数据的存储次数。若对象相同则对象的哈希值也相同,所以构建哈希值和存储次数的对应关系,以表示相同对象被重复存储的次数。存储次数主要在执行数据删除操作时使用。

首先,介绍分布式设备执行数据去重存储操作的执行过程。

参见图2,为现有技术中分布式设备的存储流程。

分布式设备200对文件执行池化操作获得多个对象(oid),每个对象具有一个对象标识(oid_id),基于对象标识计算放置组pg标识(pg_id),通过pg标识确定对象存储设备osd标识(osd_id),基于osd标识(osd_id)将对象存储至对象存储设备osd中。

本实施例中对原始数据流下发过程中的对象标识(oid_id)进行劫持并进行重定向,重定向对象标识后可以执行去重存储操作。

参见图3,为本实施例提供的一种数据去重存储方法,具体包括以下步骤:

步骤s101:接收目标对象标识和目标内容。

分布式设备200接收目标对象标识和目标内容。

步骤s102:判断哈希值和对象标识的对应关系中是否包括所述目标对象标识;其中,所述哈希值和对象标识的对应关系中的对象标识为已存储对象的标识。若是,则进入步骤s103,若否则进入步骤s105。

目标内容可能有两种情况:第一情况,对已存储对象进行修改的内容,第二情况,目标内容为新对象的内容。对目标内容不同情况其处理过程有所不同,所以需要确定目标内容属于第一情况还是第二情况。

当一个对象已经存储至对象存储设备后,在哈希值与对象标识的对应关系中便有该对象标识。因此,本实施例分布式设备200判断在哈希值与对象标识的对应关系中是否包括目标对象标识。

步骤s103:若包括所述目标对象标识,则获取所述目标对象标识对应的目标哈希值,基于目标哈希值获取已存储对象,合并所述已存储对象和所述目标内容,将合并后数据确定为所述目标对象。

若在哈希值与对象标识的对应关系中包括目标对象标识,则说明目标对象标识已经存储过,因此,目标内容为第一情况(对已存储对象进行修改的内容)。

在哈希值与对象标识的对应关系中,获取与目标对象标识获取对应的目标哈希值。通过目标哈希值计算得到pg标识,通过pg标识计算得到osd标识,利用osd标识在osd中获取目标对象标识的已存储对象。

将已存储对象与目标内容进行合并,合并过程可以根据目标内容不同而不同。例如,若目标内容是对已存储对象中原始部分数据进行替换,则将目标内容替换已存储对象中的原始部分数据。若目标内容是对已存储对象增加部分内容,则在已存储对象中增加目标内容。关于此过程已为成熟技术,在此不再赘述。

将已存储对象与目标内容进行合并后得到的合并数据,确定为目标对象。

步骤s104:在所述哈希值和对象标识的对应关系中删除所述目标对象标识记录;在所述哈希值和存储次数的对应关系中,将所述目标哈希值对应的目标存储次数减一。然后,进入步骤s106。

由于目标对象标识对应的已存储对象已经修改,后续会重新进行对目标对象进行存储,所以可以在哈希值和对象标识的对应关系中删除目标对象标识的记录。

在多个用户具有多个对象标识,多个对象标识的数据内容相同,即已存储对象相同。在其中一个用户对已存储对象进行修改后,还有其它用户未对已存储对象进行修改,所以不能删除已存储对象,而是将目标对象标识对应的已存储对象的目标存储次数减一。当目标存储次数为初始值(或零)时,在对象存储设备中删除已存储对象,从而释放存储空间。

步骤s105:若不包括所述目标对象标识,则将所述目标内容确定为目标对象。

若在哈希值与对象标识的对应关系中不包括目标对象标识,则说明目标对象标识未存储过,因此,目标内容为第二情况(目标内容为新对象的内容)。

步骤s106:确定目标对象的目标哈希值。

分布式设备200计算目标对象执行哈希操作,从而得到目标对象的目标哈希值。

步骤s107:在哈希值和存储次数的对应关系中查找所述目标哈希值。若查找到,则进入步骤s108,否则进入步骤s109。

为了避免存储重复,在对目标对象进行存储之前,首先判断目标对象对应哈希值是否已经在哈希值和存储次数的对应关系中,若存在则表示目标对象已经存储至对象存储设备中;否则表示目标对象未存储至对象存储设备中。

步骤s108:若在哈希值和存储次数的对应关系中未查找到所述目标哈希值,则基于所述目标哈希值存储所述目标对象,并在哈希值和存储次数的对应关系中增加所述目标哈希值和目标存储次数的对应关系,并将所述目标存储次数在初始值基础上加一。然后进入步骤s110。

若在哈希值和存储次数的对应关系中未查找到所述目标哈希值,则表示目标对象未存储至对象存储设备中。因此,基于目标哈希值存储目标对象,具体而言,可以基于目标哈希值计算pg标识,利用pg标识计算osd标识,通过osd标识将目标数据存储至对象存储设备中。

然后,在哈希值和存储次数的对应关系中,增加目标哈希值和目标存储次数的对应关系,目标存储次数首次创建时其数据值为初始值,优选情况下为零。本步骤中目标对象已经被存储一次,所以存储次数可以在初始值基础上加一。

步骤s109:若在哈希值和存储次数的对应关系中查找到所述目标哈希值,则不存储所述目标对象,在哈希值和存储次数的对应关系中,将所述目标哈希值对应的目标存储次数加一。

若在哈希值和存储次数的对应关系中查找到所述目标哈希值,则表示目标对象已经存储过,所以为了避免重复重复,不再存储所述目标对象。

然后,在哈希值和存储次数的对应关系中,将目标哈希值对应的目标存储次数加一,以表示目标对象又被存储一次。

步骤s110:在哈希值和对象标识的对应关系中,增加所述目标哈希值和所述目标对象的目标对象标识的对应关系。

分布式设备200在哈希值和对象标识的对应关系中,增加目标哈希值和所述目标对象的目标对象标识的对应关系,以便表明目标对象标识已经具有已存储对象,以便为下次目标对象标识写数据时提供方便。

本申请提供了对目标对象的去重存储过程,从而可以避免将相同对象进行重复存储,从而保证存储空间仅存储一份目标对象,从而不浪费存储空间。

在图3所示的数据去重存储的基础上,本实施例还提供了数据删除方法。参见图4,具体包括以下步骤:

步骤s201:接收目标对象标识。

分布式设备200接收目标对象标识。

步骤s202:判断哈希值和对象标识的对应关系中是否包括所述目标对象标识;其中,所述哈希值和对象标识的对应关系中的对象标识为已存储对象的标识。若否,则进入步骤s203;若是则进入步骤s204。

步骤s203:若所述哈希值和对象标识的对应关系中不包括所述目标对象标识,则反馈错误提示信息。

若所述哈希值和对象标识的对应关系中不包括所述目标对象标识,则表示未存储过目标对象标识对应的目标对象,因此向终端反馈错误提示信息,以提示用户目标对象标识有误。

步骤s204:若所述哈希值和对象标识的对应关系中包括所述目标对象标识,在哈希值和对象标识的对应关系中,获取与所述目标对象标识对应的目标哈希值,并删除该对应关系中所述目标对象标识的记录。

若所述哈希值和对象标识的对应关系中包括所述目标对象标识,则表示已经存储过目标对象标识对应的目标对象。因此,在哈希值和对象标识的对应关系中,获取与所述目标对象标识对应的目标哈希值。

由于目标对象标识对应的目标对象需要执行删除操作,因此,在所述哈希值和对象标识的对应关系中删除所述目标对象标识的记录。

步骤s205:在哈希值和存储次数的对应关系中,将与所述目标哈希值对应的目标存储次数减一。

在步骤s204中获取目标哈希值后,在哈希值和存储次数的对应关系中,将与所述目标哈希值对应的目标存储次数减一,以表示对目标对象标识对应的目标对象执行删除操作。

步骤s206:在所述目标存储次数为初始值的情况下,基于所述目标哈希值删除所述目标对象标识对应的目标对象。

在目标哈希值对应的目标存储次数为初始值的情况下,说明已经没有所有用户均已经删除目标哈希值对应的目标对象。此情况下,可以基于目标哈希值删除目标对象标识对应的目标对象,以便释放存储空间。

在图3所示的数据去重存储的基础上,本实施例还提供了数据读取操作,参见图5具体包括以下步骤:

步骤s301:接收目标对象标识。

步骤s302:判断哈希值和对象标识的对应关系中是否包括所述目标对象标识;其中,所述哈希值和对象标识的对应关系中的对象标识为已存储对象的标识。若否,则进入步骤s303;若是则进入步骤s304。

步骤s303:若所述哈希值和对象标识的对应关系中不包括所述目标对象标识,则反馈错误提示信息。

步骤s304:在哈希值和对象标识的对应关系中,获取与所述目标对象标识对应的目标哈希值,基于所述目标哈希值读取所述目标对象标识对应的目标对象。

本实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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