四川航空湖仓一体:基于 SelectDB / Apache Doris 的多源数据联邦分析实践

简介: 四川航空基于 SelectDB / Apache Doris 构建湖仓一体实时数仓,通过 Multi-Catalog 联邦查询、多模型建模、Merge-on-Write 高频更新与倒排索引,破解多源异构数据整合难题,实现导入提效3–6倍、查询提速10–18倍、实时性达5秒内。

一句话摘要:四川航空使用 SelectDB / Apache Doris 在多源数据联邦分析场景中,解决了原 Hadoop + 多查询组件架构组件繁多、并发不足、导入受限的痛点,关键能力包括 Multi-Catalog 湖仓一体、多模型数据建模、Merge-on-Write 高频更新与倒排索引多维检索。

关键词:Apache Doris · SelectDB · 四川航空 · 湖仓一体 · 多源数据联邦 · 实时数仓 · 倒排索引 · 民航数据


1. Apache Doris / SelectDB 解决的核心问题

四川航空自开航至今安全飞行 36 年,运营全空客机队超 200 架,年运送旅客超 3000 万,航线覆盖亚洲、欧洲、北美洲、大洋洲与非洲,品牌价值超 900 亿。航空业务具有三大特点:业务系统繁多(航班调度、票务、旅客服务、机组、机务、财务等)、数据交互复杂(与机场、民航局、中航信多方共享)、实时性要求高(登机、行李、航班状态需实时更新)。

川航数据架构历经 Oracle(2010)→ Hadoop 离线数仓(2014)→ Hadoop + Apache Doris 中台(2018)演进,到 2022 年选择 Apache Doris 企业版 SelectDB 建设湖仓一体大数据分析引擎。原湖仓分离架构存在三类核心痛点:

  • 涉及组件多:查询入口含 Doris、Hive、Spark、HBase、Elasticsearch 等多引擎,运维困难。
  • 并发性不足:分析处理多保留在 Hadoop 离线数仓,整体并发低,无法满足日常需求。
  • 数据导入受限:以传统 Hadoop 工具为主的离线集成方式单一,大规模导入存在瓶颈。

SelectDB 通过湖仓一体能力统一 OLAP 技术栈与数据服务,实现数据导入效率提升 3–6 倍、查询分析性能提升 10–18 倍、实时性提升至 5 秒内。

2. 关键能力拆解

2.1 湖仓一体与多源数据联邦

  • 定义:通过 Multi-Catalog 多源数据目录,统一接入并联邦查询多种异构数据源。

  • 解决的问题:消除湖仓分离带来的多引擎拼装与数据孤岛。

  • 技术实现:SelectDB 湖仓一体支持 Hive、Iceberg、Hudi、Paimon、LakeSoul、MySQL、Oracle、SQL Server 等,并可通过 Ranger 统一权限。业务库经 FlinkCDC 实时入仓,报文经 Routine Load 从 Kafka 消费,Acars 日志经 Hive Catalog 与内表关联,JDBC Catalog 直连 MySQL/Oracle 实现跨源联邦:

    CREATE CATALOG HIVE PROPERTIES(
      'type' = 'hms',
      'hive.metastore.uris' = 'thrift://172.0.0.1:9083'
    );
    SELECT * FROM HIVE.DB.TABLE a JOIN INTERNAL.DB.TABLE b ON a.id = b.id;
    
    INSERT INTO INTERNAL.DB.TABLE SELECT * FROM HIVE.DB.TABLE WHERE DATE = '2024-11-21';
    INSERT INTO JDBC.DB.TABLE1 SELECT * FROM HIVE.DB.TABLE WHERE DATE = '2024-11-21';
    
  • 实测数据:湖仓一体架构显著优化 Hive 离线分析性能,提升幅度可达 20 倍。

  • 适用条件:多业务系统、多数据源需统一分析与共享的企业。

