四川航空湖仓一体:基于 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 社区 交流更多实践。

相关推荐
SelectDB1 小时前
网易云音乐日志平台:基于 Apache Doris / SelectDB 替换 ClickHouse 承载日增万亿日志
数据库
herinspace2 小时前
管家婆财贸ERP如何进行基本信息批量搬移
服务器·数据库·管家婆软件·财务软件
小马9262 小时前
智能体时代的两块基石:DeepSeek Harness 开源与“认知基础设施“数据库
数据库·人工智能·开源·agent
那年窗外下的雪.3 小时前
VXLAN EVPN 分层排障:从 VTEP 可达、ARP/MAC 到 MAC Mobility
服务器·前端·网络·数据库·spine
冰暮流星3 小时前
mysql练习1
数据库·mysql
三8443 小时前
MySQL 文件读写函数详解:从 CTF 实战到 LOAD_FILE、INTO OUTFILE、LOAD DATA INFILE 应用
数据库·sql
来让爷抱一个4 小时前
拯救我的“烂尾“项目:我用MonkeyCode把五个AI热点实践了个遍
网络·数据库·人工智能·prompt·ai编程
可涵不会debug4 小时前
LangChain 示例选择器(Example selectors)完整基础概念解读
服务器·前端·数据库
_Narcissus_4 小时前
B树概念及操作笔记(含完整代码实现)
c语言·数据结构·数据库·c++·笔记·b树·算法