基于布隆过滤器的对象存储文件检索方法及系统与流程

文档序号:21178670发布日期:2020-06-20 17:39阅读:209来源:国知局
基于布隆过滤器的对象存储文件检索方法及系统与流程

本发明涉及网络数据存储技术,具体涉及基于布隆过滤器的对象存储文件检索方法及系统。



背景技术:

目前,网络数据信息呈爆炸性的增长,传统的本地文件系统因受单一的设备局限,其存储容量和存储效率都已经很难满足当前人们对数据信息的存储管理要求。因此,网络存储技术变得尤为重要。

分布式的文件存储和检索系统因其高效、稳定、可扩展性强等优势,成为了我们实现高效的存储检索平台的首选方式。近年来,基于对象接口的网络存储技术以高性能、高可扩展性、易管理和跨平台共享等多种性能受到越来越多应用场合的欢迎。

面向对象的存储系统的原理是:将文件视为对象的集合,这些对象分布在对象存储设备osd(object-basedstoragedevice)中,对象放置到不同的设备中可以使系统具有更高的容量、吞吐量、可靠性和可扩展性。

面向对象存储系统主要由客户端、元数据服务器mds(metadataserver)和存储设备三大部分组成;元数据服务器用于存储对象信息,存储设备用于存储对象。这三方的通讯过程可以描述为:客户端向元数据服务器发送读写文件请求,元数据服务器返回文件对应的对象信息,客户端根据对象信息访问相应的存储设备。

当用户存储文件时,将会先更新元数据服务器中对象信息,而用户在查询或下载文件时,也会先访问元数据服务器以确定文件是否存在,并获取到文件的实际存储位置;而面向对象存储系统存储和查询文件时,一般是通过索引表的方式进行,这种方式简单直观,但这种方式检索效率较低,并且随着系统中文件数量的增加,检索将需要更长的时间,从而影响系统的访问效率和用户体验。



技术实现要素:

本发明的主要目的是提供一种基于布隆过滤器的对象存储文件检索方法及系统,旨在解决现有的面向对象存储系统的元数据服务器对对象信息的检索方式检索效率较低的问题。

为实现上述目的,本发明提供一种基于布隆过滤器的对象存储文件检索方法,应用于基于布隆过滤器的对象存储文件检索系统,所述系统包括元数据服务端、存储服务端以及与所述元数据服务端和所述存储服务端均通信连接的客户端;所述方法包括如下步骤:

通过所述客户端发送存储请求信息至所述元数据服务端;

根据所述存储请求信息更新文件索引表和布隆过滤器的哈希表,并根据更新后的所述文件索引表和所述布隆过滤器的哈希表生成存储返回信息;

通过所述元数据服务端发送所述存储返回信息至所述客户端;

根据所述存储返回信息将待存储文件发送至所述存储服务端。

优选的,还包括:

通过所述存储服务端发送存储结果信息至所述客户端。

优选的,所述存储服务端发送存储结果信息至所述客户端,包括:

判断所述待存储文件是否为主副本;

当所述待存储文件为主副本时判断所述待存储文件是否已经完整无误的存储于所述存储服务端;

若已经完整无误的存储于所述存储服务端,则通过所述存储服务端生成所述存储结果信息,并发送所述存储结果信息至所述客户端;

当所述待存储文件不为主副本时判断所述待存储文件是否已经部分存储于所述存储服务端;

若已经部分存储于所述存储服务端,则通过所述存储服务端生成所述存储结果信息,并发送所述存储结果信息至所述客户端。

优选的,还包括:

通过所述客户端发送查询请求信息至所述元数据服务端;

通过所述布隆过滤器判断与所述查询请求信息对应的待查询文件是否存在;

若是,通过所述元数据服务端查找所述文件索引表以得到与所述查询请求信息对应的文件信息及其他必要信息;

根据与所述查询请求信息对应的文件信息及其他必要信息生成第一查询返回信息;

通过所述元数据服务端发送所述第一查询返回信息至所述客户端。

优选的,所述所述布隆过滤器判断与所述查询请求信息对应的文件是否存在,之后还包括:

若否,生成第二查询返回信息;

通过所述元数据服务端发送所述第二查询返回信息至所述客户端。

优选的,还包括:

通过所述客户端发送第一下载请求信息至所述元数据服务端;

通过所述布隆过滤器判断与所述第一下载请求信息对应的待下载文件是否存在;

