- 据外媒CNBC获得的内部文件显示,亚马逊迁离Oracle的数据库使用Aurora PostgreSQL是Prime Day促销日陷入瘫痪的主要原因。
- 这次故障突显了亚马逊希望在2020年之前完全摆脱Oracle数据库的过程中可能面临的挑战。
- 近年来亚马逊和Oracle在打口水仗,声称自家数据库软件和云工具的性能更胜一筹。
亚马逊现在算是领教了迁离Oracle数据库软件有多困难。
据CNBC获得的一份内部报告显示,在Prime Day促销日,这个头号电子零售商一边忙着处理导致销售流程减慢的重大网站故障,一边忙着应对其在俄亥俄州最大的一个仓库遇到的技术问题,该技术问题导致成千上万件包裹发货延迟。
文件显示,这个问题很大程度上归咎于亚马逊从Oracle数据库迁移到自家的数据库技术。这次故障突显了亚马逊希望在2020年之前完全摆脱Oracle数据库的过程中可能面临的挑战,以及重新获得这种级别的可靠性有多难。这还表明Oracle的数据库在一些方面确实比亚马逊的同类软件更高效,Oracle可能会在本周于旧金山举行的年度OpenWorld大会上强调这一点。
Prime Day故障发生后,亚马逊的工程师撰写了一份长达25页的报告,亚马逊称这是纠正错误。亚马逊采用这套标准流程,试图了解重大事故为何发生、如何防止将来重蹈覆辙。
报告显示,亚马逊努力查明Prime Day问题的根本原因,原因是数据库迁移之后丢失了一项功能。文件显示,万一刚安装的数据库(名为Aurora PostgreSQL)出现错误,亚马逊也未给出应急方案。
在一个问题中,工程师被问及为什么亚马逊的仓库数据库没有遇到“上一次流量高峰期间(那时使用Oracle数据库)的同一个问题”。他们回答,“Oracle和Aurora PostgreSQL是两种不同的[数据库]技术”,处理“保存点”(savepoint)的方式不一样。
保存点是一种重要的数据库工具,用于跟踪和恢复单个事务。报告称,在Prime Day当天,创建了数量过多的保存点,亚马逊的Aurora软件不堪重负,因而拖累了数据库的整体性能。
无论如何都有可能发生
CNBC透露了文件的细节后,伊利诺伊大学厄巴纳-尚佩恩分校的计算机科学教授马特•西泽(Matt Caesar)说:“如果亚马逊坚持使用Oracle数据库,很可能不会发生这次故障。此外,如果亚马逊使用Oracle的数据库,似乎能够更早地诊断问题,从而有望缩短故障的持续时间。”
亚马逊的发言人在通过电子邮件发表的声明中对这个问题轻描淡写,称没有什么故障,尽管内部文件声称数据库“性能降级导致了滞后和严重故障。”
发言人说:“有必要指出这一点,那就是该仓库从未发生过什么故障,问题只是导致了约1%的包裹出现短时间的发货延迟。这个问题很快查明并得到了解决。”
俄亥俄州的这个仓库是在Prime Day之前迁离Oracle数据库的13个仓库中最大的一个。文件称,在Prime Day促销活动期间,该仓库每天处理的包裹超过110万件。处理库存和发货数据的所有服务和软件已统统迁移到了那些仓库中的Aurora数据库上。
据报告声称,这次故障在Prime Day持续了数小时,导致15000多件包裹发货延迟,还浪费了约90000美元的劳动力成本。损失不包括工程师们排除和修复错误所耗费的所有时间或任何可能错失的销售订单。
在报告里头名为“汲取教训”的部分,亚马逊的工程师写道:“保存点在Aurora PostgreSQL中的行为与其在Oracle中的行为不一样”,言外之意是Oracle的软件处理问题更有效。报告还称,没有用于PostgreSQL中分析的SQL语句数据,而要是有该数据,“原本有助于查明”问题的根本原因。
要是亚马逊做好更充分的准备,这次故障也许不那么严重。在文件的一个部分,该公司称,由于“底层PostgreSQL数据库遇到性能问题时缺少应对方案”,“结果花了很长的时间才解决”问题。文件还声称,一份“完备的应对方案或操作手册”原本有助于“更快地消除影响”。
哥伦比亚大学的计算机科学教授亨宁•舒尔茨莱宁(Henning Schulzrinne)看了文件后说:“我猜想,亚马逊刚更换了数据库,并没有测试在亚马逊Prime Day那天出现的具体的负载模式,结果大吃一惊 ”。
近年来,亚马逊和Oracle一直在打口水仗,原因是亚马逊扩大了软件品种,与Oracle更加正面较量了。CNBC在8月份曾报道,亚马逊正努力在2020年初之前将整套数据库从Oracle迁移出去。
“真的很难”
Oracle董事长兼联合创始人拉里•埃里森才不信亚马逊的说法。在该公司去年12月份的财报电话会议上,埃里森称亚马逊“没有迁离Oracle”。他在今年8月份的一次活动中重申了观点,他说:“我认为亚马逊做不到这一点。”
他说:“亚马逊有10年的时间来迁移Oracle,但现在仍使用Oracle。而使用自己的技术对它们来说并不容易。那么做不具有成本效益。我的意思是,真的很难。”
市场研究公司Moor Insights & Strategy的首席分析师帕特里克•穆尔黑德(Patrick Moorhead)表示,这一事件表明,旧的应用软件(就像亚马逊仓库中使用的那些应用软件)迁离Oracle有多难;几十年来,Oracle一直在与世界上最大的企业合作。
他说:“AWS Aurora是为前瞻性应用软件设计的,而Oracle是为较传统的应用软件设计的。”