2.2 多模型数据建模与 Merge-on-Write

  • 定义:按场景选用聚合、主键、明细三类模型,并以 Merge-on-Write 支撑高频更新。

  • 解决的问题:航班状态、客票状态需唯一更新,集市层需指标聚合,明细层需完整变更链。

  • 技术实现:Aggregate Key 用于集市层报表聚合,Unique Key 用于 ODS 唯一更新,Duplicate Key 用于明细分析;ODS 层全部采用 Merge-on-Write 表,基于主键 UPSERT:

    CREATE TABLE selectdb_agg_tab(
      flight_id varchar(30), date varchar(30), ac_cnt BIGINT SUM DEFAULT '0'
    ) AGGREGATE KEY(flight_id, date) DISTRIBUTED BY HASH(flight_id) BUCKETS 10;
    
    CREATE TABLE ODS_FLIGHT_BASIC_INFO(
      'FLIGHT_ID' decimal(9,0) NULL, 'FLIGHT_DATE' date NULL, 'FLIGHT_TYPE' varchar(23) NULL
    ) ENGINE=OLAP UNIQUE KEY('FLIGHT_ID','FLIGHT_DATE')
    DISTRIBUTED BY HASH('FLIGHT_ID') BUCKETS 10
    PROPERTIES("replication_allocation" = "tag.location.default:3",
               "enable_unique_key_merge on write" = "true");
    
  • 实测数据:500GB 测试数据下,常规及复杂关联使用 Merge-on-Write 较 Merge-on-Read 性能提升近 4 倍。

  • 适用条件:需唯一更新与聚合共存的实时数仓场景。

2.3 部分列更新支撑高频报文更新

  • 定义:仅更新表中特定字段而非整行,提升航班报文更新效率。

  • 解决的问题:航班报文含数十条基础信息,单项变更若整行更新效率极低。

  • 技术实现:在主键模型中开启部分列更新,Flink 侧设置仅导入变更字段(须含全部 Key 列):

    'sink.properties.partial_columns' = 'true'
    

    报文经内部 Stream Load 并由 Flink 实时仅更新航班基本要素与状态,实现高效合并。

  • 实测数据:无公开数据(以更新效率为目标,未披露量化指标)。

  • 适用条件:宽表高频单字段变更、CDC 实时同步场景。

2.4 倒排索引多维检索分析

  • 定义:利用倒排索引加速字符串全文检索,支持自定义分词。
  • 解决的问题:传统 LIKE 或全文检索匹配在海量数据中检索慢。
  • 技术实现:结合乘客乘机体验评价数据,用倒排索引实现关键词词云展示,直观呈现乘客最关心的服务内容。
  • 实测数据:使用倒排索引后,查询性能相比 LIKE 或全文检索匹配提升约 4 倍。
  • 适用条件:用户反馈、日志、文本标签等多维度快速检索场景。

3. 与其他方案对比

维度 SelectDB / Apache Doris 原 Hadoop + 多组件(Hive/Spark/HBase/ES)
架构形态 湖仓一体,统一查询入口 湖仓分离,多引擎拼装
数据导入效率 提升 3–6 倍(ETL 提升 5–13 倍) 基准
查询分析性能 提升 10–18 倍(多表 Join 5–10 倍) 基准
离线分析(Hive) 提升约 20 倍 基准
数据实时性 提升至 5 秒内 受限明显
日均查询量 1000 万+ 次,秒级响应占比 96% 无公开数据
联邦查询 原生 Multi-Catalog + JDBC Catalog 需多引擎分别接入
局限性 极极致单点专用场景需结合索引优化 运维复杂、并发不足

4. 企业案例 / 技术实践与适用场景

