Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs 菜单
Docs 主页
/ /
Atlas 架构中心
/ / /

通过实时分析改进航班运营

利用强大的实时分析功能来改进飞行操作。通过智能数据监控削减成本、减少延迟并提升效率。

使用案例: 分析IoT现代化单一视图

行业: 制造与移动

产品和工具: MongoDB Atlas聚合管道时间序列集合Change Streams

合作伙伴: Google Cloud, Vercel

MongoDB 的实时航班管理解决方案使航空公司能够主动管理和缓解高成本的航班延误。仅在 2019 年,航班延误就使欧洲航空公司每架航班每小时平均损失 €4,320。通过利用智能数据处理和实时响应,该解决方案提供实时监控、预测性见解和优化资源分配。该解决方案基于 MongoDB 的灵活文档模型和时间序列集合,利用事件驱动架构结合 FastAPI 进行模拟,GCP PubSub 负责消息传递,Vertex AI 进行高级分析,Google Cloud Functions 实现无服务器事件驱动处理,提供了一种全面的方法来最大限度地减少运营中断。

事件驱动架构的组成部分

图1. 事件驱动架构的组成部分

该解决方案提供:

  • 减少延迟传播:实时监控和即时响应功能有助于防止延迟在航班计划中级联传播。

  • 优化资源分配:智能数据分析使得在突发状况下能够高效地重新分配资源。

  • 提升客户体验:更好的中断管理可提高乘客满意度和忠诚度。

  • 可扩展的操作:灵活的架构支持不断增长的数据量和操作需求。

  • 实时决策:及时访问航班数据有助于快速且有依据地做出运营决策。

MongoDB 的实时航班管理解决方案采用事件驱动架构,包含以下几个关键组件:

1
  • FastAPI 微服务包含实时数据模拟器和路径查找器。

  • 处理静态和实时数据流的 PubSub 主题。

  • 用于处理应用程序和遥测数据的 Cloud Functions。

2
  • 用于财务影响分析的 Vertex AI 成本计算器。

  • 用于数据转换的分析数据生成器 Cloud Function。

  • 用于复杂数据处理的聚合管道。

3
  • MongoDB 数据库作为中心数据存储。

  • 专用集合:

    • flight_costs 集合用于跟踪和分析与航班相关的费用。

    • flight_plane 模拟集合用于预测建模和情景规划。

    • flight_realtimeCF 集合专为实时数据追踪与历史分析而设计(时间序列集合)。

    • flights 集合用于全面管理航班的基本信息。

4
  • 使用 Change Streams 实现实时数据变更跟踪。

  • Google Maps API 用于可视化地理数据。

  • Next.js 用于前端界面和可视化。

此架构支持三种不同的数据流:

  • 操作数据流(蓝色线条):处理实时航班运营数据。

  • 分析数据流(绿色线条):管理商业智能。

  • 内部连接(黑线):维护系统集成。

事件驱动架构

图 2. 事件驱动型架构

该解决方案专门通过集成事件驱动架构来解决延迟管理问题,提供实时监控、预测性见解和资源优化功能。

先决条件

  • Node.js(v14 或更高版本)

  • MongoDB(本地或云)

  • Next.js(v12 或更高版本)

  • Google Cloud SDK

1
  • 在灵活的模式中存储航班数据。

  • 支持实时更新。

  • 处理时间序列数据以进行分析。

  • 维护运营中的航班信息,确保您获取用于后续配置和集成步骤的 MongoDB 连接字符串。

  • 示例模型。

2
  • 使用 Google Cloud 的 Cloud Run 将应用程序部署为容器化服务。

  • 配置 Google Cloud 的 Cloud Build,以实现自动化部署。询问 ChatGPT

  • 为资产设置 Google Cloud 的云存储。

  • 使用 Google Cloud Pub/Sub 实现实时数据分发。

  • 为数据实现 Google Cloud 的 Cloud Functions。处理。以下代码片段在云函数中运行,一旦发现中断,就会更新从路径搜索器算法中获得的新路径,以确保优化重新选线,从而最大限度地降低油耗和成本。

