论文部分内容阅读
随着国民经济的发展和技术的进步,空间数据的应用早突破专业领域的限制,在国土、资源、环境、交通和规划等众多领域的应用日益广泛。“智慧地球”、“智慧中国”和“智慧城市”等的建设更是极大拓展了空间数据的应用范围。由于对地观测技术的飞速发展,空间数据的获取手段日益丰富,空间数据呈几何倍数增加。迅速增加的空间数据在容量、性能、可用性和扩展性等方面对存储系统提出了更高的要求。现有的空间数据库大多在关系数据库之上构建,随着数据量的激增,大多出现了扩展性差、并发读写能力低和数据结构变更困难等问题,难以满足当前空间数据的应用需求。本文提出了运用云计算,特别是NoSQL数据库技术构建海量空问数据的存储来解决上述问题。具体来说,论文的主要研究工作如下:(1)针对海量空间数据服务在容量、扩展性等方面的要求,设计了一种可扩展的海量空间数据存储服务体系结构和服务模型。海量空间数据存储服务体系采用分层结构,每一层均采用分布式集群方式构建,因而具有良好的扩展性。分布式消息队列被应用到空间数据服务之中,以降低耦合度,提高扩展能力,并对瞬时激增的请求进行缓冲;分布式缓存用来减少复杂的空间数据存取逻辑和计算逻辑,降低请求延迟。空间数据服务模型被设计用来简化服务的开发和部署。鉴于空问数据服务涉及的数据量较大、资源消耗较多,空间数据服务采用单调服务模式构建。(2)提出了基于Redis构建分布式内存缓存和消息队列的方法。分布式内存缓存Redis-RCache和消息队列Redis-RMQ均在以一致性哈希算法为基础的Redis集群之上构建。结合缓存在空间数据中的应用场景,为Redis-RCache设计了缓存项结构,缓存一致性策略和替换算法等。结合消息队列的典型应用场景,为Redis-RMQ设计了消息结构、消息可见性策略、有毒消息处理机制和消息的生命周期。为解决一致性哈希集群环境下无法保持消息先后顺序的问题,Redis-RMQ通过全局队列存储消息的顺序和状态,并同时实现了先进先出队列和优先级队列。(3)设计了列式存储环境下海量空间数据的存储模型及其空间数据引擎。列式存储模型下的空间数据按照数据集组-数据集-数据描述-数据块的方式组织数据。空间数据采用分块的方式存储在集群中,提高了空间数据的并发读写能力。本文设计了固定字节长度分块、图形范围分块和要素分块三种空间数据划分策略。通过建立列式存储与空间数据模型问的映射关系,为该空间数据模型所设计的空间数据引擎实现了业务逻辑与底层存储结构的分离。(4)针对列式存储环境下空问查询困难以及索引区域变化容易导致索引重建的问题,提出了一种分布式可扩展四叉树索引DAE-QTree及其空间查询方法。通过将整个空间范围划分为一系列的网格,并每个网格建立四义树索引,DAE-QTree索引实现了索引区域的扩展。空间对象记录在能容纳该对象的最小四叉树结点上其索引编码使用四叉树结点编码及四叉树所在网格的编码共同构造。通过将索引分散存储在Cassandra集群中,DAE-QTree实现了大索引记录情况下的快速定位。结合DAE-QTree的索引原理和编码方式以及经典的两步空间查询方法,本文为DAE-QTree设计了列式存储环境下的空间查询方法。