当前位置: 首页 > 专利查询>云南大学专利>正文

云环境下可扩展存储索引结构的构建和查询方法技术

技术编号:14817344 阅读:66 留言:0更新日期:2017-03-15 11:36
本发明专利技术公开了一种云环境下可扩展存储索引结构的构建和查询方法,首先建立KD树索引结构,在建立KD树时依次采用每个索引维的数据作为层结点的划分标准,将构建得到的KD树中各个叶子结点数据集的索引数据存储在HBase中,并对整个数据集建立其Bloom Filter结构并存储;在单健值查询时,先通过Bloom Filter结构检测数据是否存在,然后再根据KD树进行精确查询;在范围查询时,确定查询范围对应的子树,然后根据子树下的叶子节点进行精确查询。本发明专利技术利用KD树这种数据结构并结合HBase来有针对性地构建云环境下可扩展存储索引结构,利用KD树将各维度在一定范围内的数据子集映射到一起,实现多维范围的查询。

【技术实现步骤摘要】

本专利技术属于云存储
,更为具体地讲,涉及一种云环境下可扩展存储索引结构的构建与查询方法。
技术介绍
随着计算机及网络技术的发展,云计算技术作为一种高性能、低成本的实用分布式计算技术,已被广泛运用于以大数据处理为代表的各种网络应用中。高可扩展性和可靠性的云存储系统逐渐成为大数据处理的首选方案之一,已有的优秀云存储系统包括:Google的GFS、MapReduce以及其开源实现Hadoop、亚马逊的Dynamo和Facebook的Cassandra等。相对于传统数据存储系统,云存储系统分布更广,支持数据更多,这就意味着云存储时代的辅助索引系统必然发生大的变化。当前大多数的云存储系统都采用健-值(Key-Value)模型,将查询的键(key)和具体值(value)映射为键值对(kv-pair)来存取数据。该模型简单,适合通过主键进行查询。在单键查询的时候有着良好的表现,但却不能有效支持范围查询。实际的应用效果表明,这类基于Key-Value模型的云存储系统还存在一些亟待提高的地方。例如,对于一个在线视频点播系统来说,用户们往往倾向于采用多于一个的键值来进行查询,或需要查询特定属性处于某一个数据范围之内的视频信息。为了满足上述的应用需求,当前的解决方案主要是通过运行一个后台批处理任务(例如运行一个MapReduce的任务),来扫描整个数据集然后得到查询结果。然而,这类解决方案缺乏时效性,新存入的数据不能被及时的查询到,必须等到后台的批处理任务完成了完整的扫描,数据才会可查。上述分析表明,当前云存储系统在多维度查询和范围查询方面支持的都不是很理想、且时效性差,有必要构建云环境下存储索引结构。目前少数基于不同数据结构的双层存储索引结构已经被提出。这些方案能够很方便地实现云存储系统的可扩展性,使云存储系统能够同时支持大规模的查询。但是,这些方案在全局索引中大都采用了基于P2P协议的覆盖网络来实现并行查询,但是P2P网络本身的维护比较复杂,查询时的网络开销也比较大,这会影响到云存储系统的查询性能。同时,由于现有的云存储系统一般都是master-slave结构的,要在这些节点上重新构建一个P2P网络,会对原有的存储系统带来一定的负面影响。
技术实现思路
本专利技术的目的在于克服现有技术的不足,提供一种云环境下可扩展存储索引结构的构建与查询方法,在云存储系统中存储索引结构实现快速有效的多维查询。为实现上述专利技术目的,本专利技术云环境下可扩展存储索引结构的构建与查询方法包括以下步骤:S1:记数据集中每个数据为Xi=(xi1,xi2,…xij,…,xiL),其中i=1,2,…,N,j=1,2,…,L,其中N表示数据集中数据数量,L表示数据维数,根据需要从L维数据中选择M维数据作为索引维,然后根据以下方法构建KD树:S1.1:令层数d=1,根据数据集中每个数据的第1维索引维数据,筛选得到其中位数,将该中位数所对应的数据作为根结点;S1.2:令d=d+1;S1.3:如果d<D,D表示预设的KD树的深度,进入步骤S1.4,否则KD树构建完成;S1.4:计算Ad=d%M,%表示取余;S1.5:对于第d-1层中的每个结点,从数据集获取该结点对应的左子集和右子集范围内的所有数据,对于左子集,根据每个数据的第Ad维索引维数据,筛选得到其中位数,将该中位数所对应的数据作为左子集的根结点;对于右子集,根据每个数据的第Ad维索引维数据,筛选得到其中位数,将该中位数所对应的数据作为右子集的根结点;返回步骤S1.2;S2:获取步骤S1中构建得到的KD树中各个叶子结点数据集并存储,将叶子结点对应的范围信息作为RowKey值,将叶子结点数据集中所有数据存储指针构成的数组作为Value值,将索引数据存储在HBase中;S3:对整个数据集建立其BloomFilter结构并存储;S4:在单健值查询时,采用以下方法:通过数据集的BloomFilter结构检测所查询数据是否存在,如果未检测到数据存在,则报告数据不存在,如果存在,则根据KD树的路由定位到数据所在的叶子结点的Key值,然后根据Key值提取到对应的数据集,再进行精确查询,提取数据并返回或报告数据不存在;S5:在范围查询时,采用以下方法:根据KD树对数据在所选维度上的划分,确定查询范围对应的子树;获取该子树下所有叶子结点对应的Key值,如果要查询的结果是Value中已经预先计算好的函数值,则直接从对应Value中提取数据并返回,如果不是预先计算的函数值,则通过HBase提取得到所有Key值对应的数据,根据范围查询条件筛选出相应数据,然后计算得到函数值后返回结果。本专利技术云环境下可扩展存储索引结构的构建和查询方法,首先建立KD树索引结构,在建立KD树时依次采用每个索引维的数据作为层结点的划分标准,将构建得到的KD树中各个叶子结点数据集的索引数据存储在HBase中,并对整个数据集建立其BloomFilter结构并存储;在单健值查询时,先通过BloomFilter结构检测数据是否存在,然后再根据KD树进行精确查询;在范围查询时,确定查询范围对应的子树,然后根据子树下的叶子节点进行精确查询。本专利技术利用KD树这种数据结构并结合HBase来有针对性地构建云环境下可扩展存储索引结构,利用KD树将各维度在一定范围内的数据子集映射到一起,这样知道某些维度的范围就可以实现多维范围的查询。同时,针对单键值查询,利用Bloom-Filter的海量数据过滤能力,提高单点查询的效率。此外,本专利技术中的存储索引结构可以根据用户需求进行构建,以满足不同程度的查询需求与索引结构空间占用的平衡,具有很好的扩展性。附图说明图1是本专利技术中可扩展存储索引的架构示意图;图2是本专利技术云环境下可扩展存储索引结构的构建和查询方法的流程图;图3是本专利技术中KD树构建的流程图;图4是本实施例中数据集;图5是图4所示数据集的KD树;图6是单键值查询的具体实例流程图;图7是范围查询的具体实例流程图。具体实施方式下面结合附图对本专利技术的具体实施方式进行描述,以便本领域的技术人员更好地理解本专利技术。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本专利技术的主要内容时,这些描述在这里将被忽略。实施例图1是本专利技术中可扩展存储索引的架构示意图。如图1所示,本专利技术中可扩展存储索引采用KD树型结构,每个结点对应一个范围信息,用于划分该结点左、右子结点所对应的数据范围。该树型结构的深度D可以自定义,从而控制每个叶子节点对应的数据集大小。例如,当完整数据集大小为1亿条记录,如果设置KD树的深度为11,那么该KD树具有1024个叶子结点,则每个叶子节点对应约1万条记录;如果设置KD树的深度为21,那么该KD树具有1048576个叶子节点,每个叶子节点对应约100条记录。KD树中的内部结点,只是起到路由作用,因此可以称之为路由结点(Router-Node)。叶子结点对应多条记录的集合,本专利技术称每个叶子结点对应的数据结构为一个叶子节点数据集(LNS,Leaf-Node-Set)。根据KD树的特点,本专利技术提出了云环境下可扩展存储索引结构的构建和查询方法。图2是本专利技术云环境下可扩展存储索引结构的构建和查询方法的流程图。如图2所示,本专利技术云环境下可扩展存储索引结构的构建本文档来自技高网
...
云环境下可扩展存储索引结构的构建和查询方法

