面向Cassandra的分布式可扩展四叉树索引方法技术

技术编号:14799858 阅读:53 留言:0更新日期:2017-03-14 21:54
本发明专利技术公开了面向Cassandra的分布式可扩展四叉树索引方法及基于该方法的查询方法,属于空间数据存储与管理技术领域。本发明专利技术提出了在使用Cassandra存储空间数据时建立索引和实现空间查询的方法,提出了从结合象限、索引域和四叉树的可扩展四叉树索引编码方法、基于Cassandra的空间对象与索引编码映射关系的存储方法和在该索引下执行空间查询的方法。本发明专利技术充分利用了Cassandra数据模型和读写特点,构建多层空间索引,可针对空间实体的大小在不同层级进行索引,适用于分布式存环境下空间索引的实现,有助于空间查询的并行执行,解决Cassandra在存储空间数据时不支持空间索引和空间查询的问题。

【技术实现步骤摘要】

本专利技术涉及使用Cassandra存储空间数据时建立空间索引和执行空间查询的方法,属于空间数据存储与管理
更特定言之,本专利技术涉及对矢量、栅格等类型空间数据的空间位置映射到一维的字符串型空间索引编码,使得Cassandra能够支持空间索引和空间查询。
技术介绍
随着对地观测技术、智能移动终端和传感器技术的飞速发展,空间数据获取手段日益丰富,空间数据的数据量呈几何倍数增长。对兼具数据密集型和计算密集型特点的空间数据来说,爆炸性增长空间数据的存储成为极具挑战的课题。使用非关系型数据库解决空间数据存储难题成为研究的热点。近年来,已有许多的研究和应用使用HBase、MongoDB和Cassandra等非关系型数据库构建可扩展、大规模的分布式空间数据存储方案。Cassandra是对等集群结构的分布式非关系型数据库,拥有非常灵活的数据模型和弹性集群扩展能力。海量空间数据的空间索引往往会由于存储空间开销或索引空间重叠等剧增而导致性能下降。索引空间范围等的变化往往会导致索引重建。然而,在空间数据快速增长的情况下,索引范围极有可能发生变化。对大量数据重新构建索引,将造成严重的资源浪费。现有的空间索引技术大多使用格网、四叉树或者R树及它们的变种构建。这些索引技术也大多在关系数据存储环境下构建集中式空间索引。不同于关系数据库,Cassandra依据行键值读写数据,对复杂查询支持较差,特别是未提供对空间索引的支持。因而使用Cassandra存储空间数据就要在Cassandra数据模型下实现空间索引和空间查询。
技术实现思路
针对现有技术存在的问题,本专利技术结合Cassandra的数据模型和读写特点,提出了面向Cassandra的分布式可扩展四叉树索引机制和空间查询方法,旨在解决Cassandra在存储空间数据时不支持空间索引和空间查询的问题。为了解决上述技术问题,本专利技术采用如下的技术方案:面向Cassandra的分布式可扩展四叉树索引机制和空间查询方法,用于Cassandra存储空矢量、栅格等类型空间数据时构建空间索引和空间查询,包括:提供可扩展四叉树索引的构建方法,用于构建可扩展四叉树索引以及使用索引结点记录矢量、栅格等类型的空间数据。提供空间索引编码方法,用于编码可扩展四叉树索引的各个结点。提供Cassandra存储环境下的空间索引存储结构,用于实现在Cassandra集群中存储空间索引编码与空间对象标识的映射关系;提供空间查询方法,用于在所建立的空间索引之上实现空间查询中的区域查询和点查询。面向Cassandra的分布式可扩展四叉树索引机制,其特征在于,当需要为空间数据建立空间索引时,包括步骤:步骤1:设计空间索引存储结构,建立索引列族;步骤2:指定基点以及四叉树最小网格间距、深度,建立可扩展四叉树索引,具体包括以下子步骤:步骤2.1:指定可扩展四叉树索引的基点,以基点为中心将正在空间区域划分为一系列大小相等的网格区域,每个网格区域称为索引域;步骤2.2:指定四叉树的最小网格间距和深度,计算索引域的大小;步骤2.3:以索引域的大小为网格大小进行网格划分;步骤2.4:以步骤2.2所指定的最小网格间距和深度为索引域建立四叉树索引;步骤3:计算记录空间对象的索引结点及该结点的空间索引编码,其中,分三种情况记录空间对象:第一种情况,占据一定空间范围的空间对象跨越多个索引域,使用所跨越的各个索引域的四叉树根结点进行记录;第二种情况,占据一定空间范围的空间对象在单个索引域内,依据其最小外包矩形MBR确定使用哪一个结点进行记录;空间对象使用能容纳其最小外包矩形的四叉树最小结点进行记录;若空间对象覆盖多个结点,则使用结点的父结点记录,并且按照这一规则逐层递进直至根结点为止;第三种情况,对于不占据空间范围的空间对象(如点状要素),直接记录在四叉树最底层的结点上;步骤4:在索引列族中记录索引的基本信息以及索引编码与空间对象标识的映射关系,实现索引信息的分布式存储。在上述的面向Cassandra的分布式可扩展四叉树索引机制,上述步骤3进行空间索引编码时进一步包括子步骤:步骤3.1:索引域以基点为中心被分割成四个象限,以从东南方向开始按逆时针方向四个象限编码为A、B、C、D;步骤3.2:在象限内对索引域进行编码,索引域使用象限编码和索引域在该象限内的编码共同表示;步骤3.3:为索引域的四叉树结点进行编码;步骤3.4:空间索引编码使用“索引域编码+四叉树结点编码”的方式构造,二者之间使用符号“:”分隔。在上述的面向Cassandra的分布式可扩展四叉树索引机制,上述步骤3.2中索引域在象限内使用Morton码进行编码;设基点坐标为(originx,originy),索引域中心点坐标为(x,y),索引域最小网格间距为gridsize,Morton码计算函数为MortonEncoding,则计算公式为:在上述的面向Cassandra的分布式可扩展四叉树索引机制,所述步骤步骤3.3中四叉树结点使用线性可排序四叉树编码方式编码;设四叉树的深度为n,最底层结点的行列为(row,col),Hilbert编码函数为HilbertEncoding,则结点编码计算公式为:nodeCode=HilbertEncoding(col,row,n-1)×2+1。在上述的面向Cassandra的分布式可扩展四叉树索引机制,所述步骤3.3中四叉树结点使用线性可排序四叉树编码方式编码,四叉树索引除底层结点外其他结点的编码计算公式为:nodeCode=childcode1+childcode2+childcode3+childcode44.]]>在上述的面向Cassandra的分布式可扩展四叉树索引机制,所述步骤4存储索引信息时,索引信息存储在索引列族中,索引列族采用多列模式存储索引信息,包括子步骤:步骤4.1:空间索引编码为索引列族的行键值,用于确定该行存储在Cassandra集群哪个节点之上;步骤4.2:与空间索引编码相对应的空间对象存储为列,每列包含空间对象的标识和MBR;步骤4.3:空间对象标识为列名,空间对象的MBR为列值;步骤4.4:同一空间索引编码对应多个空间对象时,以多列模式存储,即以空间索引编码为行键值按照步骤步骤4.2、步骤4.3所述规则动态创建列,并将列按列名顺序存储,形成以空间索引编码为行键值的行;步骤本文档来自技高网
...

