您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > 栅格GIS系统的分布式存储方案
栅格栅格栅格栅格GISGISGISGIS系统的分布式存储方案系统的分布式存储方案系统的分布式存储方案系统的分布式存储方案王建2012/3/28主要内容•1、介绍了一种分布式的数据库系统HBase。•2、讨论了栅格地理数据在HBase中的数据存储模型。•3、介绍了分布式存储系统的搭建。一、分布式存储系统——HBaseHBase是一种NoSQL数据库,是谷歌BigTable的一个开源实现,是一个面向列的存储系统,利用HBase技术可在廉价PCServer上搭建起大规模结构化存储集群。1.1为什么选择HBase•Hbase能支持大规模的数据,提供稳定的性能。•在HBase中扩展它的存储能力只需要增加计算节点即可,十分容易,并且可以用普通的廉价PC作为节点。•RDBMS只能通过在大型服务器上增加存储资源,而没有提高计算能力,并且代价高昂。1.1为什么选择HBase•Hbase提供了高可靠性•它是通过计算节点复制和分发数据,即使当一个计算节点挂掉,HBase仍然可以提供不中断的数据服务。1.2HBase逻辑结构•HBase以表的形式存储数据。表有行和列的组成。列划分为若干个列族(rowfamily)。1.2HBase逻辑结构1.行键(Rowkey)按字典序(byteorder)排序存储。2.“时间戳”HBase中通过Row和Columns确定的一个存储单元成为Cell。3、列族(ColumnFamlily)HBase表中的每个列,都归属于某个列簇。列簇是表的模式(chema)的一部分(列不是),必须在使用表之前定义1.3HBase物理模型将逻辑模型中的每个列族列族(ColumnFamily)分解成一张单独的表。1.3Hbase三层架构•在Hbase中,会根据行键(RowKey)范围将表分成不同的块,这些块可能位于不同的存储系统上。是一种三级存储结构。1.5HBase限制•1、Hbase的列最大长度限制为20MB。•2、列族(ColumnFamlily)数量不是无限的,这取决于区服务器(regionServer)的硬件。这个限制对项目影响不大,可以忽略。二、栅格GIS系统的数据存储模型•我们项目的要求:•1.能够存储大规模数据集(PB级)•2.能够快速地访问2D和3D栅格数据集,即使这些数据集很大。•3.提供一个基本稳定的性能。•4.扩展当前系统不需要中断当前服务。2.1数据类型和像素存储模型•我们初步的想法:•1、将2维栅格数据分割成多块(multipleblocks),块(Block)是2维地理空间的一个区域,它包含一组像素点。•2、像素点可以使用顺序存储或交叉模型两种格式。•3、块作为最基本的存储单位存储到HBase里。2.1.1顺序存储p1p1p1p1p2p2p2p2P3P3P3P3P4P4P4P4p5p5p5p5p6p6p6p6T3p1p1p1p1p2p2p2p2p3p3p3p3p4p4p4p4p5p5p5p5p6p6p6p6t2p1p1p1p1p2p2p2p2P3P3P3P3P4P4P4P4p5p5p5p5p6p6p6p6t1p1p1p1p1t1t1t1t1p2p2p2p2t1t1t1t1p3p3p3p3t1t1t1t1p4p4p4p4t1t1t1t1p5p5p5p5t1t1t1t1p6p6p6p6t1t1t1t1……………………像素存储从左到右,从最高层到最底层。顺序存储主要用在2D的地理图片,当对这个区域进行操作时,该区域的其他像素点也很快速的访问。2.2.2交叉存储p1p1p1p1p2p2p2p2P3P3P3P3P4P4P4P4p5p5p5p5p6p6p6p6T3p1p1p1p1p2p2p2p2p3p3p3p3p4p4p4p4p5p5p5p5p6p6p6p6t2p1p1p1p1p2p2p2p2P3P3P3P3P4P4P4P4p5p5p5p5p6p6p6p6t1p1p1p1p1t1t1t1t1p1p1p1p1t2t2t2t2p1p1p1p1T3T3T3T3p2p2p2p2T1T1T1T1p2p2p2p2T2T2T2T2p3p3p3p3T3T3T3T3……………………取不同层的相同区域的像素点来存储。如果同一区域有多个状态,那么交叉存储在查询状态时会获得较好的性能。要求:这些层拥有相同的空间分辨率、坐标系统、投影系统。2.2.3存储选择•栅格数据集一般由图层叠加而成,我们主要使用的栅格数据可能有一个或少数几个图层,并且我们不太关心第三维上的数据持续性问题。因此在存储模型上我们选择了按层顺序存储。•但对于我们设计的存储模型来说,并不太要求像素点的存储模型,但应用程序对于不同的栅格数据有不同的访问模式,根据栅格数据的特性来选择顺序或者交叉存储,可以获得更好的性能。2.3将块存储到HBase里•我们一般是在一个地理区域上做查询操作,而不是在一个像素点或者一条像素线上做查询,因此将一个块(Block)的所有像素点存储到同一行里,能够可以获得最好的性能。•将像素点以块存储顺序存储还能够极大地提高查找和访问速度。2.3将块存储到HBase里1、一个列族(ColumnFamlily)是一个图层。2、将一类的图层存为Hbase的一行,能获得较好的性能。因为顺序存储能减少查找时间和硬盘的随机访问。2.4块的产生•将栅格GIS数据存储到存储系统里,第一步就是要将栅格数据分割成块(Block)。•我们采用经过修改的四叉树(quadtree,Q-tree)结构在2维的地理空间图片上来产生块。2.4块的产生第一步,将整个栅格数据分为0,1,2,3四个部分。2.4块的产生•接着分块•直到块的大小满足我们定义的大小。第二部,再对标号为0的分块。2.4块的产生•切分后的栅格数据2.5块的索引值•在HBase中,我们需要为每个提供一个唯一的主键。•创建主键的规则:•1、左上的索引值是0,右上的索引值是1。•2、左下的索引值是2,右下的索引值是3。•3、下一级的划分也是同样的规则。2.5块的索引值•我们将这些四叉树的叶子节点(块)的索引值作为这些块存储在Hbase里面的行键(Rowkey)。•比如图中这些四叉树叶子节点的索引值为:•0130,0131,•0132,01332.5块的存储•这样分配块(Block)的行键(Rowkey)的好处:每一个块都存储在HBase中的一行,并且HBase的行是按字典序存储的,因此2维地理上的相邻区域在物理存储上也是相近的。行键前缀相同的行在物理上的存储是相近的,因此在读取时,可以减少硬盘的随机访问(RandomAccess),能提高性能。2.5块的存储•逻辑块和存储2.6物理存储模型对层分块存储。2.4数据操作•1、创建(Create)•获取栅格数据集之后,我们按照之前四叉树结构对其进行分割,并产生索引值,把分割后的切片存入HBase中,并以这个索引值作为该块的行键(Rowkey)。2.4数据操作•2、查询(Query)•当应用程序需要在一个区域的栅格数据集上进行查询时,客户端程序会将这个区域的坐标转换为块索引,然后将这个索引值传递到存储系统进行查询。2.4数据操作•3、更新(Update)•Hbase的一个重要特性是在更新时锁住(Lock)该行以实现一致性。因此应用程序更新块上的数据信息时,不必担心一致性问题。2.4数据操作•4、删除(Delete)不建议在存储系统中删除一行,除非该行会造成错误。删除会造成数据的永久丢失,并且存储系统的价格并不是很贵,可以通过更新数据的时间戳(timestamp)来实现数据的假删除。三、讨论•1、理论上,当数据集足够大时,HBase能比传统关系型数据库提供更好的性能和存储能力,这是由Hbase的架构本身决定的。但我们的项目还处在初步阶段,并没有测试其性能。•2、我们使用这个存储模式,更多的是从超大数据存储规模的角度出发,并且降低存储成本。利用HBase可以非常轻易地进行存储能力的扩展,而且还不会影响性能。三、讨论•这是一个Hbase存储系统的系统结构三、讨论Client包含访问Hbase的接口。面向应用程序。Zookeeper是一个分布式的,开源的分布式应用程序协调服务,用它可以来实现同步服务,配置维护。Master也是一个RegionServer,但它是一个名字节点(NameNode)而不是数据节点(DataNode)。主要负责Table和Region的管理工作。扩展起来很容易,通过简单的修改XML配置文档,即可增加存储节点。感谢•谢谢大家
本文标题:栅格GIS系统的分布式存储方案
链接地址:https://www.777doc.com/doc-5947741 .html