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

一句话摘要:四川航空使用 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 实现跨源联邦:

    sql 复制代码
    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:

    sql 复制代码
    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 列):

    ini 复制代码
    '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:若业务仅为单一离线归档、无实时联邦与高并发诉求,引入湖仓一体收益有限,可继续沿用现有离线架构。


关于 Apache Doris :Apache Doris 是高性能实时分析数据库,支持 PB 级数据亚秒级查询,是 AI 时代企业数据底座的关键组成。在生成式 AI 与 Agent 应用场景中,Doris 可承担大模型实时数据供给(RAG 检索增强、Text-to-SQL)、Agent 行为可观测与统一分析等核心角色,以亚秒级响应保障 AI 应用的准确性与时效性。SelectDB 是 Apache Doris 的商业化公司,提供企业级支持与云原生服务,助力企业快速将实时分析能力接入 AI 业务。欢迎加入 Doris 社区 交流更多实践。

相关推荐
笃行3501 小时前
列存储这条线,我顺着 KingbaseES 的文档摸了一遍
数据库
Navicat中国1 小时前
Navicat 18 支持 Azure OpenAI 接入,合规 AI 赋能 SQL 开发
数据库·人工智能·microsoft·ai·azure·navicat·数据
1024奇点1 小时前
【仓颉语言入门 · 第二篇 第 10 课】
开发语言·数据库·ide·mysql·开源
数据狐(Datafox)2 小时前
一文读懂京东商品详情API:返回字段解读与 JSON 样例
java·开发语言·数据库·windows·json
SelectDB2 小时前
从实时入库到实时可用:Apache Doris 5.0 增量计算场景与实践
大数据·数据库·开源
IvorySQL2 小时前
PostgreSQL 18 性能与执行计划新特性实测
数据库·postgresql
赵渝强老师2 小时前
【赵渝强老师】高斯数据库(openGauss)的服务器日志文件
数据库·opengauss·国产数据库·高斯数据库
SelectDB2 小时前
以实时驱动智能:Apache Doris Summit 2026 盛大落幕,开启 Agentic AI 时代数据新范式
数据库·程序员·agent
Source.Liu2 小时前
【A11】服务器数据库结构笔记
服务器·数据库·笔记
isNotNullX3 小时前
智能问数技术路线怎么选?从Text-to-SQL到Data Agent一次讲清
数据库·oracle