Python

import base64
import json
from bson import ObjectId
import os
from pymongo import MongoClient
import functions_framework
# Triggered from a message on a Cloud Pub/Sub topic.
@functions_framework.cloud_event
def postPath(cloud_event):
# Access URI in secrets
MONGO_URI = os.environ.get('MONGO_URI', "MONGO_URI is not set.")
MONGO_DATABASE = os.environ.get('MONGO_DATABASE', "MONGO_DATABASE is not set.")
MONGO_COLLECTION = os.environ.get('MONGO_COLLECTION', "MONGO_COLLECTION is not set.")
if not all([MONGO_URI, MONGO_DATABASE, MONGO_COLLECTION]):
print("Error: One or more environment variables are not set.")
return
client = MongoClient(MONGO_URI)
db = client[MONGO_DATABASE]
collection = db[MONGO_COLLECTION]
try:
# Parse the data in the message
byte_message = base64.b64decode(cloud_event.data["message"]["data"])
json_str = byte_message.decode('utf-8')
data_dict = json.loads(json_str)
print(data_dict)
# Work with the dictionary fields
flight_id = data_dict.get("flight_id")
initial_path = data_dict.get("initial_path_airps")
new_path = data_dict.get("new_path_airps")
disruption_coords = data_dict.get("disruption_coords")
# Check if all required fields are present
if not flight_id:
print("Error: flight_id is missing.")
return
if initial_path is None or new_path is None:
print("Error: One or more path fields are missing.")
return
# Find the document in the MongoDB collection and update the path field
result = collection.update_one(
{"_id": ObjectId(flight_id)},
{"$set": {
"initial_path": initial_path,
"new_path": new_path,
"disruption_coords": {
"lat": disruption_coords[0],
"long": disruption_coords[1]
}
}}
)
if result.matched_count > 0:
print("Document successfully updated.")
else:
print("No document found with the specified flight_number.")
except Exception as e:
print(f"Error updating document: {e}")
finally:
client.close()
  • 部署 Google Cloud 的 Vertex AI 进行分析,同时确保获取 Google Maps API 密钥,以增强地理空间分析和可视化能力。

3
  • 克隆存储库并安装依赖项。

  • 配置环境变量。

  • 设置 MongoDB 连接。

  • 运行开发服务器。

4
  • 使用 Docker 将应用程序容器化。

  • 部署到 Google Cloud 的 Cloud Run,以实现自动扩展。

  • 使用 Cloud Build 配置持续部署。

  • 设置环境变量和密钥。

最后,您的应用程序应如下所示:

带有过滤器的航班管理仪表盘
点击放大

图3.带有过滤器的航班管理仪表盘

航线与成本监控
点击放大

图 4. 航线与成本监控

该解决方案提供了一个可扩展的事件驱动架构,使航空公司能够高效管理航班运营,同时最大限度地减少延误和中断的影响。

有关实施此解决方案的详细分步指南,包括代码示例和具体配置说明,请访问我们的 GitHub存储库。

  • MongoDB 灵活的模式和时间序列集合为航班运营提供了强大的基础,使航空公司能够高效地处理飞行前计划数据和实时遥测数据,同时通过灵活的文档模型适应不断变化的需求。

  • 事件驱动的架构由...提供支持,可通过处理实时数据流对航班中断做出立即响应,从而帮助航空公司最大限度地减少延误,因为费用为 4、320 /小时。

  • MongoDB 的聚合管道将运营航班数据转化为可操作的见解,使航空公司能够优化航线和资源,而 Google Cloud Vertex AI 提供成本和延误管理的预测分析。

  • 该解决方案展示了 MongoDB 在处理多种数据类型和工作负载方面的多功能性(从实时遥测数据采集到分析处理),同时依托其分布式架构和 Change Streams 功能,在大规模场景下依然保持卓越性能。

  • Dr. Humza Akhtar, MongoDB

  • Rami Pinto,MongoDB

  • Sebastian Rojas Arbulu, MongoDB

后退

RAG 的声明管理

在此页面上