HBaseSpatial:一种基于HBase的可扩展的空间数据存储系统外文翻译资料
2022-10-24 22:08:20
英语原文共 8 页,剩余内容已隐藏,支付完成后下载完整资料
HBaseSpatial:一种基于HBase的可扩展的空间数据存储系统
摘要
近些年,空间数据规模发展的越来越大,存储遇到了很多问题。虽然传统的数据管理系统能有效的处理一些大空间数据,但现在数据的高插入率、高查询率以及TB级的数据大小已超出了传统的开源关系型数据库的处理能力。另一方面,键值对的存储方式能够有效支持大规模操作。为了解决大规模矢量空间数据的存储和查询问题,我们提出了HBaseSpatial,一种基于HBase的可扩展的空间数据存储系统。我们首先分析了HBase的分布式存储模型,然后设计了分布式存储和索引模式。通过大样本集和集群典型基准实验证实了我们的存储模型和索引算法与MongoDB和Mysql相比所具有的优势,实验证实我们的模型能有效的提高大空间数据的查询速率,同时还给存储提供了一种很好的解决方式。
关键词:大空间数据,HBase
- 引言
随着数据采集技术的进步,从多个数据源例如卫星观测、遥感影像、航空摄影和模型模拟实验等收集了大规模地理空间数据,这些数据的规模正在呈指数的增长至PB甚至EB级[31]。
作为该领域的重要空间数据类型,矢量数据已被广泛应用于空间信息的各个领域。然后,由于数据以及非结构化数据规模太大,怎样去存储和管理大规模扩张的矢量数据以及怎样有效的获取空间数据成为了很热门的研究方向。地理数据是地球表面作为空间数据和属性信息的基本参考框架数据。为了便于读取、存储、分析以及管理地理数据,我们建立了一个地理信息系统,简称GIS系统。GIS系统可以表示出现实空间中的任何物体,比如道路、陆地以及海拔等等。在GIS中矢量数据和光栅数据都是很常用的数据。在矢量数据结构中,一个区域会被分成多个多边形,每个多边形由许多线条或者图形组成。矢量数据结构高精度的存储着小部分数据和图形,很容易就能确定一个空间对象,但在处理空间关系上非常费时,因此他经常被用来描述图形数据;光栅数据结构的本质是以行和列标识网格数据的形式,所以能很轻松的处理空间关系,但数据存储容量和图形精度很低,所以经常被用来描述图像数据。
当前,我们大多使用文件系统管理光栅数据,用数据库来管理矢量数据。然而,矢量数据不仅仅有适合用传统关系型数据库来管理的结构化数据,还包含一些并不适合用关系型数据库来管理的非结构化数据。现在各大数据厂商也在不断优化矢量数据,很多厂商在他们的产品管理和扩展方面实现了对矢量数据的支持。大多数解决方案是将和矢量数据相关的属性数据存储在传统的关系型数据库,然后将实际的矢量数据存储在其他数据库或者用中间件。但他们的大部分功能是不够完善的,有着不少的缺陷。
此外,空间数据特别是矢量数据,其不仅具有在矢量数据实数部分的可变长度和各种非均匀的格式,而且还具有和矢量数据的属性数据在数量和类型上的不一致。例如,对于一个典型文件类型的文档矢量数据,字段的数量和字段数是不同的含义。如果用传统的关系型数据库来存储,你将会需要创建很多张表。这些数据都不是结构化数据意味着用传统关系型数据库来存储是非常不可取的。
SQL数据库提供丰富的语义来支持复杂的查询操作,但是对于简单的空间数据的查询,这些语义特征在空间数据的处理过程并不起作用,这将导致存储和查询时的额外系统资源的浪费。对于当前的GIS系统,空间数据属于大数据类型,随着空间数据规模的扩大,单个节点的处理能力将会成为瓶颈,单节点故障将会变得很严重。传统关系型数据库越运行在单节点的频率越高,支持关系型数据库的费用和配置费用也就越高。而且大多数关系型数据库集群的性能和可扩展性不是很好。
因此,大量矢量数据中的结构化和半结构化的存储、查询以及管理应充分考虑其自身的特征,利用传统关系型数据库来存储以及管理矢量数据变得并不那么恰当。HBase是高可靠性,高性能,面向列的,可扩展的分布式存储系统[6] [20] [3] [4]。HBase通过添加低成本商用服务器来增加计算能力和存储容量,它主要用来存储松动的非结构化以及半结构化数据。HBase的这些特征很适合大规模矢量数据的存储、分析以及管理。
基于以上背景,本课题提出了一个基于HBase的大规模矢量空间存储数据系统。该框架对于大空间数据提供了有效的和高效的分布式存储和索引,能够支持大规模分布式矢量空间数据存储和管理以及为辅助索引的可扩展性提供矢量数据,该范围能高并发量的支持基于于地理位置的查询。通过用该存储方法来存储矢量空间数据,我们可以很容易的扩大数据规模。我们的提议有如下几个显著的特征:
1)我们提出的分布式矢量空间数据存储和索引的设计基于HBase。
2)我们证明了该设计能用来改善空间数据存储和管理的效率。
本文剩下部分的组织结构如下:在第二部分,我们描述了大规模矢量空间数据分布式存储的相关工作;第三部分详细讲述了矢量空间数据的存储和索引;第四部分给出了我们的实验和结果评估;第五部分是小结。
目前,大多数空间数据存储系统都是对集中式空间数据存储系统的封装,例如SDBMS(空间数据管理系统)和本地文件系统。他们能很好的处理相对较小地理空间数据集,但在处理大规模空间数据时他们在地里空间基础设施上面临着巨大的挑战。一方面,基于SDBMS的存储系统由于缺乏可伸缩性而不能处理大规模空间数据。它为了存储空间和非空间数据(例如属性数据)将会请求更多的物理存储空间。另一方面,由于空间数据的多样性和长度可变,SDBMS需要增大数据类型来满足新的需求。此外,由于TB甚至PB级的地理空间数据已经司空见惯,存储系统需要处理和查询更大规模空间数据集。此外,由于基于单节点的SDBMS计算能力的限制,现有的存储系统不能有效的存储如此大规模的空间数据。
-
项目背景
- 传统的基于SQL的空间数据存储
基于传统SQL的空间数据存储系统在表中提供一种直接的结构形式来存储和管理信息,用简单的表来实现对数据的存储和查询,该多用户数据库采用RDBMS的机制。地理数据管理(例如磁盘存储)的属性类型定义、查询处理以及多用户处理等特性都依托于RDBMS。
MSQL的空间为SQL标准提供了OGCs的基本实现标准,但查询和分析操作利用白洁矩形而不是真正的几何形状[21]。MSQL空间存在着很多缺陷。从有利的一方面看来,它确实有空间类型、功能和索引,并且它为几何图形遵循OGC规范。然而,MySQL所支持的功能非常少导致很难实现复杂事物的存储和按边距包围检索的功能。此外,由于空间选项在(非事务)来实现MyISAM表类型,它是不可能在交易范围内使用空间对象。
关系型数据库系统从一开始就是设计用来在运行的时候能用扩展C类型来增加新的数据类型、功能和可用的方法[22][24][8]。正因为如此,该PostGIS的扩展都是被一支独立的开发团队开发的,但仍然非常紧密的整合进核心PostgreSQL数据库。PostGIS在发展早期开始遵循OGC SFSQL[14]议案,且实现了完整的规范覆盖。
传统的基于空间数据存储系统的SQL确实有一些优势,能显著降低客户端应用程序的开发时间。它弥补了数据库服务器的很多复杂功能,会为你做好组织和索引,并且你不需要重新实现这些操作者的功能。此外,你还可以用简单的SQL表达式来确定空间关系以及执行空间操作。然而,传统基于空间数据库系统的SQL的缺点也是显而易简见的。实现数据库系统的代价太高,并且当空间数据库规模越来越大时效率将会变低。然而,传统的基于SQL的空间数据存储系统与一些GIS软件不兼容,会比本地专门的数据结构慢[7]。
-
- 基于NoSQL的空间数据存储
空间数据既能用传统关系型数据库存储也能用非关系型数据库来存储[10][9][33]。NoSQL数据库相比于传统的DBMSs和数据仓库规模扩展到支持数以百万计的用户做更新和读的操作。NoSQL数据库系统能够高度优化检索和附加操作,并且能够提供记录之上的小功能存储(例如键值对存储)。总之,NoSQL数据管理系统在存储巨大量数据(特别是大数据)和数据本身不是一个关系模型时非常有用[26]。
MongoDB是一个可扩展的、高性能的、开放源码的、无架构、面向文档的数据库。MongoDB对空间数据和功能索引有直接的支持,例如在旧的坐标对中寻找相近位置创造一个地理空间索引[10]。MongoDB计算在指定坐标系范围内的geohash值,和索引的geohash值。Geohash是纬度/经度的地理编码系统,除了MongoDB,其它非关系型数据库本身并不支持空间索引,但可以通过geohashing来扩展[5][1]。
MD-HBase的是一个可扩展的数据管理系统,LBSs桥接规模和功能之间的代沟,其接近利用键值对存储的多维索引分层结构[23]。底层键值对存储允许系统在保证容错和高可用性的同时保持较高的插入率和大量数据。另一方面,索引层允许有效的多维度查询处理。
SpatialHadoop是一个开源MapReduce框架专门用来处理空间数据的巨大数据集,它内置高级语言、空间数据类型、空间索引以及有效空间操作。SpatialHadoop用高级语言很容易就能做到和系统的交互并且能够用内嵌空间数据类型加载所有的数据集。此外,
Spatialhadoop也可以有效地在您所选择的索引存储数据和用内嵌空间操作来分析大型集群数据。
CloST是一个可扩展的大时空数据存储系统,支持使用Hadoop进行数据分析[27]。CloST的主要目的是避免当给出一个时空范围时要对整个数据集进行扫描。CloST使用一种新的数据模型,该模型对对象ID、位置和时间三个核心属性有特殊的处理。基于这种数据模型,他的分级分区数据用所有的核心属性来实现高效率的并行数据时空范围的扫描处理。根据这一数据特征,CloST设计了一个紧凑的存储结构,将量级的减小存储尺寸。此外,CloST能够扩展批量加载算法实现在系统中逐步加入新的数据。
总结来说,SQL数据库不擅长处理像“索引大量的文档、在高流量网站加载页面以及提供流媒体”等任务[2],NoSQL方案特别擅长处理大量的即时读/写任务,这些即时读写任务将会放慢SQL或关系型数据库。目前正在用来管理地理空间数据的一些NoSQL数据库包括MongoDB(开源)、BigTable(由谷歌开发的专利,在谷歌地球使用)、Cassandra(被Facebook开发,开源和Apache维护)、CouchDB(开放源码,Apach)等等。随着空间数据可扩展性的增长,NoSQL数据集将是个不错的选择。
-
大数据存储和索引
- 体系结构
图1描述的是我们分布式矢量空间数据存储系统的体系结构,该系统分为两个部分:存储模型和索引模型。存储模型从原有的类型文件中接受矢量数据[12],接下来它将做两件事:直接将这些数据存入索引模型;将这些数据转换为WKB类型然后存进HBase表中。在将矢量数据存进索引模型的过程中,我们将会根据我们的所以算法计算每个矢量数据的id然后将他们存入索引表。为了寻找一个范围内的矢量数据,该索引模型将会计算索引表中的IDs,这些索引表仅仅存储范围,需要从数据表中找到这些IDs。通过这个二级索引方法,我们可以有效地在一个范围搜索矢量数据。
图1 矢量空间数据存储系统的结构体系图
-
- 大规模空间数据的物理存储
空间数据对象的非空间属性可以通过公共数据类型,如字符串或数字来获得,但其空间属性由于包含大量的结合坐标信息而不容易获取。
我们试图用将空间属性压缩大的二进制对象的方法来存储[15][30]。我们采用已被OGC规范了的对象持久性编码规则,并在其访问和编码转换服务规范时描述,这便是WKT和WKB。WKT是用来表示地图上的矢量几何物体、地理对象的空间参考系统和空间参考系统之间的转换的文本标记语言。WKB用二进制字节来转换和存储相同的信息。例如,如果我们有一个横坐标和纵坐标的值都为1的目标点,其对应的WKT形式是坐标点(1,1)。
-
- HBase存储模型
Apache HBase是分布式、可扩展、大规模数据存储的Hadoop数据集。HBase将数据存储在表中,每个表格均由行和列组成。每列属于一个特定的列族(Column Family),该存储以行和列作为一个元素,每个元素存储着相同数据的多个由时间戳标记的不同版本。由于HBase存储数据稀疏,所以有些列可以是空的,这使得它能够存储不同类型的矢量空间数据[18][29]。
HBase的一个表格由很多分裂的集合组成,这些集合成为regions,其中每个region中存储一个范围分区密钥空间。HBase的架构包括三层B 树结构体,存储数据的region处于最底层,上面两层是ROOT和META区域。HBase的安装包括服务器的集合,这些服务器称为区域服务器负责给一个区域的子集提供服务;META表保存着区域到区域服务器的映射。如果一个区域的大小超过配置限制,HBase会分裂为两个子区域,这将允许系统在数据插入时动态增长,通过为hot region创造精细分区来进行数据偏斜处理。
-
- 矢量数据存储模型
HBase有丰富的数据类型,并且与RDBMS存储模型不同,RDBMS仅仅只有简单的字符串类型,其它类型
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[152361],资料为PDF文档或Word文档,PDF文档可免费转换为Word