您好:这款游戏是可以开挂的,软件加微信【添加图中微信】确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人...
2025-06-26 0
导读:随着川航大规模数据导入需求增长,数据响应频繁出现卡顿,原 Hadoop + Apache Doris(Apache Doris: Open source data warehouse for real time data analytics - Apache Doris) 的数据架构存在着涉及组件多、并发性不足、数据导入受限的痛点。经过综合选型对比,川航选择引入 SelectDB(面向实时分析的现代化分析型数据仓库-OLAP实时数仓-SelectDB) 建设湖仓一体大数据分析引擎,取得了数据导入效率提升 3-6 倍,查询分析性能提升 10-18 倍、实时性提升至 5 秒内等收益。
本文转录自吴乐(四川航空 信息技术部 大数据架构师)在 Doris Summit Asia 2024 上的演讲,经编辑整理。
四川航空股份有限公司(以下简称:川航),自开航至今持续安全飞行 36 年,现运营全空客机队超过 200 架飞机,年运送旅客量超过 3000 万,航线覆盖亚洲、欧洲、北美洲、大洋洲和非洲,品牌价值超过 900 亿。
航空公司的业务具有业务系统繁多、数据交互复杂、实时性要求高三大特点。
2010 年,川航使用 Oracle 建设简单数仓用于报表查询。随着数据量增长,2014 年,川航转用 Hadoop 大数据平台,建立离线数仓以提升报表刷新时效。为满足更高的实时性与查询性能需求,在 2018 年,川航采用 Hadoop + Apache Doris 构建数据中台。然而,随着大规模数据导入需求增长,该架构涉及组件繁多,数据响应频繁出现卡顿。2022 年,我们选择 Apache Doris 作为数据分析的主要入口,并最终选择 Apache Doris 企业版 SelectDB 建设湖仓一体大数据分析引擎,统一 OLAP 技术栈与数据服务。
川航早期数据架构分为数据源、数据集成、离线数仓、查询入口与数据应用五大部分:
该架构存在以下痛点:
为解决以上痛点,川航决定升级数据架构以满足航班、票务、旅客、机组、机务、财务等多个领域+多样化数据“采存管用”需求。经过综合评估,川航最终选择 Apache Doris 企业版 SelectDB 建设湖仓一体大数据分析引擎。SelectDB 湖仓一体特性通过多源数据目录(Multi-Catalog)功能,支持了包括 Apache Hive、Apache Iceberg、Apache Hudi、Apache Paimon、LakeSoul、MySQL、Oracle、SQL Server 等主流数据湖、数据库的连接访问,并可以通过 Apache Ranger 等实现统一权限管理。
SelectDB 凭借湖仓一体特性、丰富导入方式、卓越性能表现及广泛生态支持,有效解决了川航的多项痛点,全面满足其业务需求:
基于 SelectDB 的新架构在数据集成和分析引擎上完成升级:
在基于 SelectDB 的湖仓一体架构中,业务库中的航班调度、旅客服务数据直接通过 FlinkCDC 实时同步入仓。消息报文等数据则通过 Routine Load 从 Kafka 消费入仓。数据湖 Hive 存储 Acars 日志数据,通过 Hive Catalog 与 SelectDB 快速内表关联,加速查询。对于不常用的数据库,川航直接通过外表查询接入 SelectDB,实现高效分析查询。
SelectDB 统一了联邦数据湖分析场景的查询入口,使得川航能够借助 JDBC Catalog 直连 MySQL、Oracle 等数据源,实现跨数据源联邦分析,同时也可作为 JDBC 类数据集成的有效途径。此外,川航通过 Hive Catalog 可直接访问 Acars 飞机日志,并与内部表关联,加速分析进程。
## 川航通过 Hive Catalog 直接访问 Acars 飞机日志CREATA CATALOG HIVEPROPERTIES( 'type' = 'hms', 'hive.metastore.uris' = 'thrift://172.0.0.1:9083',);SELECT * FROM HIVE.DB.TABLE a JOIN INTERNAL.DB.TABLE bON a.id = b.id
部分数据导入也可直接使用 Hive 通过 Insert 方式插入至 SelectDB 内部表。
INSERT INTO INTERNAL.DB.TABLE SELECT * FROM HIVE.DB.TABLE WHERE DATE = "2024-11-21";
部分数据湖分析数据可以直接对业务数据库做数据写回,并进行数据分析。
INSERT INTO JDBC.DB.TABLE1 SELECT * FROM HIVE.DB.TABLEWHERE DATE = "2024-11-21";
川航基于 SelectDB 湖仓一体架构,有效解决了复杂业务系统中数据源众多、交付复杂、导入受限等问题,显著提升了异构数据源间的联邦与关联分析效率,并实现了简单高效的数据交换与共享。
SelectDB 倒排索引特性能够加速字符串数据全文检索,并支持自定义分词,能够很好地支撑多维度快速检索分析,从海量数据中快速筛选符合条件的行。
川航充分利用 SelectDB 倒排索引特性,结合乘客乘机体验评价数据,实现了词云展示。通过分析乘客反馈中的关键词,川航能够直观地展示出乘客最关心的服务内容与体验,从而为后续的服务改进提供数据支持。
通过对比测试,川航发现使用倒排索引后,查询性能相比传统的 LIKE 或全文检索匹配,提升了约 4 倍。这一显著提升减少了数据检索时间成本,帮助川航更快地响应市场变化和客户需求。
未来,SelectDB 的倒排索引特性将应用于川航更多场景,例如结合川航情感分析模型,实现更深入的数据分析。
为满足川航多样化场景需求,确保数据处理灵活、高效、实时,选用恰当的表模型至关重要。SelectDB 支持包含聚合模型、主键模型以及明细模型在内的多种数据表模型。川航基于 SelectDB 的数据建模规则如下。
## 职级人数聚合示例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
航空公司小批量实时数据导入更新需求频繁。为此,川航利用 SelectDB Merge-on-Write 更新能力实现小批量实时数据高频导入,并基于主键进行高频数据更新。SelecDB 主键模型专为数据更新设计。支持 Merge-on-Read(MoR)和 Merge-on-Write(MoW)两种存储方式,MoR 模式优化写入性能,MoW 则提供了更好的分析性能。目前,川航数仓 ODS 层数据通过 CDC 实时同步导入,全部采用 Merge on Write 表,基于主键进行 UPSERT 操作,提升性能。
CREATE TABLE ODS_SCALFOC.'ODS_FLIGHT_BASIC_INFO'('FLIGHT_ID' decimal(9,0) NULL COMMENT '航班主键','FLIGHT_DATE' date NULL COMMENT '航班日期','FLIGHT_TYPE' varchar(23) NULL COMMENT '航班类型',.......)ENGINE = OLAPUNIQUE KEY('FLIGHT_ID','FLIGHT_DATE')COMMENT 'OLAP'DISTRIBUTED BY HASH('FLIGHT_ID') BUCKETS 10PROPERTIES("replication_allocation" = "tag.location.default:3","enable_unique_key_merge on write" = "true");
测试发现,在测试数据 500 GB 的情况下,常规查询及复杂关联使用 Merge on Write 相较于 Merge on Read,性能提升近 4 倍。
SelectDB 部分列更新特性允许直接更新表中特定字段值,而非整行数据。在主键模型中,SelectDB 支持直接插入或更新部分列数据,无需读取整行数据,从而显著提升更新效率。以川航的航班报文更新为例,通常报文包含数十条基础信息,以往信息单项变更需要更新全部业务字段,效率比较低。在此场景下,SelectDB 部分列更新的能力至关重要。
## 航班状态变更报文样例片段{ "Hdr":{ "Ver": "v1.0", "Event": "StatusChange", "Subevent": "CC", "Newval": "CC", "Oldval": "CI", "Uptm": "20241104131901310", "Stamp": "0b672c44-7c58-46d8-a565-e8516eec4568" }, "Dat":{ "Flight":{ "AirlineCode": "3U", "FilghtNumber": "9821", "International": "I", "Route": "CTU-ALA-BUD", "FlightDate": "2024-11-04", "FlightStatus": "CC", "Suffix": "", "DepAirport": "CTU", "ArrAirport": "ALA" } } }
该特性应用后,川航每日接收大量报文输入后,往往仅需对航班基本要素与航班状态字段进行更新,极大提升了效率。若无部分列更新能力,则需使用 Update 语句,更新较慢,严重影响性能。
报文传输后,川航通过内部 Stream Load,并使用 Flink 进行设置(代码如下所示),即可实时仅更新航班基本要素(主键)与状态。实现高效合并更新。
## Flink 设置部分列更新'sink.properties.partial_columns' = 'true'## 在 sink.properties.column 中指定要导入的列(必须包含所有 key 列,不然无法更新)
川航完成基于 SelectDB 的湖仓一体大数据分析引擎升级后,数据实时性、并发性、导入能力均取得显著提升,获得业务部门的广泛好评,并取得了以下关键收益:
四川航空应用 SelectDB 构建湖仓一体大数据分析引擎,解决了原架构涉及组件多、并发性不足、数据导入受限的问题,并取得了数据导入效率提升 3-6 倍,查询分析性能提升 10-18 倍、实时性提升至 5 秒内等收益。
未来,四川航空深度探索更多特性在场景应用中的可能性,以进一步降低成本并提升效率:
相关文章
您好:这款游戏是可以开挂的,软件加微信【添加图中微信】确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人...
2025-06-26 0
6月25日,伊朗总统佩泽希齐杨公开了一封写给伊朗人民的公开信,表示:12天的战争结束,开始重建工作。这意味着这场备受关注的冲突终于迎来了暂停,作为调解...
2025-06-26 0
亲,这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到-人的牌一样。所以很多小伙伴就怀疑这...
2025-06-26 0
您好:这款游戏是可以开挂的,软件加微信【添加图中微信】确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人...
2025-06-26 0
现在人们打棋牌麻将谁不想赢?手机微乐麻将必赢神器但是手机棋牌麻将是这么好赢的吗?在手机上打棋牌麻将想赢,不仅需要运气,也需要技巧。掌握的棋牌麻将技巧就...
2025-06-26 0
亲,这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到-人的牌一样。所以很多小伙伴就怀疑这...
2025-06-26 0
发表评论