【技术保护点】
面向Cassandra的分布式可扩展四叉树索引机制,其特征在于,当需要为空间数据建立空间索引时,包括步骤:步骤1:设计空间索引存储结构,建立索引列族;步骤2:指定基点以及四叉树最小网格间距、深度,建立可扩展四叉树索引,具体包括以下子步骤:步骤2.1:指定可扩展四叉树索引的基点,以基点为中心将正在空间区域划分为一系列大小相等的网格区域,每个网格区域称为索引域;步骤2.2:指定四叉树的最小网格间距和深度,计算索引域的大小;步骤2.3:以索引域的大小为网格大小进行网格划分;步骤2.4:以步骤2.2所指定的最小网格间距和深度为索引域建立四叉树索引;步骤3:计算记录空间对象的索引结点及该结点的空间索引编码,其中,分三种情况记录空间对象:第一种情况,占据一定空间范围的空间对象跨越多个索引域,使用所跨越的各个索引域的四叉树根结点进行记录;第二种情况,占据一定空间范围的空间对象在单个索引域内,依据其最小外包矩形MBR确定使用哪一个结点进行记录;空间对象使用能容纳其最小外包矩形的四叉树最小结点进行记录;若空间对象覆盖多个结点,则使用结点的父结点记录,并且按照这一规则逐层递进直至根结点为止;第三种情况,对于不占据空间范围的空间对象,直接记录在四叉树最底层的结点上;步骤4:在索引列族中记录索引的基本信息以及索引编码与空间对象标识的映射关系,实现索引信息的分布式存储。...

