智能体刷屏的背后,是 AI 应用拐点的来临?AICon 北京站议程重磅公布,50+ 硬核分享不容错过 了解详情
写点什么

专访黄翀:东方航空到底用 MongoDB 做了什么,技术选型为何花落 MongoDB?

  • 2016-09-11
  • 本文字数:2427 字

    阅读完需:约 8 分钟

在今年的 MongoDB World W016 大会上,来自中国东方航空公司黄翀分享了使用MongoDB 的实践经验,介绍了东航如何将Spark 和MongoDB 配合使用来解决所面临的问题,以及具体的步骤,一时引起热议。

东航信息部PSS 部门副经理童帅华表示,选择MongoDB,是为了打造东方航空新一代Shopping 系统,希望后台数据存储除了要有关系型数据库所有查询功能,还想支持多变的数据模型以及结构。

那么,东方航空具体如何进行的技术选型?效果如何?为此,InfoQ 对东方航空相关项目的技术负责人黄翀进行了专访,对这些问题一一进行了解答。

受访嘉宾介绍

黄翀,东方航空PSS 部门架构师。作为工程师先后供职于PCCW,Sinolife 等公司,有着超过10 年开发经验,熟悉开源产品如Spark,MongoDB,Drools 等。

InfoQ:东方航空开始使用 MongoDB,您提到,目前只在一个项目中进行了使用。能否详细介绍下这个项目的背景呢?该项目的配置如何?其数据库有哪些特点,所接受的访问量是什么数量级?

黄翀:该项目是东航 Shopping 项目,为用户提供个性化的航班搜索服务,支持多目的地搜索、基于预算范围的搜索、城市主题的搜索、灵感语义的搜索、实时的低价日历搜索等。同时,灵活组合中转路径,提高 OD 航线覆盖率。

上述的项目背景所带来的技术挑战是:一次前端搜索,所带来的后端的库存和运价搜索复杂度是原来的几十倍或者上百倍。因此,该项目对系统的性能要求更高。

该项目的配置:采用 3 台 64 核 128G memory ssd 硬盘。

生产环境: 3 台服务器组 MongoDB Replica-set 集群。

访问量: 目前推广上线了部分渠道,旅客的查询量每日 600 万次 +,转换成数据库的查询量每日 4500 万次 +。

数据库总数据条数: 720 亿条,每日更新次数 2600 万次 +,99% 以上查询效率低于 200ms。

InfoQ:为什么选择在该项目中用 MongoDB?为了保证提供正常或更好的服务,东航从哪些方面进行了评估?具体的评估过程、数据、结果如何?

黄翀:该项目的特点是:高负载高并发。因此,我们在选型数据库时,主要参考技术标准如下:

  • 支持基于内存查询的数据库,减少磁盘 IO 交互。
  • 支持复杂多变数据存储结构与类型。
  • 支持集群架构保证高可用。
  • 支持复杂的 SQL 查询,例如基于预算,来搜索满足条件的航班;或者基于航班时刻(上下午),来搜索满足条件的航班等。

综合以上标准进行评估,最后我们选择了 MongoDB。

项目开始之初就依次评估过 Greenplum,Oracle,MySQL,MongoDB 等技术,有 RDBMS(ACID),有 Nosql(cap);既考虑 key-value 型,也考虑要支持范围复杂搜索。既考虑到数据总量对性能影响,也考虑到我们是查询性能要求高,写入性能要求不是不高但是次要。既考虑到实际开发难度学习曲线,也考虑到运维成本。

最后,我们又比较了性能、开发难易程度等诸多因素,最后选择了 MongoDB。

InfoQ:Spark 和 MongoDB 的结合,是否完美匹配了东航的需求?在实时性方面,这样的结合有什么优势?在目前的使用过程中表现如何,有没有体现出优势或者暴露出不足?

黄翀: Spark 作为一个基于内存计算的引擎目前已进入东航的视野,我们进行了 POC 测试及使用场景验证,证明其对提高我们性能是有帮助的,下一步我们会考虑在生产上应用 Spark+MongoDB 的技术。

我们在运价计算场景验证了这项技术的优势。本来每次请求都要计算运价,现在我们将预先计算好的结果都存入 MongoDB,将计算性能问题转化为查询性能问题。基于我们在 MongoDB 在优化查询方面的经验,简化了问题本身。

优势显而易见,不足在于 Spark 的 map 方法不适应一些自编程 map,造成一些复杂中转程运价的计算难于在 Spark 中实现。

InfoQ:该项目在迁移、部署和维护方面是如何进行考虑的?成本是如何进行估算的?该项目目前是否已正式上线,投入使用?

黄翀:目前使用的项目不存在迁移的过程,因为是新的项目选型了 MongoDB 数据库。目前来说 MongoDB 对东航还属于新事物,因此运维这块还依赖于项目组自己和 MongoDB 的原厂商一起来保障。

使用 MongoDB 的成本主要是购买了原厂的运维保障,因为目前使用 MongoDB 的 Shopping 项目是东航电商项目的核心组件,运维级别非常高,因此采购原厂来支持保障数据库的运维是非常必要的。

该项目已正式上线投产使用。

InfoQ:该项目的技术方案具体是如何落地的?有没有遇到哪些阻力?对于想要采取相似技术方案的企业来说,有哪些经验可以分享?