若是,通过所述元数据服务端查找所述文件索引表以得到与所述第一下载请求信息对应的文件信息及其他必要信息;

根据与所述第一下载请求信息对应的文件信息及其他必要信息生成下载返回信息;

通过所述元数据服务端发送所述下载返回信息至所述客户端;

通过所述客户端发送第二下载请求信息至与所述下载返回信息对应的所述存储服务端;

通过所述存储服务端发送所述待下载文件至所述客户端。

优选的,还包括:

通过所述客户端发送第一删除请求信息至所述元数据服务端;

通过所述布隆过滤器判断与所述第一删除请求信息对应的待删除文件的信息是否存在;

若是,通过所述元数据服务端删除所述文件索引表中与所述第一删除请求信息对应的文件信息及其他必要信息,并生成删除返回信息;

通过所述元数据服务端发送所述删除返回信息至所述客户端。

优选的,所述通过所述元数据服务端发送所述删除返回信息至所述客户端,之后包括:

根据所述删除返回信息生成第二删除请求信息;

通过所述客户端发送所述第二删除请求信息至所述存储服务端;

通过所述存储服务端删除和所述第二删除请求信息对应的所述待删除文件。

优选的,还包括:

间隔预设时间段清空所述布隆过滤器的哈希表;

根据所述文件索引表更新所述布隆过滤器的哈希表。

本发明还提供一种基于布隆过滤器的对象存储文件检索系统,应用于如上述任一项所述的基于布隆过滤器的对象存储文件检索方法,所述系统包括所述元数据服务端、所述存储服务端以及与所述元数据服务端和所述存储服务端均通信连接的所述客户端

本发明提出的基于布隆过滤器的对象存储文件检索方法,采用了布隆过滤器(bloomfilter),布隆过滤器是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询效率远超一般的算法,布隆过滤器核心正确的使用就是进行过滤禁止,即进行正确的否定。

本发明提出的基于布隆过滤器的对象存储文件检索方法通过采用布隆过滤器存储并检索用户文件的存在性,从而提升面向对象存储系统对于文件的检索速度。

附图说明

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

图1为本发明提出的一种基于布隆过滤器的对象存储文件检索方法的第一实施例的流程示意图;

图2为本发明提出的一种基于布隆过滤器的对象存储文件检索方法的第三实施例的部分流程示意图;

图3为本发明提出的一种基于布隆过滤器的对象存储文件检索系统的结构示意图。

本发明目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

本发明提出一种基于布隆过滤器的对象存储文件检索方法及系统。

请参考附图1,在本发明提出的一种基于布隆过滤器的对象存储文件检索方法的第一实施例中,本实施例应用于基于布隆过滤器的对象存储文件检索系统,本系统包括元数据服务端、存储服务端以及与所述元数据服务端和所述存储服务端均通信连接的客户端;本方法包括如下步骤:

步骤s110:通过所述客户端发送存储请求信息至所述元数据服务端。

具体的,也就是用户通过客户端发送一个存储请求,这里的存储请求信息包括了待存储的文件的相关信息。

步骤s120:根据所述存储请求信息更新文件索引表和布隆过滤器的哈希表,并根据更新后的所述文件索引表和所述布隆过滤器的哈希表生成存储返回信息。

具体的,即元数据服务端根据客户端发送的存储请求信息(包括了待存储文件的相关信息,如大小、类型等等)更新文件索引表和布隆过滤器的哈希表,这里的存储返回信息包括了待存储文件需要存储至存储服务器的哪个位置的信息。

步骤s130:通过所述元数据服务端发送所述存储返回信息至所述客户端。

步骤s140:根据所述存储返回信息将待存储文件发送至所述存储服务端。

具体的,也就是客户端将待存储文件存储至和存储返回信息对应的存储服务端,这一步即是完成存储步骤。

上述第一实施例实际上是本发明提出的基于布隆过滤器的对象存储文件检索方法应用于存储的方法,有别于现有的面向对象存储方法,本发明提出的基于布隆过滤器的对象存储文件检索方法,采用了布隆过滤器(bloomfilter),布隆过滤器是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询效率远超一般的算法,布隆过滤器核心正确的使用就是进行过滤禁止,即进行正确的否定。

本发明提出的基于布隆过滤器的对象存储文件检索方法通过采用布隆过滤器存储并检索用户文件的存在性,从而提升面向对象存储系统对于文件的检索速度。

