一种云环境下可扩展存储索引结构的实现方法

文档序号:6517394阅读:175来源:国知局
一种云环境下可扩展存储索引结构的实现方法
【专利摘要】本发明公开了一种云环境下可扩展存储索引结构的实现方法,利用Skiplist这种数据结构来有针对性地构建云环境下可扩展存储索引结构,使得数据子集、数据都是有序存储的,这样知道待查询键的区间上下界就可以实现范围的查询。同时,上层的全局索引结点由下层结点的元数据构成,减轻了上层全局索引的内存开销,并可以存储更多的全局索引结点,大大提高了整个云存储系统的查询速度,实时性得到提高。此外,本发明中的存储索引结构可以进行动态调整,具有很好的扩展性。
【专利说明】—种云环境下可扩展存储索引结构的实现方法
【技术领域】
[0001]本发明属于云存储【技术领域】,更为具体地讲,涉及一种云环境下可扩展存储索引结构的实现方法。
【背景技术】
[0002]随着计算机及网络技术的发展,云计算技术作为一种高性能、低成本的实用分布式计算技术,已被广泛运用于以大数据处理为代表的各种网络应用中。高可扩展性和可靠性的云存储系统逐渐成为大数据处理的首选方案之一,已有的优秀云存储系统包括:Google的GFS、MapReduce以及其开源实现Hadoop、亚马逊的Dynamo和Facebook的Cassandra等。相对于传统数据存储系统,云存储系统分布更广,支持数据更多,这就意味着云存储时代的辅助索引系统必然发生大的变化。
[0003]当前大多数的云存储系统都采用健-值(Key-Value)模型,将查询的键(key)和具体值(value)映射为键值对(kv-pair)来存取数据。该模型简单,适合通过主键进行查询。在单键查询的时候有着良好的表现,但却不能有效支持范围查询。实际的应用效果表明,这类基于Key-Value模型的云存储系统还存在一些亟待提高的地方。例如,对于一个在线视频点播系统来说,用户们往往倾向于采用多于一个的键值来进行查询,或需要查询特定属性处于某一个数据范围之内的视频信息。为了满足上述的应用需求,当前的解决方案主要是通过运行一个后台批处理任务(例如运行一个MapReduce的任务),来扫描整个数据集然后得到查询结果。然而,这类解决方案缺乏时效性,新存入的数据不能被及时的查询至IJ,必须等到后台的批处理任务完成了完整的扫描,数据才会可查。上述分析表明,当前云存储系统在多维度查询和范围查询方面支持的都不是很理想、且时效性差,有必要构建云环境下存储索引结构。
[0004]目前少数基于不同数据结构的双层存储索引结构已经被提出。这些方案能够很方便地实现云存储系统的可扩展性,使云存储系统能够同时支持大规模的查询。但是,这些方案在全局索引中大都采用了基于P2P协议的覆盖网络来实现并行查询,但是P2P网络本身的维护比较复杂,查询时的网络开销也比较大,这会影响到云存储系统的查询性能。同时,由于现有的云存储系统一般都是master-slave结构的,要在这些节点上重新构建一个P2P网络,会对原有的存储系统带来一定的负面影响。

【发明内容】

