本文概述了一种将大量地理空间数据用于分析的可管理解决方案。
体系结构
下载此体系结构的 Visio 文件。
该关系图包含几个灰框,每个框都有不同的标签。 从左到右,标签为依次“引入”、“准备”、“加载”、“服务”和”可视化和浏览”。 其他框下的最后一个框具有标签“监视和安全”。 每个框都包含代表各种 Azure 服务的图标。 编号箭头以图表说明中描述的步骤的方式连接框。
工作流
IoT 数据进入系统:
- Azure 事件中心引入 IoT 数据的流。 数据包含坐标或其他标识设备位置的信息。
- 事件中心使用 Azure Databricks 进行初始流处理。
- 事件中心将数据存储在 Azure Data Lake Storage 中。
GIS 数据进入系统:
Azure 数据工厂引入任何格式的光栅 GIS 数据和矢量 GIS 数据。
- 光栅数据包括值网格。 每个像素值都表示一种特征,如地理区域的温度或高程。
- 矢量数据表示特定的地理特征。 顶点或离散几何位置构成矢量并定义每个空间对象的形状。
数据工厂将数据存储在 Data Lake Storage 中。
Azure Databricks 中的 Spark 群集使用地理空间代码库来转换和规范数据。
数据工厂将准备好的矢量和栅格数据加载到 Azure Database for PostgreSQL 中。 解决方案对此数据库使用 PostGIS 扩展。
数据工厂将准备好的矢量和栅格数据加载到 Azure 数据资源管理器中。
Azure Database for PostgreSQL 存储 GIS 数据。 API 使此数据以标准化格式提供:
- GeoJSON 基于 JavaScript 对象表示法 (JSON)。 GeoJSON 表示简单地理特征及其非空间属性。
- 已知文本 (WKT) 是一种表示矢量几何对象的文本标记语言。
- 矢量图块是地理数据包。 其轻型格式可提高映射性能。
Redis 缓存通过提供对数据的快速访问来提高性能。
Azure 应用程序服务的 Web 应用功能与 Azure Maps 配合使用,以创建数据的视觉对象。
用户通过 Azure 数据资源管理器分析数据。 此工具的 GIS 功能创建视觉效果。 例如,基于地理空间数据创建散点图。
Power BI 提供自定义的报表和商业智能 (BI)。 Power BI 的 Azure Maps 视觉对象强调了业务结果中位置数据的角色。
在整个过程中:
- Azure Monitor 收集有关事件和性能的信息。
- Log Analytics 对监视日志运行查询并分析结果。
- Azure Key Vault 保护密码、连接字符串和机密。
组件
Azure 事件中心是一个完全托管的大数据流式处理平台。 此平台即服务 (PaaS) 提供已分区的使用者模型。 多个应用程序可以使用此模型同时处理数据流。
Azure 数据工厂是一种集成服务,可用于处理来自不同数据存储的数据。 可以使用此完全托管的无服务器平台来创建、计划和安排数据转换工作流。
Azure Databricks 是一种数据分析平台。 它的完全托管的 Spark 群集处理来自多个源的大量数据流。 Azure Databricks 可以大规模转换地理空间数据,以在分析和数据可视化效果中使用。
Data Lake Storage 是一种可缩放且安全的数据保护,适用于高性能分析工作负载。 这项服务可以管理 PB 量级的信息,同时保持数百千兆的吞吐量。 这些数据通常来自多个异类源,可以是结构化的、半结构化的或非结构化的。
Azure Database for PostgreSQL 是基于开放源代码 PostgreSQL 数据库引擎社区版本的完全托管的关系数据库服务。
PostGIS 是 PostgreSQL 数据库的扩展,它与 GIS 服务器集成。 PostGIS 可以运行涉及地理对象的 SQL 位置查询。
Redis 是一种开放源代码的内存中数据存储。 Redis 缓存在服务器内存中保留频繁访问的数据。 然后,缓存可以快速处理大量使用数据的应用程序请求。
Power BI 是一系列软件服务和应用。 可以使用 Power BI 连接不相关的数据源并创建它们的视觉对象。
适用于 Power BI 的 Azure Maps 视觉对象提供了一种使用空间数据增强地图的方式。 你可以使用此视觉对象来显示位置数据对业务指标的影响。
Azure 应用程序服务及其 Web 应用功能提供了一个框架,用于生成、部署和缩放 Web 应用。 应用程序服务平台提供内置基础结构维护、安全修补程序和缩放功能。
Azure Maps 中的 GIS 数据 API 以 GeoJSON 和矢量图块等格式存储和检索地图数据。
Azure 数据资源管理器是一种快速、完全托管的数据分析服务,可处理大量数据。 此服务最初侧重于时序和 Log Analytics。 它现在还可处理来自应用程序、网站、IoT 设备和其他来源的各种数据流。 Azure 数据资源管理器中的地理空间功能提供了用于呈现地图数据的选项。
Azure Monitor 收集有关环境和 Azure 资源的数据。 此诊断信息有助于维护可用性和性能。 Monitor 包含两个数据平台:
- Azure Monitor 日志记录并存储日志和性能数据。
- Azure Monitor 指标按固定间隔收集数值。
Log Analytics 是对监视日志数据运行查询的 Azure 门户工具。 Log Analytics 还提供了用于制表和统计分析查询结果的功能。
Key Vault 存储和控制对机密(如令牌、密码和 API 密钥)的访问。 Key Vault 还会创建和控制加密密钥并管理安全证书。
备选方法
请考虑使用 Martin,而不是开发自己的 API。 此开放源代码图块服务器使矢量图块可用于 Web 应用。 Martin 用 Rust 编写,连接到 PostgreSQL 表。 你可以将其部署为容器。
如果你的目标是为 GIS 数据提供标准化接口,请考虑使用 GeoServer。 此开放式框架实现了行业标准开放地理空间信息联盟 (OGC) 协议,如 Web 地理要素服务 (WFS)。 它还与通用空间数据源集成。 可以在虚拟机上将 GeoServer 部署为容器。 如果自定义 Web 应用和探索查询是次要的,GeoServer 会提供一种发布地理空间数据的简单方法。
各种 Spark 库可用来处理 Azure Databricks 上的地理空间数据。 此解决方案使用以下库:
矢量图块提供了一种有效的方式来在地图上显示 GIS 数据。 此解决方案使用 PostGIS 动态查询矢量图块。 此方法适用于包含少于 1 百万条记录的简单查询和结果集。 但在以下情况下,可能会有一种不同的方法:
- 查询的计算成本高昂。
- 数据不会频繁更改。
- 正在显示大型数据集。
在这些情况下,请考虑使用 Tippecanoe 来生成矢量图块。 你可以将 Tippecanoe 作为数据处理流的一部分运行,或者作为容器或使用 Azure Functions。 可以通过 API 使生成的图块可用。
与事件中心一样,Azure IoT 中心可以引入大量的数据。 但 IoT 中心还提供了与设备的双向通信功能。 如果直接从设备接收数据,但同时向设备发送命令和策略,请考虑使用 IoT 中心,而不是事件中心。
若要简化解决方案,请省略以下组件:
- Azure 数据资源管理器
- Power BI
方案详细信息
使用地理空间数据或包含地理组件的信息存在许多可能性。 例如,地理信息系统 (GIS) 软件和标准广泛可用。 这些技术可以存储、处理和提供对地理空间数据的访问。 但通常很难配置和维护使用地理空间数据的系统。 要将这些系统与其他系统集成,还需要专家知识。
本文概述了一种将大量地理空间数据用于分析的可管理解决方案。 此方法基于高级分析参考体系结构,并使用以下 Azure 服务:
- 使用 GIS Spark 库处理数据的 Azure Databricks。
- Azure Database for PostgreSQL 查询用户通过 API 请求的数据。
- Azure 数据资源管理器运行快速探索性查询。
- Azure Maps 在 Web 应用程序中创建地理空间数据的视觉对象。
- Power BI 的 Azure Maps Power BI 可视功能提供自定义报表
可能的用例
此解决方案适用于许多领域:
- 处理、存储和提供对大量光栅数据(例如地图或气候数据)的访问。
- 确定企业资源规划 (ERP) 系统实体的地理位置。
- 将实体位置数据与 GIS 引用数据组合在一起。
- 通过移动设备存储物联网 (IoT) 遥测。
- 运行分析地理空间查询。
- 在 Web 应用中嵌入特选和情境化的地理空间数据。
注意事项
基于 Microsoft Azure 架构良好的框架的以下注意事项适用于此解决方案。
可用性
-
- 使用启用了可用性区域的命名空间,将风险分散到三个物理上分隔的设施中。
- 请考虑使用事件中心的异地灾难恢复功能。 此功能将命名空间的整个配置从主命名空间复制到辅助命名空间。
请参阅 Azure Database for PostgreSQL 提供的业务连续性功能。 这些功能涵盖一系列恢复目标。
应用程序服务诊断会提醒你在应用中遇到的问题,例如停机。 使用此服务来识别、排查和解决诸如中断之类的问题。
请考虑使用应用程序服务来备份应用程序文件。 但请注意备份文件,其中包括纯文本格式的应用设置。 这些设置可能包含类似于连接字符串的机密。
可伸缩性
此解决方案的实现满足以下条件:
- 每天处理多达 1 千万个数据集。 数据集包括批处理或流式处理事件。
- 将 1 亿个数据集存储在 Azure Database for PostgreSQL 数据库中。
- 同时查询 1 百万或更少的数据集。 最多 30 个用户运行查询。
环境使用此配置:
- 具有四个 F8s_V2 辅助角色节点的 Azure Databricks 群集。
- Azure Database for PostgreSQL 的内存优化实例。
- 具有两个标准 S2 实例的应用程序服务计划。
请考虑以下因素,确定要对实现进行哪些调整:
- 数据引入速率。
- 数据量。
- 查询量。
- 需要支持的并行查询数。
你可以独立缩放 Azure 组件:
数据工厂处理大量数据。 它的无服务器体系结构支持不同级别的并行度。
Azure Database for PostgreSQL 提供高性能水平缩放。
Monitor 的自动缩放功能还提供了缩放功能。 你可以配置此功能,添加资源来处理增加的负载。 还可以利用此功能删除资源来节省资金。
安全性
安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅安全性支柱概述。
保护矢量图块数据。 矢量图块将多个实体的坐标和特性嵌入一个文件中。 如果生成矢量图块,请在访问控制系统中为每个权限级别使用一组专用的图块。 使用此方法时,只有每个权限级别的用户才能访问该级别的数据文件。
若要提高安全性,请在以下情况下使用 Key Vault:
有关应用程序服务如何帮助保护 Web 应用的信息,请参阅 Azure 应用程序服务中的安全性。 另请考虑以下几点:
- 了解如何获取应用使用自定义域名时所需的证书。
- 了解如何将应用的 HTTP 请求重定向到 HTTPS 端口。
- 了解 Web 应用中身份验证的最佳做法。
成本优化
成本优化是关于寻找减少不必要的费用和提高运营效率的方法。 有关详细信息,请参阅成本优化支柱概述。
- 若要估计实现此解决方案的成本,请参阅示例成本配置文件。 此配置文件适用于可伸缩性注意事项中描述的环境的单个实现。 但不包括 Azure 数据资源管理器的成本。
- 若要调整参数并了解在你的环境中运行此解决方案的成本,请使用 Azure 定价计算器。
作者
本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。
首席作者:
- Richard Bumann | 解决方案架构师
后续步骤
产品文档:
若要开始实现此解决方案,请参阅以下信息:
- 将 WFS 连接到 Azure Maps
- 使用 Spark 处理 OpenStreetMap 数据。
- 了解通过 Azure Maps 显示数据的方法。
有关处理地理空间数据的信息
- 用于查询矢量图块的 PostGIS 的函数
- 用于加载 PostGIS 光栅的函数
- Azure 数据资源管理器地理空间函数
- Azure Maps 中矢量图块的数据源
- Databricks 中处理地理空间数据的方法
相关资源
相关体系结构
- 使用 Azure 数据资源管理器的大数据分析
- Azure 上的运行状况数据联盟
- [新式数据仓库的 DataOps][新式数据仓库的 DataOps]
- Azure 数据资源管理器交互式分析
- 地理空间参考体系结构 - Azure Orbital
- 面向电信行业的地理空间分析
- 通过 Azure Synapse Analytics 进行星载数据分析
相关指南
- 比较 Microsoft 的机器学习产品和技术 - Azure Databricks
- 用于通过 Azure 机器学习提升机器学习生命周期的机器学习操作 (MLOps)
- [面向最佳工具选择的 Azure 机器学习决策指南][面向最佳工具选择的 Azure 机器学习决策指南]
- 监视 Azure Databricks