APP下载
报价宝  ›  综合  › 

东方航空用MongoDB挑战1天10亿次网站查询

报价宝 来源:baojiabao.com 发布时间:2018-02-06 12:25:00 10月26日更新
报价宝综合消息东方航空用MongoDB挑战1天10亿次网站查询

东方航空营销领域IT架构师童帅华表示,为打造东方航空新一代电商系统,希望后台数据库除了要有关联式数据库的查询的方便性,还想要NoSQL数据库处理大量资料的速度,最后选择了MongoDB。

图片来源: 

iThome

中国东方航空2015年初开始打造全新航空电商系统,选用了可横向扩展的NoSQL数据库MongoDB,7月部分系统已上线,预估目标要能承载一天10亿次数据库查询,而开放的部分先供旅行社以及平板平台做航班搜寻,以3台服务器撑住每日500万次查询量。

过去,顾客在网站上订购机票,平均数据库查询200次就会下单订购机票,但是现在平均要查询1.2万次才会发生一次订购行为,同样的订单量,资料查询量却成长百倍,新的消费型态迫使东方航空寻求新的解决方案。东方航空营销领域IT架构师童帅华表示,航空业跟金融业一样,采用新科技的态度比较保守,所以一开始先评估了Oracle关联式数据库。

东方航空航班数据库每秒钟都要接收500笔左右的资料更新,资料来自中国全球分销系统GDS(Global Distribution System),航班资料一有变更就需要马上同步,整个过程必须经过查询、比较、计算以及插入等动作,他们所评估的Oracle数据库明显无法负荷,因此转而拥抱NoSQL数据库。

高度支援JSON让NoSQL比RDB更易于搜寻

不过,NoSQL数据库的选择也很多,东方航空评选目标是要兼具关联式资料多键值查询的方便性,又能有NoSQL数据库处理大量资料的速度。童帅华说,MongoDB对于JSON(JavaScript Object Notation)格式有良好的支援度,使用者能在资料表中嵌入资料档案以支援一对多表格关系(One-to-Many Relationships),且MongoDB支援2级索引,即使资料档案的格式没有事先定义,也能让数据库直接搜寻这个档案内部的资料。

飞机航班的机位库存数据库设计十分复杂,机场对机场直飞以及有中转的所有航班加起来,东方航空一年有上亿班次,每个班次都有26个舱等,每个舱等都有其库存,以传统关联式数据库的设计方式,需要有一个主表格与数个子表才能完整描述航班机位库存资料。但是由于每个航空公司对于航班属性的描述不尽相同,想要找一套能通吃所有航班纪录的资料表设计非常困难,因此就会无法使用那些不在事先定义的航班资料档,还有可能发生例外问题。

而MongoDB在资料表中储存JSON格式的档案,搭配二级索引功能,就能取代多子表的数据库设计方式。MongoDB高级方案架构师唐建法表示,关联式数据库虽然也能将档案存进资料表中,但是仅能使用Blob(Binary Large Object)格式,这种格式对于数据库来说是黑盒子,无法对档案内容进行搜寻,使用者需要从数据库读取出来,再用程式解析成需要的资讯。

东方航空公司PSS项目组数据库架构与DevOps工程师黄翀表示,这个做法不只是适用航空业,也能运用于金融以及保险业数据库常见的主表与多子表设计。

MongoDB横向扩展的能力,不只能让数据库储存大量资料,也能具备承载瞬间大量系统存取的能力,MongoDB高级方案架构师唐建法说,已知最大规模的使用案例有600个MongoDB节点,大约100个节点,就能提供系统每秒120万次的存取,东方航空目前初期仅有3个节点,未来还有很大的扩充空间。

他补充,关联式数据库是70年代的产物,当初的设计是在单一机器上执行,因此硬要横向扩展成丛集架构,整体IOPS反而会比不上在单一机器上执行的效能,而他认为,市面上目前并没有达产品(Production)等级的关联式数据库丛集。

 

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 数码相机价格 笔记本价格 小米手机价格 华为手机价格 红米手机价格