[0005]本发明的目的在于克服现有技术的不足,提供一种云环境下可扩展存储索引结构的实现方法,以解决云存储系统中存储索引结构不支持范围查询以及缺乏实时性的问题。
[0006]为实现上述发明目的,本发明云环境下可扩展存储索引结构的实现方法,其特征在于,包括以下步骤:
[0007](I)、建立主从式的可扩展存储索引的两层结构
[0008]整个存储索引结构分为上下两层,上层为全局索引,由全局索引服务器负责管理,下层为多个局部索引,每个局部索引由一个局部索引服务器负责管理;
[0009]对待索引的数据集进行切分,按照平均的原则,分成包含等量数据的数据子集,划分的数据子集的个数与局部索引服务器相等;然后,划分好的数据子集与下层索引服务器一一对应,并在各下层索引服务器中以SkipList为基础建立局部索引,下层索引服务器将数据子集的各个数据分别存放到局部索引的各个结点中,完成局部索引的建立;
[0010]在局部索引建立完成的基础上,各局部索引挑选桩结点作为自己索引范围的“代表”发布到上层的全局索引中;发布时,抽取发布的桩结点的元数据发送到上层的全局索引服务器中,元数据包括:索引的键,局部索引服务器IP地址,局部索引服务器磁盘物理块号,以达到减轻上层索引的内存开销和存储更多结点的目的;全局索引服务器接收到下层各局部索引发布的元数据后,通过SkipList的形式将这些元数据作为全局索引结点组织成一个全局索引,在逻辑上将下层各独立的局部索引关联起来,维持了索引空间的整体一致性;
[0011](2)、发布元数据结点的调整
[0012]局部索引向全局索引发布桩结点的元数据进行关联后,各局部索引会根据预估的收益,判断是否要继续往局部索引的下一层级进行发布:
[0013]如果往局部索引的下一层级进行发布,云存储系统的查询速度变化率为正向,并且大于全局索引服务器的内存占用变化率,则将局部索引的下一层级结点的元数据发布到上层的全局索引中,否则,不往下一层级进行发布;
[0014](3)、查询
[0015]3.1)、单键值查询
[0016]al、由上层的全局索引 服务器作为处理查询的入口,首先,在全局索引中查询到待查询键的全局索引结点;a2、根据全局索引中查询到的全局索引结点,定位到下层具体的某一个局部索引服务器上,将查询操作转移给该局部索引服务器继续处理;a3、局部索引服务器执行查询操作,查询本机负责的局部索引,找到待查键对应的数据后,直接返回给查询请求发起端;
[0017]3.2)、范围查询
[0018]bl、按照单键值查询的方式,以待查询键的区间的下界为键,找到具体某一个局部索引中对应的结点山2、找到的结点为起点,顺序向后遍历并缓存查询到的数据,直到找到待查询键的区间的上界为止,然后将所有找到的数据返回给查询请求发起端。
[0019]本发明的发明目的是这样实现的:
[0020]本发明云环境下可扩展存储索引结构的实现方法,利用Skiplist这种数据结构来有针对性地构建云环境下可扩展存储索引结构,使得数据子集、数据都是有序存储的,这样知道待查询键的区间上下界就可以实现范围的查询。同时,上层的全局索引结点由下层结点的元数据构成,减轻了上层全局索引的内存开销,并可以存储更多的全局索引结点,大大提高了整个云存储系统的查询速度,实时性得到提高。此外,本发明中的存储索引结构可以进行动态调整,具有很好的扩展性。
【专利附图】

