一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

对象元数据存储方法及装置与流程

2022-05-06 09:11:43 来源:中国专利 TAG:


1.本技术涉及存储技术领域,尤其涉及一种对象元数据存储方法及装置。


背景技术:

2.随着非结构化数据的爆发式增长,对象存储应运而生。对象存储为扁平的二层架构,可快速查找所需对象,非常适合于存储海量非结构化数据,可用于存储海量图片数据、医疗保险监控等视频影像数据等。
3.一个对象是一个文件的数据及其相关属性信息的集合体,包括对象名称、对象数据以及对象元数据。为了便于管理海量的非结构化数据(即,对象),通常将对象数据和对象元数据分开存储。
4.桶为存储对象的容器。很多应用在对桶内对象操作之前,需要先获取桶内对象列表。在获取对象列表时,需要遍历桶内所有对象,然后,对所有对象按照对象名的字典序排列,生成对象列表,这导致对象列表的获取效率较低。


技术实现要素:

5.有鉴于此,本技术提出一种对象元数据存储方法及装置,用以提升对象列表的获取效率。
6.为实现上述申请目的,本技术提供了如下技术方案:
7.第一方面,本技术提供一种对象元数据存储方法,应用于对象存储系统包括的存储节点,所述方法包括:
8.获取待存储至目标桶的目标对象的对象名,其中,所述目标桶包括用于存储对象元数据的多个虚拟子桶,所述多个虚拟子桶的桶名按照字典序排列;
9.从所述目标对象的对象名中,提取所述目标对象的字典序特征;
10.从所述多个虚拟子桶中,查找目标虚拟子桶,其中,所述目标虚拟子桶的桶名包括所述目标对象的字典序特征;
11.将所述目标对象的对象元数据存储至所述目标虚拟子桶。
12.可选的,获取待存储至目标桶的目标对象的对象名之前,所述方法还包括:
13.针对每一个虚拟子桶,基于所述目标桶的桶名和按照字典序编码规则为虚拟子桶分配的后缀名,构建该虚拟子桶的桶名,其中,不同虚拟子桶的后缀名不同。
14.可选的,所述基于所述目标桶的桶名和按照字典序编码规则为虚拟子桶分配的后缀名,构建该虚拟子桶的桶名,包括:
15.对所述目标桶的桶名进行哈希运算,得到用于唯一标识所述目标桶的哈希值;
16.将所述哈希值与按照字典序编码规则为虚拟子桶分配的后缀名组合,作为该虚拟子桶的桶名。
17.可选的,所述从所述目标对象的对象名中,提取所述目标对象的字典序特征,包括:
18.获取所述目标对象的对象名的首字符;
19.按照字典序编码规则对所述首字符编码,得到所述目标对象的字典序特征。
20.可选的,所述多个虚拟子桶分别对应不同存储介质。
21.第二方面,本技术提供一种对象元数据存储装置,应用于对象存储系统包括的存储节点,所述装置包括:
22.获取单元,用于获取待存储至目标桶的目标对象的对象名,其中,所述目标桶包括用于存储对象元数据的多个虚拟子桶,所述多个虚拟子桶的桶名按照字典序排列;
23.提取单元,用于从所述目标对象的对象名中,提取所述目标对象的字典序特征;
24.查找单元,用于从所述多个虚拟子桶中,查找目标虚拟子桶,其中,所述目标虚拟子桶的桶名包括所述目标对象的字典序特征;
25.存储单元,用于将所述目标对象的对象元数据存储至所述目标虚拟子桶。
26.可选的,所述装置还包括:
27.构建单元,用于针对每一个虚拟子桶,基于所述目标桶的桶名和按照字典序编码规则为虚拟子桶分配的后缀名,构建该虚拟子桶的桶名,其中,不同虚拟子桶的后缀名不同。
28.可选的,所述构建单元基于所述目标桶的桶名和按照字典序编码规则为虚拟子桶分配的后缀名,构建该虚拟子桶的桶名,包括:
29.对所述目标桶的桶名进行哈希运算,得到用于唯一标识所述目标桶的哈希值;
30.将所述哈希值与按照字典序编码规则为虚拟子桶分配的后缀名组合,作为该虚拟子桶的桶名。
31.可选的,所述提取单元,具体用于获取所述目标对象的对象名的首字符;按照字典序编码规则对所述首字符编码,得到所述目标对象的字典序特征。
32.可选的,所述多个虚拟子桶分别对应不同存储介质。
33.由以上描述可以看出,本技术实施例中,将用户创建的桶划分为多个按字典序排列的虚拟子桶,在对象元数据存储时,直接将对象元数据按字典序存储至相应的虚拟子桶。由于各虚拟子桶已按字典序排列,且各对象元数据也已按字典序分配至各虚拟子桶,因此,当需要获取桶内满足一定条件的对象列表时,仅需遍历一个或相邻几个虚拟子桶,可大大提升对象列表获取效率。
附图说明
34.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
35.图1是本技术实施例示出的一种对象元数据存储方法流程图;
36.图2是本技术实施例示出的一种构建虚拟子桶的桶名的实现流程;
37.图3是本技术实施例示出的一种步骤102的实现流程;
38.图4是本技术实施例示出的一种对象元数据存储装置示意图。
具体实施方式
39.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。
40.在本技术实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术实施例。在本技术实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
41.应当理解,尽管在本技术实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术实施例范围的情况下,协商信息也可以被称为第二信息,类似地,第二信息也可以被称为协商信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
42.为了使本技术的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本技术进行详细描述:
43.参见图1,为本技术实施例示出的一种对象元数据存储方法流程图,该流程应用于对象存储系统包括的存储节点,比如,存储服务器。
44.如图1所示,该流程可包括以下步骤:
45.步骤101,获取待存储至目标桶的目标对象的对象名。
46.存储节点可从接收到的写请求中解析出当前待存储的对象(包括对象名、对象数据以及对象元数据)以及该对象待存储至的桶。
47.这里,将当前待存储的对象称为目标对象;将待存储该目标对象的桶称为目标桶。可以理解的是,之所以称为目标对象、目标桶,只是为了便于区分而进行的命名,并非用于限定。
48.本技术实施例中,目标桶包括用于存储对象元数据的多个虚拟子桶。每一个虚拟子桶可对应不同存储介质,存入同一目标桶的对象元数据最终存储到不同虚拟子桶对应的存储介质中。由于可跨存储介质存储同一桶的对象元数据,因此,可提升单桶的对象元数据存储量。
49.这里,需要说明的是,每一个虚拟子桶的桶名均不同,同一桶内不同虚拟子桶的桶名按字典序排列。
50.具体确定虚拟子桶的桶名的过程,在下文中描述,这里暂不赘述。
51.步骤102,从目标对象的对象名中,提取该目标对象的字典序特征。
52.该字典序特征用于后续确定目标对象存储至哪个虚拟子桶。
53.具体提取字典序特征的过程,在下文中描述,这里暂不赘述。
54.步骤103,从多个虚拟子桶中,查找目标虚拟子桶。
55.这里,目标虚拟子桶为最终确定的用于存储目标对象的对象元数据的虚拟子桶。之所以称为目标虚拟子桶,只是为便于区分而进行的命名,并非用于限定。
56.该目标虚拟子桶的桶名包括步骤102中提取的目标对象的字典序特征,因此,通过步骤102提取的字典序特征可从多个虚拟子桶中查找到目标虚拟子桶。
57.步骤104,将目标对象的对象元数据存储至目标虚拟子桶。
58.至此,完成图1所示流程。
59.通过图1所示流程可以看出,本技术实施例中,将用户创建的桶划分为多个按字典序排列的虚拟子桶,在对象元数据存储时,直接将对象元数据按字典序存储至相应的虚拟子桶。由于各虚拟子桶已按字典序排列,且各对象元数据也已按字典序分配至各虚拟子桶,因此,当需要获取桶内满足一定条件的对象列表时,仅需遍历一个或相邻几个虚拟子桶,可大大提升对象列表获取效率。
60.下面对确定虚拟子桶的桶名的过程进行描述。
61.作为一个实施例,可基于目标桶的桶名和按照预设字典序编码规则为虚拟子桶分配的后缀名,构建虚拟子桶的桶名。即,采用目标桶的桶名与虚拟子桶对应后缀名相结合的方式构建虚拟子桶的桶名。
62.可以理解的是,为了区分同一目标桶内不同虚拟子桶,每一个虚拟子桶对应的后缀名不同。
63.参见图2,为本技术实施例示出的一种构建虚拟子桶的桶名的实现流程。
64.如图2所示,该流程可包括以下步骤:
65.步骤201,对目标桶的桶名进行哈希运算,得到用于唯一标识该目标桶的哈希值。
66.目标桶为用户实际创建的桶,对用户可见,且该目标桶的桶名全局(在对象存储系统中)唯一。基于该全局唯一的桶名进行哈希运算,比如,第五代信息摘要算法(英文:message-digest algorithm 5,缩写:md5)运算,可得到唯一标识目标桶的哈希值。具体可表示为:
67.h=hash(bucketname)
68.其中,bucketname为目标桶的桶名;hash()表示哈希运算;h为目标桶对应的哈希值。
69.步骤202,将该哈希值与按照字典序编码规则为虚拟子桶分配的后缀名组合,作为该虚拟子桶的桶名。
70.作为一个示例,该字典序编码规则可为26个英文字母(a~z) 10个阿拉伯数值(0~9)。根据该字典序编码规则可设置26 10=36个虚拟子桶,各虚拟子桶的后缀名分别为a~z、0~9,相应地,各虚拟子桶的桶名分别为h-a、h-b、
……
、h-z、h-0、
……
、h-9。
71.作为另一个示例,该字典序编码规则可为美国信息交换标准代码(英文:american standard code for information interchange,缩写:ascii),对应取值范围0~127。根据该字典序编码规则可设置128个虚拟子桶,各虚拟子桶的后缀名分别为0~127,相应地,各虚拟子桶的桶名分别为h-0、h-1、
……
、h-127。
72.当然,还可以采用其它字典序编码规则,比如,统一码(unicode)、utf-8编码,确定各虚拟子桶的后缀名,再结合所属目标桶的哈希值(h)得到对应虚拟子桶的桶名。
73.至此,完成图2所示流程。
74.通过图2所示流程可确定各虚拟子桶的桶名,使得各虚拟子桶可独立管理,且不会与用户创建的桶重名。
75.下面对步骤102中提取目标对象的字典序特征的过程进行描述。参见图3,为本技术实施例示出的一种步骤102的实现流程。
76.如图3所示,该流程可包括以下步骤:
77.步骤301,获取目标对象的对象名的首字符。
78.比如,对象名为a11,则首字符为a。
79.步骤302,按照字典序编码规则对目标对象的对象名的首字符编码,得到目标对象的字典序特征。
80.比如,字典序编码规则为ascii码,则首字符a对应的ascii码值为65,65即为当前目标对象的字典序特征。
81.后续,可通过步骤103找到后缀名为65的目标虚拟子桶,再通过步骤104将目标对象的对象元数据存入后缀名为65的目标虚拟子桶。
82.至此,完成图3所示流程。
83.通过图3所示流程可实现对待存储对象(目标对象)的字典序特征提取,以便将其存入按字典序排列的对应虚拟子桶。
84.下面举两个具体实施例说明对象元数据存储过程。
85.实施例一:
86.用户创建桶名为bucket-test的桶。本实施例按照26个英文字母(a~z) 10个阿拉伯数值(0~9)的编码规则,将用户创建的桶划分为36个虚拟子桶,并在a~z、0~9的范围内为每一个虚拟子桶分别分配不同的后缀名。
87.本实施例对桶名(bucket-test)进行哈希运算,即,hash(bucket-test),得到桶对应的哈希值,记为k;然后,将该哈希值k分别与为每一个虚拟子桶分配的后缀名结合,得到每一个虚拟子桶的桶名,分别为k-a、k-b、
……
、k-z、k-0、k-1、
……
、k-9。
88.依次向桶bucket-test中写入对象aa、bb、a11、b11、1axxx、你好。
89.以对象aa为例,对象aa的首字符为a,根据首字符a从虚拟子桶中查找后缀名为a的虚拟子桶k-a,将对象aa的对象元数据存入虚拟子桶k-a对应的存储介质中;
90.同理,
91.对象bb的对象元数据存入虚拟子桶k-b对应的存储介质中;
92.对象a11的对象元数据存入虚拟子桶k-a对应的存储介质中;
93.对象b11的对象元数据存入虚拟子桶k-b对应的存储介质中;
94.对象1axxx的对象元数据存入虚拟子桶k-1对应的存储介质中;
95.对象你好的对象元数据存入虚拟子桶k-n对应的存储介质中。
96.实施例二:
97.用户创建桶名为bucket-test的桶。本实施例按照ascii码编码规则,将用户创建的桶划分为128个虚拟子桶,并在0~127的范围内为每一个虚拟子桶分别分配不同的后缀名。
98.本实施例对桶名(bucket-test)进行哈希运算,得到桶对应的哈希值k。然后,将该哈希值k分别与为每一个虚拟子桶分配的后缀名结合,得到每一个虚拟子桶的桶名,分别为k-0、k-1、
……
、k-127。
99.依次向桶bucket-test中写入对象aa、a11、1axxx、你好。
100.以对象aa为例,对象aa的首字符为a,该首字符a对应的ascii码值为97,根据该ascii码值97从虚拟子桶中查找后缀名为97的虚拟子桶k-97,将对象aa的对象元数据存入
虚拟子桶k-97对应的存储介质中;
101.同理,
102.对象a11的对象元数据存入虚拟子桶hash(bucket-test)-65对应的存储介质中;
103.对象1axxx的对象元数据存入虚拟子桶hash(bucket-test)-49对应的存储介质中;
104.对象你好(拼音:ni hao)的对象元数据存入虚拟子桶k-110对应的存储介质中。
105.以上对本技术实施例提供的方法进行了描述,下面对本技术实施例提供的装置进行描述:
106.参见图4,为本技术实施例示出的一种对象元数据存储装置,应用于对象存储系统包括的存储节点,该装置包括获取单元401、提取单元402、查找单元403以及存储单元404,其中:
107.获取单元401,用于获取待存储至目标桶的目标对象的对象名,其中,所述目标桶包括用于存储对象元数据的多个虚拟子桶,所述多个虚拟子桶的桶名按照字典序排列;
108.提取单元402,用于从所述目标对象的对象名中,提取所述目标对象的字典序特征;
109.查找单元403,用于从所述多个虚拟子桶中,查找目标虚拟子桶,其中,所述目标虚拟子桶的桶名包括所述目标对象的字典序特征;
110.存储单元404,用于将所述目标对象的对象元数据存储至所述目标虚拟子桶。
111.作为一个实施例,所述装置还包括:
112.构建单元,用于针对每一个虚拟子桶,基于所述目标桶的桶名和按照字典序编码规则为虚拟子桶分配的后缀名,构建该虚拟子桶的桶名,其中,不同虚拟子桶的后缀名不同。
113.作为一个实施例,所述构建单元基于所述目标桶的桶名和按照字典序编码规则为虚拟子桶分配的后缀名,构建该虚拟子桶的桶名,包括:
114.对所述目标桶的桶名进行哈希运算,得到用于唯一标识所述目标桶的哈希值;
115.将所述哈希值与按照字典序编码规则为虚拟子桶分配的后缀名组合,作为该虚拟子桶的桶名。
116.作为一个实施例,所述提取单元402,具体用于获取所述目标对象的对象名的首字符;按照字典序编码规则对所述首字符编码,得到所述目标对象的字典序特征。
117.作为一个实施例,所述多个虚拟子桶分别对应不同存储介质。
118.至此,完成图4所示装置的描述。
119.由以上描述可以看出,本技术实施例中,将用户创建的桶划分为多个按字典序排列的虚拟子桶,在对象元数据存储时,直接将对象元数据按字典序存储至相应的虚拟子桶。由于各虚拟子桶已按字典序排列,且各对象元数据也已按字典序分配至各虚拟子桶,因此,当需要获取桶内满足一定条件的对象列表时,仅需遍历一个或相邻几个虚拟子桶,可大大提升对象列表获取效率。
120.以上所述仅为本技术实施例的较佳实施例而已,并不用以限制本技术,凡在本技术实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献