在本发明提出的一种基于布隆过滤器的对象存储文件检索方法的第二实施例中,基于第一实施例,本实施例还包括如下步骤:

步骤s210:通过所述存储服务端发送存储结果信息至所述客户端。

具体的,即存储服务端发送待存储文件是否已经存储完成的结果反馈发送至客户端。

请参考附图2,在本发明提出的一种基于布隆过滤器的对象存储文件检索方法的第三实施例中,基于第二实施例,步骤s210,包括如下步骤:

步骤s310:判断所述待存储文件是否为主副本。

步骤s320:当所述待存储文件为主副本时判断所述待存储文件是否已经完整无误的存储于所述存储服务端。

步骤s330:若已经完整无误的存储于所述存储服务端,则通过所述存储服务端生成所述存储结果信息,并发送所述存储结果信息至所述客户端。

具体的,为了保证安全性,对于主副本文件,需要采用强一致性来判断待存储文件是否已经存储于存储服务端。

步骤s340:当所述待存储文件不为主副本时判断所述待存储文件是否已经部分存储于所述存储服务端。

步骤s350:若已经部分存储于所述存储服务端,则通过所述存储服务端生成所述存储结果信息,并发送所述存储结果信息至所述客户端。

具体的,为了兼顾效率(即加快存储结果的返回),对于非主副本文件,需要采用弱一致性来判断待存储文件是否已经存储于存储服务端。

在本发明提出的一种基于布隆过滤器的对象存储文件检索方法的第四实施例中,基于第一实施例,还包括如下步骤:

步骤s410:通过所述客户端发送查询请求信息至所述元数据服务端。

具体的,也就是用户通过客户端发送一个查询请求,这里的查询请求信息包括了待查询文件的相关信息(也就是用户针对待查询文件需要知道的信息)。

步骤s420:通过所述布隆过滤器判断与所述查询请求信息对应的待查询文件是否存在。

具体的,通过所述布隆过滤器进行判断,效率更高,反馈给用户的速度更快。

若是,则执行步骤s430:通过所述元数据服务端查找所述文件索引表以得到与所述查询请求信息对应的文件信息及其他必要信息。

步骤s440:根据与所述查询请求信息对应的文件信息及其他必要信息生成第一查询返回信息。

具体的,也就是当待查询文件存在时,元数据服务端会根据待查询文件的信息及其他必要信息(也就是用户针对待查询文件需要知道的信息)生成一个第一查询返回信息,这个第一查询返回信息包括了待查询文件的信息和用户针对待查询文件需要知道的信息。

步骤s450:通过所述元数据服务端发送所述第一查询返回信息至所述客户端。

在本发明提出的一种基于布隆过滤器的对象存储文件检索方法的第五实施例中,基于第四实施例,步骤s420,之后还包括如下步骤:

若否,则执行步骤s510:生成第二查询返回信息。

步骤s520:通过所述元数据服务端发送所述第二查询返回信息至所述客户端。

本实施例实际上就是当布隆过滤器判断与所述查询请求信息对应的文件不存在时,元数据服务端会给客户端一个待查询文件不存在的反馈(即第二查询返回信息),保证用户体验。

在本发明提出的一种基于布隆过滤器的对象存储文件检索方法的第六实施例中,基于第一实施例,还包括如下步骤:

步骤s610:通过所述客户端发送第一下载请求信息至所述元数据服务端。

具体的,也就是用户通过客户端发送一个下载请求,这里的下载请求信息包括了待下载文件的相关信息(也就是用户想要下载哪个文件)。

步骤s620:通过所述布隆过滤器判断与所述第一下载请求信息对应的待下载文件是否存在。

具体的,通过所述布隆过滤器进行判断,效率更高,反馈给用户的速度更快。

若是,则执行步骤s630:通过所述元数据服务端查找所述文件索引表以得到与所述第一下载请求信息对应的文件信息及其他必要信息。

步骤s640:根据与所述第一下载请求信息对应的文件信息及其他必要信息生成下载返回信息。

具体的,也就是当待下载文件存在时,元数据服务端会根据待下载文件的信息生成一个下载返回信息,这个下载返回信息包括了待下载文件的存储地址。

步骤s650:通过所述元数据服务端发送所述下载返回信息至所述客户端。