【附图说明】
[0021]图1是本发明中可扩展存储索引的两层结构示意图;[0022]图2是本发明中发布元数据结点的调整示意图;
[0023]图3是局部索引发布到全局索引时加速系数和内存的变化情况;
[0024]图4是单键值查询的处理过程示意图;
[0025]图5是局部索引分裂示意图;
[0026]图6是可扩展索引结构的构造示意图;
[0027]图7是范围查询处理流程示意图;
[0028]图8是局部索引分裂示意图。
【具体实施方式】
[0029]下面结合附图对本发明的【具体实施方式】进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
[0030]实施例
[0031]图1是本发明中可扩展存储索引的两层结构示意图。
[0032]在本实施例中,如图1所示,建立主从式的可扩展存储索引的两层结构的过程为:
[0033]整个存储索引结构分为上下两层,下层为多个局部索引,每个局部索引由一个局部索引服务器负责管理,索引的数据存放在下层的局部索引结点中,而上层的全局索引则起到一个定位和导向的作用,由全局索引服务器负责管理。
[0034]在存储索引建立的时候,首先会对待索引的数据集进行切分,按照平均的原则,分成包含等量数据的数据子集,划分的数据子集的个数与下层的局部索引服务器相等。然后,划分好的数据子集与下层索引服务器一一对应,在各下层索引服务器中以SkipList为基础建立局部索引,下层索引服务器将数据子集的各个数据分别存放到局部索引的各个结点中,完成局部索引的建立。
[0035]在局部索引建立完成的基础上,各局部索引挑选桩结点作为自己索引范围的“代表”发布到上层的全局索引中,其中,必须包括局部索引中的桩结点,即图1中的黑色圆圈部分。发布时,并不是直接将下层局部索引中结点原封不动的拷贝给上层全局索引作为结点,而是抽取这些被发布结点的元数据,包括:索引的键,局部索引服务器IP地址,局部索引服务器磁盘物理块号,仅将元数据发送到上层全局索引服务器中,可以达到减轻上层全局索引的内存开销和存储更多结点的目的。全局索引服务器接收到下层各局部索引发布的元数据后,通过SkipList的形式将这些元数据作为全局索引结点组织成一个全局索引,在逻辑上将下层各独立的局部索引关联起来,维持了索引空间的整体一致性。
[0036]图2是本发明中发布元数据结点的调整示意图;
[0037]局部索引向全局索引发布桩结点的元数据进行关联后,各局部索引会根据预估的收益,判断是否要继续往局部索引的下一层级进行发布:
[0038]如果往局部索引的下一层级进行发布,云存储系统的查询速度变化率为正向,并且大于全局索引服务器的内存占用变换率,则将局部索引的下一层级结点的元数据发布到上层的全局索引中,否则,不往下一层级进行发布。
[0039]在本实施例中,如图2所述,本发明引入动态发布调整算法,下层的局部索引根据预估的收益对下一层级即L2 (L3层级为当前发布的层级)进行判断,看是否需要进行发布,下一层级L2的收益即云存储系统的查询速度变化率为正向,并且大于全局索引服务器的内存占用变化率,因此,将L2层级的结点的元数据发布到上层的全局索引中。
[0040]本发明中的索引存储结构采用下层的局部索引向上层的全局索引发布结点的元数据,在上层的全局索引服务器中构建全局索引,来维护索引结构的整体性。在下层的局部索引发布向上层的全局索引发布结点的元数据时,采用的是自顶向下的方式逐步增加发布的结点的元数据。首先,每一个局部索引将最高层级(图2中的L4层级)结点的元数据发布到全局索引中,SkipList的特性保证了最高层的结点必然包括桩结点,接着各局部索引会根据预估的收益,判断是否要继续往下一层级发布。
[0041]预估的策略根据的是局部索引发布之后,整体索引结构即云存储系统的查询速度变化率和全局服务器的内存变化率为基准。图2给出了一个局部索引发布的结点从L3层级向L2层级延伸时,上层全局索引中结点变化的情况。因为SkipList本身的特性,下一层级的结点总是包含着上一层级的结点,所以在向下一层级扩展发布的时候,仅需要将之前没有包含的新结点的元数据发送给上层的全局索引,即仅在全局索引中插入之前没有的结点的元数据。
[0042]对于SkipList来说,其索引的数据是存储于最底层的结点中,同时各结点以P的概率向上升高,升高的部分作为查询的加速结点使用。因此,在SkipList中自顶向下结点的数量将会以幂级的形式增加。与下层局部索引发布的结点数量相对应,上层全局索引的内存开销也将以幂级的形式增加。基于这个原因,下层局部索引不能不加限制的向上层发布结点的元数据,应以索引结构即云存储系统整体的查询速度和内存开销的综合值作为发布的判断依据。
[0043]图3是局部索引发布到全局索引后,索引结构整体的查询速度以及全局索引服务器内存占用情况的示意图。从图3可以看出,随着发布层数的增加,索引结构整体的查询速度提升趋势逐渐变缓,而全 局索引服务器的内存占用即开销则明显升高。因此,本发明在发布时会根据查询速度和内存占用的变化情况作为判断,设定一个阈值,作为发布层数的最大上界。具体方法为:设Qtjld为局部索引发布下一层结点元数据之前,索引结构整体的查询速度。Qnrat为局部索引发布下一层结点数据之后,预估的索引结构整体的查询速度。假定将局部索引发布到下一层,则发布之后的索引结构整体查询速度变化率为:
【权利要求】
1.一种云环境下可扩展存储索引结构的实现方法,其特征在于,包括以下步骤: (1)、主从式的可扩展存储索引的两层结构 整个存储索引结构分为上下两层,上层为全局索引,由全局索引服务器负责管理,下层为多个局部索引,每个局部索引由一个局部索引服务器负责管理; 对待索引的数据集进行切分,按照平均的原则,分成包含等量数据的数据子集,划分的数据子集的个数与局部索引服务器相等;然后,划分好的数据子集与下层索引服务器一一对应,并在各下层索引服务器中以SkipList为基础建立局部索引,下层索引服务器将数据子集的各个数据分别存放到局部索引的各个结点中,完成局部索引的建立; 在局部索引建立完成的基础上,各局部索引挑选桩结点作为自己索引范围的“代表”发布到上层的全局索引中;发布时,抽取发布的桩结点的元数据发送到上层的全局索引服务器中,元数据包括:索引的键,局部索引服务器IP地址,局部索引服务器磁盘物理块号,以达到减轻上层索引的内存开销和存储更多结点的目的;全局索引服务器接收到下层各局部索引发布的元数据后,通过SkipList的形式将这些元数据作为全局索引结点组织成一个全局索引,在逻辑上将下层各独立的局部索引关联起来,维持了索引空间的整体一致性; (2)、发布元数据结点的调整 局部索引向全局索引发布桩结点的元数据进行关联后,各局部索引会根据预估的收益,判断是否要继续往局部索引的下一层级进行发布: 如果往局部索引的下一层级进行发布,云存储系统的查询速度变化率为正向,并且大全局索引服务器的内存占用变化率,则将局部索引的下一层级结点的元数据发布到上层的全局索引中,否则,不往下一层级进行发; (3)、查询 3.1)、单键值查询 al、由上层的全局索引服务器作为处理查询的入口,首先,在全局索引中查询到待查询键的全局索引结点;a2、根据全局索引中查询到的全局索引结点,定位到下层具体的某一个局部索引服务器上,将查询操作转移给该局部索引服务器继续处理;a3、局部索引服务器执行查询操作,查询本机负责的局部索引,找到待查键对应的数据后,直接返回给查询请求发起端; 3.2)、范围查询 bl、按照单键值查询的方式,以待查询键的区间的下界为键,找到具体某一个局部索引中对应的结点山2、找到的结点为起点,顺序向后遍历并缓存查询到的数据,直到找到待查询键的区间的上界为止,然后将所有找到的数据返回给查询请求发起端。
2.根据权利要求1所述的可扩展存储索引结构的实现方法,其特征在于,还包括局部索引的分裂过程: 以欲进行分裂处理的局部索引S1的桩结点为起始结点X,从高度i开始找到右边第一个高度等i+Ι的结点wall (x, i),i为分裂因子,是分裂位置的层高; 以结点wall (X,i)为界,将局部索引S1前半部分指向结点wall (X,i)结点的后继指针修改为NULL,即从局部索引S1中删除后半部分的结点; 以结点wall (X,i)为界,将后半部分的结点发送给局部索引S2,逐个插入到局部索引S2中,即S2为接收S1分裂出来的后半部分数据的局部索引。前半部分即局部索引S1继续保留在原索引服务器中,而后半部分即局部索引S2可以选择存储到一台新的局部索引服务器,或是迁移到已有的负载较轻的局部索引服务器上。
3.根据权利要求1所述的可扩展存储索引结构的实现方法,其特征在于,所述的如果往局部索引的下一层级进行发布,云存储系统的查询速度变化率为正向,并且大于全局索引服务器的内存占用变化率,则将局部索引的下一层级结点的元数据发布到上层的全局索引中,否则,不往下一层级进行发布为: 设Qtjld为局部索引发布下一层结点元数据之前,索引结构整体的查询速度,Qnrat为局部索引发布下一层结点数据之后,预估的索引结构整体的查询速度;将局部索引发布到下一层,则发布之后的索引结构整体查询速度变化率为:

【文档编号】G06F17/30GK103544300SQ201310530188
【公开日】2014年1月29日 申请日期:2013年10月31日 优先权日:2013年10月31日
【发明者】周维, 路劲, 姚绍文, 罗静 申请人:云南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1