生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

专访黄翀:东方航空到底用 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:094681
用户头像

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

关注

评论

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

数字馆藏电子商务平台开发:如何发展数字藏品?

开源直播系统源码

软件开发 区块链技术 NFT 数字藏品 数字藏品开发

用两个栈实现队列

掘金安东尼

算法 前端 8月月更

App Push 通用测试方案

转转技术团队

测试工具

别小看 Log 日志,它难住了我们组的架构师

浅羽技术

日志 log4j slf4j logback 8月月更

基于 gh-ost 的在线 Schema 变更

Bytebase

MySQL 数据库

一个奇葩的线上问题,导致我排查了一天

艾小仙

Java elasticsearch 程序员 ELK

低成本、强交互、沉浸式的云游戏,究竟如何实现?

阿里云视频云

视频云 云游戏

微服务全链路灰度新能力

阿里巴巴云原生

阿里云 微服务 云原生 灰度 全链路

获取IP地址的途径有哪些?要如何保护IP地址不被窃取?

郑州埃文科技

IP地址 追踪IP 保护IP

让“上链”触手可及:VoneBaaS 赋能传统应用场景

旺链科技

区块链 数字化转型 产业区块链

数字化转型别着急,先看看如何打通数据孤岛吧

雨果

数字化转型 打通数据孤岛

Go-Excelize API源码阅读(二十)——SetDefinedName

Regan Yue

Go 开源 源码阅读 8月日更 8月月更

NFT盲盒游戏商城交易系统开发技术

薇電13242772558

NFT 盲盒

合合信息对于表格识别与内容提炼技术理解及研发趋势

合合技术团队

人工智能 表格识别 合合信息

逆向工程:揭示Google Colab未公开的秘密

OneFlow

机器学习 深度学习 模型

java的可变参数

TimeFriends

8月月更

图文详解:内存总是不够,我靠HBase说服了Leader为新项目保驾护航

浅羽技术

数据库 大数据 微服务 HBase 8月月更

AIGC:自动化内容生成,AI的下一个引爆点?

晨山资本

AI 2D 3D模型 3D点云

如何学习一项新技术?

平凡人生

Alibaba最新神作!耗时182天肝出来1015页分布式全栈手册太香了

退休的汤姆

Java 程序员 分布式 面经 秋招

Http缓存原来如此,牛波牛波

知识浅谈

HTTP缓存 8月月更

不容错过!什么是领域驱动设计?为什么落地这么难?

京东科技开发者

前端 代码 领域驱动模型DDD 中台架构 研发提效

前端的状态管理与时间旅行:San实践篇

百度Geek说

前端 JavaScrip

讲座回顾丨基于 OpenYurt 和 EdgeX 的云边端协同新可能

阿里巴巴云原生

阿里云 云原生 边缘计算

{版本发布公告}HMS Core 6.6.0来啦

HMS Core

讲真,这份秋招豪礼【面试锦囊】真舍不得给你们

浅羽技术

面试 面试题 秋招 8月月更 秋招你准备的怎样了

阿里架构师花近十年时间整理出来的Java核心知识pdf(Java岗)

退休的汤姆

Java 面经 校招 秋招 java·工程师

五问五答:第三方风险管理

SEAL安全

网络安全 风险管理 安全风险 软件供应链安全

倒计时1天!计算巢软件免费试用中心发布,即刻报名!

阿里云弹性计算

计算巢 试用中心

基于SpringBoot的SSMP整合

SpringBoot 2 Mybatis-Plus 8月月更

80%Java开发者面试都问的SpringBoot你竟不会?看完这些笔记足以

退休的汤姆

Java 面经 秋招 spring、

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