【技术特征摘要】
1.面向Cassandra的分布式可扩展四叉树索引机制,其特征在于,当需要
为空间数据建立空间索引时,包括步骤:
步骤1:设计空间索引存储结构,建立索引列族;
步骤2:指定基点以及四叉树最小网格间距、深度,建立可扩展四叉树索引,
具体包括以下子步骤:
步骤2.1:指定可扩展四叉树索引的基点,以基点为中心将正在空间区域划
分为一系列大小相等的网格区域,每个网格区域称为索引域;
步骤2.2:指定四叉树的最小网格间距和深度,计算索引域的大小;
步骤2.3:以索引域的大小为网格大小进行网格划分;
步骤2.4:以步骤2.2所指定的最小网格间距和深度为索引域建立四叉树索
引;
步骤3:计算记录空间对象的索引结点及该结点的空间索引编码,其中,分
三种情况记录空间对象:
第一种情况,占据一定空间范围的空间对象跨越多个索引域,使用所跨越
的各个索引域的四叉树根结点进行记录;
第二种情况,占据一定空间范围的空间对象在单个索引域内,依据其最小
外包矩形MBR确定使用哪一个结点进行记录;空间对象使用能容纳其最小外包
矩形的四叉树最小结点进行记录;若空间对象覆盖多个结点,则使用结点的父
结点记录,并且按照这一规则逐层递进直至根结点为止;
第三种情况,对于不占据空间范围的空间对象,直接记录在四叉树最底层
的结点上;
步骤4:在索引列族中记录索引的基本信息以及索引编码与空间对象标识的

\t映射关系,实现索引信息的分布式存储。
2.根据权利要求1所述的面向Cassandra的分布式可扩展四叉树索引机制,
其特征在于,上述步骤3进行空间索引编码时进一步包括子步骤:
步骤3.1:索引域以基点为中心被分割成四个象限,以从东南方向开始按逆
时针方向四个象限编码为A、B、C、D;
步骤3.2:在象限内对索引域进行编码,索引域使用象限编码和索引域在该
象限内的编码共同表示;
步骤3.3:为索引域的四叉树结点进行编码;
步骤3.4:空间索引编码使用“索引域编码+四叉树结点编码”的方式构造,
二者之间使用符号:分隔。
3.根据权利要求1所述的面向Cassandra的分布式可扩展四叉树索引机制,
其特征在于,上述步骤3.2中索引域在象限内使用Morton码进行编码;设基点
坐标为(originx,originy),索引域中心点坐标为(x,y),索引域最小网格间
距为gridsize,Morton码计算函数为MortonEncoding,则计算公式为:
4.根据权利要求1所述的面向Cassandra的分布式可扩展四叉树索引机制,
其特征在于,所述步骤步骤3.3中四叉树结点使用线性可排序四叉树编码方式
编码,设四叉树的深度为...

【专利技术属性】
技术研发人员:涂振发
申请(专利权)人:华中师范大学
类型:发明
国别省市:湖北;42

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

1