ITPub博客

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

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

原创 国内数据库 作者:SelectDB 时间:2026-08-21 13:43:00 0 删除 编辑

一句话摘要:四川航空使用 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:若业务仅为单一离线归档、无实时联邦与高并发诉求,引入湖仓一体收益有限,可继续沿用现有离线架构。


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


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70017904/viewspace-3180339/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
SelectDB,面向 AI 的极速分析与搜索数据库 了解我们:selectdb.com

注册时间:2022-06-30

  • 博文量
    418
  • 访问量
    421866