【技术保护点】
一种云环境下可扩展存储索引结构的构建和查询方法,其特征在于,包括以下步骤:S1:记数据集中每个数据为Xi=(xi1,xi2,…xij,…,xiL),其中i=1,2,…,N,j=1,2,…,L,其中N表示数据集中数据数量,L表示数据维数,根据需要从L维数据中选择M维数据作为索引维,然后根据以下方法构建KD树:S1.1:令层数d=1,根据数据集中每个数据的第1维索引维数据,筛选得到其中位数,将该中位数所对应的数据作为根结点;S1.2:令d=d+1;S1.3:如果d<D,D表示预设的KD树的深度,进入步骤S1.4,否则KD树构建完成;S1.4:计算Ad=d%M,%表示取余;S1.5:对于第d‑1层中的每个结点,从数据集获取该结点对应的左子集和右子集范围内的所有数据,对于左子集,根据每个数据的第Ad维索引维数据,筛选得到其中位数,将该中位数所对应的数据作为左子集的根结点;对于右子集,根据每个数据的第Ad维索引维数据,筛选得到其中位数,将该中位数所对应的数据作为右子集的根结点;返回步骤S1.2;S2:获取步骤S201中构建得到的KD树中各个叶子结点数据集并存储,将叶子结点对应的范围信息作为RowKey,将叶子结点数据集中所有数据存储指针构成的数组作为Value值,将索引数据存储在HBase中;S3:对整个数据集建立其Bloom Filter结构并存储;S4:在单健值查询时,采用以下方法:通过数据集的Bloom Filter结构检测所查询数据是否存在,如果未检测到数据存在,则报告数据不存在,如果存在,则根据KD树的路由定位到数据所在的叶子结点的Key值,然后根据Key值提取到对应的数据集,再进行精确查询,提取数据并返回或报告数据不存在;S5:在范围查询时,采用以下方法:根据KD树对数据在所选维度上的划分,确定查询范围对应的子树;获取该子树下所有叶子结点对应的Key值,如果要查询的结果是Value中已经预先计算好的函数值,则直接从对应Value中提取数据并返回,如果不是预先计算的函数值,则通过HBase提取得到所有Key值对应的数据,根据范围查询条件筛选出相应数据,然后计算得到函数值后返回结果。...