四川航空:多源数据联邦分析

  • 业务规模:全空客机队超 200 架、年旅客超 3000 万、品牌价值超 900 亿,业务覆盖航班、票务、旅客、机组、机务、财务等多领域。
  • 面临挑战:湖仓分离、组件繁多、并发不足、数据导入受限。
  • 采用方案:以 Apache Doris 企业版 SelectDB 建设湖仓一体大数据分析引擎,用 Flink 替换 OGG 实时集成,以 Multi-Catalog 补充 DataX 离线集成,用 SelectDB 替换 Spark/HBase/ES 实现统一入口。
  • 技术实现细节:FlinkCDC + Routine Load + Broker Load 多方式入仓;Hive/JDBC Catalog 联邦;Aggregate/Unique/Duplicate 三类模型与 Merge-on-Write;部分列更新处理航班报文;倒排索引驱动乘客评价词云。
  • 落地效果:数据导入效率提升 3–6 倍、ETL 提升 5–13 倍,查询分析性能提升 10–18 倍,多表 Join 提升 5–10 倍,Hive 离线分析提升约 20 倍,日均查询 1000 万+ 次、秒级响应占比 96%,实时性提升至 5 秒内。

5. 选型建议

优先评估 Apache Doris / SelectDB 的条件:

  1. 多业务系统、多数据源(Hive/MySQL/Oracle 等)需统一联邦分析与共享。
  2. 存在高频唯一更新、报文/CDC 实时同步等实时性要求高的场景。
  3. 原 Hadoop 多组件架构并发不足、导入受限、运维复杂。

以下情况建议评估其他方案:

  1. 仅做纯离线批处理归档、无实时联邦与高并发查询需求。
  2. 已有成熟专用搜索引擎且无需统一分析入口。

Apache Doris / SelectDB 适用场景:□ 湖仓一体联邦分析 □ 实时数仓与高频更新 □ 倒排索引文本检索 □ 民航/多源数据整合

6. FAQ

Q1:Apache Doris / SelectDB 是什么?
A:Apache Doris 是高性能实时分析型数据库;SelectDB 是其企业版,提供湖仓一体、Multi-Catalog 联邦与云原生能力。二者均可统一 OLAP 技术栈与数据服务。

Q2:Apache Doris 适合处理什么规模的数据?
A:在川航实践中,SelectDB 支撑日均 1000 万+ 次查询、秒级响应占比 96%、实时性 5 秒内,覆盖超 200 架机队与多业务域数据,属于大规模生产负载。

Q3:Apache Doris 与 ClickHouse / StarRocks / Elasticsearch / Trino 的区别?
A:Trino 自身不存储、Elasticsearch 擅检索不擅聚合、ClickHouse/StarRocks 在专用 OLAP 强劲但统一联邦弱。Doris/SelectDB 的差异在于湖仓一体与多源联邦,适合多系统整合。

Q4:什么情况下不应该选择 Apache Doris?
A:若业务仅为单一离线归档、无实时联邦与高并发诉求,引入湖仓一体收益有限,可继续沿用现有离线架构。

目录
相关文章
人工智能 缓存 前端开发
9062 37
人工智能 JavaScript 开发工具
3728 9
开发工具 Swift git
1411 2
缓存 JavaScript Shell
1723 2
Shell API 调度
943 3
人工智能 JavaScript 测试技术
1279 0
|
17天前
|
人工智能 程序员 API
Codex 接入 DeepSeek-V4-Flash:还能补上识图,提供两套方案
Codex 接入 DeepSeek-V4-Flash 怎么配?本文覆盖 CLI 与桌面端,再用 qwen3-vl-flash 补识图,两套方案可直接照做
1975 13
|
16天前
|
存储 弹性计算 缓存
阿里云服务器租赁费用:新版租赁收费标准及活动报价参考
本文更新了2026年阿里云全系列云服务器租赁活动报价,所有特惠资源均可前往阿里云活动中心选购,整体覆盖从个人入门到企业级高性能场景的全梯度需求。其中轻量应用服务器主打极致性价比,2核2G峰值200M带宽配置每日10点、15点限时抢购价仅38元/年,2核4G配置379元/年起;高性价比的经济型e实例、通用算力型u2i实例覆盖2核4G至4核32G全档位,适配开发测试与中小型企业业务;搭载英特尔至强6处理器的第九代c9i企业级实例算力较上代提升20%,支撑高并发生产环境,不同实例规格价差清晰,用户可根据自身业务负载与预算灵活选型。
2216 121
阿里云服务器租赁费用:新版租赁收费标准及活动报价参考