发明名称 云环境下可扩展存储索引结构的构建和查询方法
摘要 本发明公开了一种云环境下可扩展存储索引结构的构建和查询方法,首先建立KD树索引结构,在建立KD树时依次采用每个索引维的数据作为层结点的划分标准,将构建得到的KD树中各个叶子结点数据集的索引数据存储在HBase中,并对整个数据集建立其Bloom Filter结构并存储;在单健值查询时,先通过Bloom Filter结构检测数据是否存在,然后再根据KD树进行精确查询;在范围查询时,确定查询范围对应的子树,然后根据子树下的叶子节点进行精确查询。本发明利用KD树这种数据结构并结合HBase来有针对性地构建云环境下可扩展存储索引结构,利用KD树将各维度在一定范围内的数据子集映射到一起,实现多维范围的查询。
申请公布号 CN106503196A 申请公布日期 2017.03.15
申请号 CN201610944106.6 申请日期 2016.10.26
申请人 云南大学 发明人 周维;刘建坤;罗静;姚绍文;张浩
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 成都行之专利代理事务所(普通合伙) 51220 代理人 温利平;陈靓靓
主权项 一种云环境下可扩展存储索引结构的构建和查询方法,其特征在于,包括以下步骤:S1:记数据集中每个数据为X<sub>i</sub>=(x<sub>i1</sub>,x<sub>i2</sub>,…x<sub>ij</sub>,…,x<sub>iL</sub>),其中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:计算A<sub>d</sub>=d%M,%表示取余;S1.5:对于第d‑1层中的每个结点,从数据集获取该结点对应的左子集和右子集范围内的所有数据,对于左子集,根据每个数据的第A<sub>d</sub>维索引维数据,筛选得到其中位数,将该中位数所对应的数据作为左子集的根结点;对于右子集,根据每个数据的第A<sub>d</sub>维索引维数据,筛选得到其中位数,将该中位数所对应的数据作为右子集的根结点;返回步骤S1.2;S2:获取步骤S201中构建得到的KD树中各个叶子结点数据集并存储,将叶子结点对应的范围信息作为RowKey,将叶子结点数据集中所有数据存储指针构成的数组作为Value值,将索引数据存储在HBase中;S3:对整个数据集建立其Bloom Filter结构并存储;S4:在单健值查询时,采用以下方法:通过数据集的Bloom Filter结构检测所查询数据是否存在,如果未检测到数据存在,则报告数据不存在,如果存在,则根据KD树的路由定位到数据所在的叶子结点的Key值,然后根据Key值提取到对应的数据集,再进行精确查询,提取数据并返回或报告数据不存在;S5:在范围查询时,采用以下方法:根据KD树对数据在所选维度上的划分,确定查询范围对应的子树;获取该子树下所有叶子结点对应的Key值,如果要查询的结果是Value中已经预先计算好的函数值,则直接从对应Value中提取数据并返回,如果不是预先计算的函数值,则通过HBase提取得到所有Key值对应的数据,根据范围查询条件筛选出相应数据,然后计算得到函数值后返回结果。
地址 650091 云南省昆明市翠湖北路2号