【技术特征摘要】
1.一种云环境下可扩展存储索引结构的构建和查询方法,其特征在于,包括以下步骤:S1:记数据集中每个数据为Xi=(xi1,xi2,…xij,…,xiL),其中i=1,2,…,N,j=1,2,…,L,其中N表示数据集中数据数量,L表示数据维数,根据需要从L维数据中选择M维数据作为索引维,然后根据以下方法构建KD树:S1.1:令层数d=1,根据数据集中每个数据的第1维索引维数据,筛选得到其中位数,将该中位数所对应的数据作为根结点;S1.2:令d=d+1;S1.3:如果d<D,D表示预设的KD树的深度,进入步骤S1.4,否则KD树构建完成;S1.4:计算Ad=d%M,%表示取余;S1.5:对于第d-1层中的每个结点,从数据集获取该结点对应的左子集和右子集范围内的所有数据,对于左子集,根据每个数据的第Ad维索引维数据,筛选得到其中位数,将该中位数所对应的数据作为左子集的根结点;对于右子集,根据每个数据的第Ad维索引维数据,筛选得到其中位数,将该中位数所对应的数据作为右子集的根结点;返回步骤S1.2;S2:获取步骤S201中构建得到的KD树中各个叶子结点数据集并存储,将叶子结点对应的范围信息作为...

【专利技术属性】
技术研发人员:周维刘建坤罗静姚绍文张浩
申请(专利权)人:云南大学
类型:发明
国别省市:云南;53

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1