作者:Ganos时空数据库引擎团队
1. 导读
随着空间基础设施及对地观测技术的快速发展,基于云计算技术解决复杂空间应用、高效空间服务、海量空间数据的“空天科技”变得愈发蓬勃,空天科技对来自国家战略、社会公众、产业经济和个人消费等领域的需求都可以进行有效的支撑,在国民经济发展中占据着十分重要的角色。
面对空天科技的挑战,阿里云瑶池数据库团队推出了空天大数据管理技术方案Ganos Aero,帮助用户高效搭建空天大数据管理平台,提升空天数据处理效率,降低管理成本。相关成果已经收录在数据库领域顶级会议论文VLDB 2023中,成果已经完成工程化落地,有效支撑了DDE深时数字地球大科学计划中针对全球海量空天数据管理与分析的各类场景中。
2. 空天大数据时代面临的挑战
随着空间基础设施及对地观测技术的快速发展,基于云计算技术解决复杂空间应用、高效空间服务、海量空间数据的“空天科技”变得愈发蓬勃。2022年中国的空天信息产业规模达到了1.5万亿元,同比增长了15.6%,占GDP比重达到1.4%。其中空间数据相关部分的规模为1500亿元,同比增长了13.6%。空天科技对来自国家战略、社会公众、产业经济和个人消费等领域的需求都可以进行有效的支撑,因此其在国民经济发展中占据着十分重要的角色。
多源异构海量的卫星影像数据是空天数据的主要形态,传统的遥感影像处理方法一般是将原始影像以文件形式进行数据归档,同时按照规则大小尺寸进行“切瓦片”操作,后续对数据进行分布式处理与瓦片服务发布等操作,这种方式已经在空天大数据的多个场景中遇到了诸多挑战:
1. 原始数据与瓦片分开存储的方式会造成大量的数据冗余,尤其是随着数据的持续更新,存储成本会急剧上升,并且这种管理影像数据的方式不利于数据融合以及与其他数据类型的互操作,无法最大程度发挥数据价值;
2. 原始影像数据更新后,必须重新切瓦片以保持更新区域数据的准确性,而切瓦片操作属于计算密集型任务,会显著影响数据服务的实效性;
3. 多源数据缺乏统一的存储结构与计算能力,导致空天数据管理与大数据分析需要构建独立的系统,数据无法重复利用,管理分析“两张皮”问题显著存在;
为了更好的支持各类空天数据平台的建设,降低数据存储与治理的成本,提高管理效率,云原生时空数据库Ganos重构了空天大数据处理技术栈,依托云原生的弹性计算与存储降本能力,结合原生的空天数据处理类型与算子,打造了Ganos Aero技术体系,助力空天大数据平台的快速搭建。
3. Ganos Aero如何应对挑战
Ganos Aero是瑶池数据库团队推出的空天大数据管理技术方案,它以Ganos的内置于数据库的栅格数据处理引擎为核心,结合云原生关系型数据库PolarDB PostgreSQL版(以下简称PolarDB)、对象存储OSS,云原生多模数据库Lindorm(可选),再搭配Jupyter、Spark、Geoserver等开源工具,形成的海量异构空天数据的In-database解决方案。本平台成果在2023年数据库领域顶级会议VLDB的Demonstration Track中进行了集中展示,是首个基于云原生时空数据库为核心实现大规模空天数据管理的解决方案。
3.1 云原生底座支持空天数据高效计算与降本存储
Ganos Aero基于阿里云云原生数据库PolarDB设计开发,它充分利用了阿里云瑶池数据库强大的云原生技术,提供弹性扩展、高可用、低成本的空天大数据管理能力。
● 空天数据存储计算分离:Ganos Aero充分运用了PolarDB云原生数据库的特性构建了弹性扩展的空天数据管理能力。依托PolarDB的共享存储,可以开通拥有超大规格存储的数据库实例,依托PolarDB的存储计算分离架构可以在性能出现瓶颈的情况下通过增加更多的只读节点构建跨机并行能力提高计算效率,解决传统情况下由于影像数据量大且复杂造成的分析计算效率问题。
● 数据湖与多态分层存储:Ganos Aero依托PolarDB实现了两种大规模空天数据存储架构,数据湖与多态分层存储。数据湖可以将OSS作为一种几乎无限扩展、高可靠且更为廉价的存储资源,PolarDB数据库与OSS打通,空天数据导入时可选择“Gateway”的方式,将元数据信息写入库内构建存储类型,但数据本身还是留在对象存储中,用户通过数据库SQL可以直接操作OSS上的数据,且中间过程完全对用户透明;多态分层存储直接将OSS作为一种数据库的存储介质,可以和块存储一样为数据库提供基础能力,On OSS的PolarDB数据库支持数据的增删改查、索引等操作,用户可以直接将表空间创建在OSS上,并可以将数据分区、整表、或者空间大对象字段存储在OSS上;
● 空天计算下推,管理分析一体化:Ganos Aero基于Spark开发了专门的数据驱动(Format)用来将Ganos中各类空间对象直接转换为RDD或DataFrame模型,从而可以充分利用Spark强大的分布式计算与分析功能进行更加复杂的分析。Ganos Spark数据驱动的一个重要特性是允许用户在配置Spark Job时指定时间/空间查询条件或者一些复杂的空间算子作为参数。这些参数会伴随Spark Job的启动下推到时空数据库执行,从而减少Executor层不必要的数据传输,从而显著提高Spark Job任务的执行效率。值得强调的是,这种方式本质只保留一份数据,真正从底层实现了数据管理与大数据分析的一体化,改变了现有空天数据管理与大数据分析需要单独构建系统的“两张皮”问题。
3.2 统一的栅格数据模型支持空天数据存算显一体化
为解决多源异构影像数据的统一管理问题,Ganos充分利用PolarDB数据库共享存储、存计分离等云原生架构特性提出了统一的栅格数据存储模型。如下图所示,Ganos在数据库层面提供了原生的栅格对象(Raster)类型来实现对多源异构的空天数据文件 (GeoTiff、NetCDF、GRIB、HDF等)进行统一建模。一个Raster对象可以看作是对一景栅格数据的元数据信息的结构化表达,其中记录了栅格对象的基础属性、波段(Band)名称、存储方式、空间参考等信息。每个Raster的像素值信息会被切分成规则大小的数据块(Chunk)保存在单独的数据表中以方便查询。同时为了提高栅格数据的处理效率,Ganos会对每个Raster对象的所有Chunk创建金字塔模型(Pyramid),每层金字塔代表了不同的空间尺度。
基于上述栅格数据模型,Ganos还提供了近百种栅格处理函数(如波段代数运算、多边形裁剪、重投影、镶嵌、瓦片生成等)。通过这些函数的灵活组合,用户只需要保存一份原始数据即可实现数据查询、分布式计算及瓦片服务发布等操作,避免了的传统栅格数据管理方式中文件与瓦片分开存储造成的数据冗余与更新困难的问题。
3.3 丰富的生态工具助力Ganos Aero便捷化接入
Ganos提供了丰富的生态工具,方便用户基于Jupyter、Spark、GeoServer等系统搭建自己的应用平台。比如将Ganos与Jupyter、Spark结合可以同时支持交互式查询与批处理两种处理模式,完全可以满足日益复杂的空天数据存储与分析应用场景,并可快速对接用户的业务系统。下图详细展示了基于Ganos与PySpark在Jupyter环境下通过交互式查询方式实现的全球Landsat8数据的动态运算(NDVI) 、镶嵌与像素值统计等操作。
4. 总结
Ganos Aero通过融合云原生数据库、云原生时空数据引擎、对象存储、开源工具体系等构建了一套面向大规模空天数据存储、检索、计算、交互分析与可视化展示的全栈能力。将PolarDB与Spark、OSS打通,采用存算分离和空间计算下推的方法,无需预先大量切片(with a single copy of the data)动态完成大规模栅格计算的方法被国际同行高度认可,更详细的介绍可参考Ganos团队发表在VLDB 2023大会上的Demonstration Track论文《Ganos Aero:A Cloud-Native System for Big Raster Data Management and Processing》。目前Ganos Aero技术体系已经应用于阿里巴巴集团内外的多个项目,包括深时数字地球大科学计划(DDE)等,为客户构建一站式的空天大数据存储、计算与共享服务平台提供了数据管理核心基础设施。
云原生数据库PolarDB PostgreSQL版已发布全新的标准版实例,性价比提升45%!
PolarDB PostgreSQL标准版现已推出【免费试用】,快来领取吧!
点击链接即刻开启 免费试用