黄翀:早在 2014 年初,我们已经使用 MongoDB Version 2.8 将以往使用 Oracle 作为数据库的功能都实现了一遍,这个切换是非常方便快速的,许多代码可以复用。由于 MongoDB 是无模式的,可以不遵守范式,所以在设计 document 结构时,以及 chunk key 的选择时是有争论的,MongoDB 的咨询师给了我们比较大的帮助。

随着项目进行,MongoDB 自己也在更新换代,我们一起成长。同时发现我们上一个新应用,比以往至少要快 5 个人天。我相信在 MongoDB 在不需要数据库支持强事务的场景,是非常值得采用一种数据库。

MongoDB 是操作性功能完备数据存储方案,能覆盖众多场景。在云中部署,结合 Docker 等一众运维工具,会提高运维效率,节约运维成本。

InfoQ:针对东航开始使用 MongoDB,网上也有很多的评论,也有很多的误解,有支持者也有质疑者,您如何看待这些观点呢?假如该项目的方案表现令东航十分满意,在未来会推广到其他项目中去么?

黄翀:对我们来说,我们使用 MongoDB,不是属于哗众取宠,为了使用开源技术而使用,而是针对使用的场景进行了多轮的技术验证和多个数据库 POC 测试比较,选定了满足我们要求的产品,同时成本也能为我们所接受。因此这样的选型是对东航有帮助的,同时在互联网化的今天,东航这样的传统性企业在技术上也在不断的开放自己,开始拥抱互联网技术,在民航 IT 生态圈也占据一席之地。

我们在今后的项目中,针对适合使用 MongoDB 的业务场景,也会继续考虑使用 MongoDB。

受访嘉宾将于 9 月 22 日在「大数据杂谈」做线上群分享,回复关键词「东航」,可报名入群听更全面细致的技术细节分享,跟作者线上无障碍交流。

感谢郭蕾对本文的审校。

2016-09-11 22:095047
用户头像

发布了 28 篇内容, 共 18.2 次阅读, 收获喜欢 29 次。

关注

评论

发布
暂无评论
发现更多内容

深入探索Linux零拷贝原理

C++后台开发

后台开发 零拷贝 linux开发 Linux服务器开发 C++开发

clickhouse 索引、索引局限与解决方案

水滴

Clickhouse 索引 解决方案 稀疏索引

语雀桌面端技术架构实践

阿里巴巴终端技术

桌面端

Seata AT 模式代码级详解

SOFAStack

seata

基于RESTful页面数据交互案例

十八岁讨厌编程

RESTful 后端开发 9月月更

一起瓜分20万奖金【第三届火焰杯软件测试大赛开始公开选拔】

测试人

软件测试 自动化测试 接口测试 测试开发 比赛

区块链商城系统开发NFT交易技术

薇電13242772558

区块链

RDS:一致性处理事务的神器

华为云开发者联盟

数据库 后端 企业号九月金秋榜

[SpringMVC]bean加载控制

十八岁讨厌编程

spring 后端开发 9月月更

数字技术推动乡村振兴,腾讯云助力上线大通农文旅融合数字化平台

科技热闻

如何学习大数据分析?

小谷哥

学习ui设计自学好还是参加UI培训好?

小谷哥

关于Linux中Keepalived高可用热备自动化部署的一些笔记

山河已无恙

9月月更 #九月金秋

软件测试 | 测试开发 | 云架构系统如何做性能分析?

测吧(北京)科技有限公司

测试

Java19 正式 GA!看虚拟线程如何大幅提高系统吞吐量

PPPHUANG

Java 协程 吞吐量 虚拟线程

哪家web前端培训班比较好?

小谷哥

软件测试 | 测试开发 | 专项测试实战 | 如何测试 App 流畅度(基于 FPS 和丢帧率)?

测吧(北京)科技有限公司

测试

后疫情时代,远程办公发展趋势如何?

Baklib

协同办公 文档管理

百分点大数据技术团队:Cesium技术在智慧应急行业的应用

百分点科技技术团队

软件测试 | 测试开发 | Java 接口自动化测试首选方案:REST Assured 实践 (一)

测吧(北京)科技有限公司

测试

5种kafka消费端性能优化方法

华为云开发者联盟

大数据 企业号九月金秋榜

[SpringMVC]REST入门案例与优化

十八岁讨厌编程

spring 后端开发 9月月更

软件测试 | 测试开发 | 代码质量管理平台实战| SonarQube 安装、配置及 JaCoCo、Maven 集成

测吧(北京)科技有限公司

测试

认识Java的整形数据结构

华为云开发者联盟

Java 开发 企业号九月金秋榜

LED显示屏行业大数据分析

Dylan

LED显示屏 led显示屏厂家

学习ui设计需要掌握哪些东西呢

小谷哥

合同抵万金,禅道项目管理服务包免费领!

禅道项目管理

项目管理 禅道

软件测试 | 测试开发 | 代码分析体系及Sonarqube平台

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | REST Assured 实践(二):断言实现

测吧(北京)科技有限公司

测试

以百分点大数据操作系统(BD-OS)为例 解读ToB产品架构设计的挑战及应对方案

百分点科技技术团队

推动零信任加速落地应用 天翼云为企业铸牢安全基石

极客天地

专访黄翀:东方航空到底用MongoDB做了什么,技术选型为何花落MongoDB?_数据库_韩婷_InfoQ精选文章