步骤s660:通过所述客户端发送第二下载请求信息至与所述下载返回信息对应的所述存储服务端。

具体的,这里的第二下载请求信息是根据下载返回信息生成的,故这个第二下载请求信息包含了待下载文件的地址,客户端通过第二下载请求信息和存储了待下载文件的存储服务端建立连接。

步骤s670:通过所述存储服务端发送所述待下载文件至所述客户端。

具体的,存储服务端和客户端建立连接后将待下载文件发送至客户端,至此,完成下载任务。

在本发明提出的一种基于布隆过滤器的对象存储文件检索方法的第七实施例中,基于第一实施例,还包括如下步骤:

步骤s710:通过所述客户端发送第一删除请求信息至所述元数据服务端。

具体的,也就是用户通过客户端发送一个删除请求,这里的删除请求信息包括了待删除文件的相关信息(也就是用户想要删除哪个文件)。

步骤s720:通过所述布隆过滤器判断与所述第一删除请求信息对应的待删除文件是否存在。

具体的,通过所述布隆过滤器进行判断,效率更高,反馈给用户的速度更快。

若是,则执行步骤s730:通过所述元数据服务端删除所述文件索引表中与所述第一删除请求信息对应的文件信息及其他必要信息,并生成删除返回信息。

步骤s740:通过所述元数据服务端发送所述删除返回信息至所述客户端。

具体的,也就是当待删除文件存在时,元数据服务端会根据待删除文件的信息生成一个删除返回信息,这个删除返回信息包括了待删除文件的存储地址,同时也通过向客户端进行反馈而使得用户知道了要删除的文件的相关信息(如大小、类型等等)。

在本发明提出的一种基于布隆过滤器的对象存储文件检索方法的第八实施例中,基于第七实施例,步骤s740,之后包括如下步骤:

步骤s810:根据所述删除返回信息生成第二删除请求信息。

具体的,这里的第二删除请求信息是根据删除返回信息生成的,故这个第二删除请求信息包含了待删除文件的地址,这里的第二删除请求信息通过客户端生成。

步骤s820:通过所述客户端发送所述第二删除请求信息至所述存储服务端。

具体的,客户端通过第二删除请求信息和存储了待删除文件的存储服务端建立连接。

步骤s830:通过所述存储服务端删除和所述第二删除请求信息对应的待删除文件。

在本发明提出的一种基于布隆过滤器的对象存储文件检索方法的第九实施例中,基于第七实施例,还包括如下步骤:

步骤s910:间隔预设时间段清空所述布隆过滤器的哈希表。

具体的,本实施例中预设时间段优选为1h~24h。

步骤s920:根据所述文件索引表更新所述布隆过滤器的哈希表。

具体的,因面向对象存储的方式,存在文件删除的情况,当文件删除时,仅更新元数据服务端中的文件索引表,而不会修改布隆过滤器哈希表。因此,一旦删除的文件过多,那么布隆过滤器的失误率就会变高,为有效防止此类情况影响系统的检索效率,元数据服务端将定期更新布隆过滤器,即清空布隆过滤器哈希表,根据文建索引表重新填充哈希表。

定期更新有两种方式,第一种是使用定时器,时间到后马上更新过滤器;第二种是使用删除文件的数量作为计数器,达到阀值后更新过滤器。当然也可以同时使用两者,有一个达到要求,或两者都达到要求后更新。

具体实现方式:定义一个全局变量,比如s,初始值为0,设置最大值为smax。对于上述第一种方式:每过一秒,s增加1,当s达到最大值(smax),更新布隆过滤器中的哈希表。第二种,本基于布隆过滤器的对象存储文件检索系统中每删除一个待删除文件,s增加1,同样的,当s达到smax时,更新布隆过滤器中的哈希表。

通过上述技术方案,这样能够双重保证哈希表的刷新,提高容错率,并在一定程度上提高检索命中率。

本发明还提出一种基于布隆过滤器的对象存储文件检索系统,如附图3所示,本基于布隆过滤器的对象存储文件检索系统应用于上述基于布隆过滤器的对象存储文件检索方法的任一实施例,本基于布隆过滤器的对象存储文件检索系统包括元数据服务端、存储服务端以及与所述元数据服务端和所述存储服务端均通信连接的客户端。

在本说明书的描述中,参考术语“一实施例”、“另一实施例”、“其他实施例”、或“第一实施例~第x实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料、方法步骤或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上面对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

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