大规模矢量数据存储
矢量空间数据是 GIS中的典型数据,最常见的类型包括点、 线、面及其复合类型。 矢量数据经常用于编辑、 更新、查询等应用场景, 过去一般采用关系型数据库对其进行存储。 但面对数据量不断增大的空间数据库的分析计算,该技术路线遇到性能瓶颈,有必要研究新的适合于超大规模矢量空间数据存储的技术方案。根据应用场景的不同,有以下三种不同的存储方案。
分布式SQL数据库:
该方案 被看作原有数据存储方案的平滑升级。一方 面继续使用以PostgreSQL以及构建在其上的关系型数据库作为核心存储,满足SQL查询的使用要求:另一方面,使用Postgres-XL集群技术,对原有数据库进行分布式改造和升级,使其可以应对超大规模矢量数据的存储,并便于横向扩展。
分布式文件系统:
该方案以 HDFS为代表,将超大规模矢量数据从传统数据库中抽取出来,构建空间索引后转存到HDFS。为节省空间,-般以序列化二进制方式进行存储。由于在存储时构建了空间索引,因此可以对其上的数据使用Spark进行分布式点对点读取和计算,最大可能地保证计算性能。不过HDFS对数据增量更新和SQL查询的支持较弱,需要单独设计数据更新机制。
分布式NoSQL数据库:
该方案以 HBase为代表,一方面其核心存储为NoSQL数据库,支持分布式水平扩展;另一方面由于核心仍是数据库技术,在数据库层增加空间索引后,能够支持对空间数据的高效查询和随机读写访问,使用方式相比HDFS等分布式文件系统更为灵活,也具备Spark分布式分析时所需要的高吞吐特性。在进行新型业务系统构建时,可以考虑直接采用HBase作为核心存储层。
在进行大规模矢量数据存储选型时,可以根据应用需求进行综合考量。如果侧重sQl查询能力,优先考虑PostgreSOL,侧重超大规模矢量数据复杂迭代计算,建议将数据转存到HDFS,对这二者都有需求的话,则建议优先考虑HBase数据库。
文章内容来源于《大数据地理信息系统原理、技术与应用》