写点什么

英国卫报迁移, MongoDB 躺枪背锅?MongoDB 中文社区有话说

  • 2019-01-18
  • 本文字数:2417 字

    阅读完需:约 8 分钟

英国卫报迁移, MongoDB躺枪背锅?MongoDB中文社区有话说

最近 InfoQ 发布了“别了,MongoDB”(翻译自卫报作者 Philip McMahon 等发表的英文博客 https://www.theguardian.com/info/2018/nov/30/bye-bye-mongo-hello-postgres)  一文引起比较大的反响。如果关心技术社区的朋友们都知道,圈子里时不时会冒出一篇 (MySQL | PostgreSQL | MongoDB ) 迁移到 (MySQL | PostgreSQL | MongoDB ) 的文章。有些时候因为选型不当,有些是因为时间的变迁导致场景变化,有些时候是因为有更先进的技术或者更适用产品出现。这些其实都符合技术正常变革的自然规律。但是卫报的这篇文章加上前不久的 58 简历泄露事件,让 MongoDB 中文社区的核心成员们觉得有必要站出来澄清事实,以防止标题党语不惊人死不休,以流量为目的,完全无顾于技术的科学性和严肃性。

卫报迁移事件解析

其实这是卫报 10 年来第二次数据库迁移,第一次是从 Oracle。我们来看下这几年的事件回放:


  1. 2011 年 4 月,卫报成为最早的 MongoDB 用户之一,成功上线其构建在 MongoDB 之上的内容管理系统。

  2. 2011 年 11 月,在 QCon 的一次大会上,Guardian 的 Mat Wall 分享了他们选择 MongoDB 的原因:


  • 数据库 schema 经常需要升级,升级意味着编辑们无法使用系统

  • 基于 Oracle 的老系统 300 多张表,10,000 多行 Hibernate XML 配置,异常复杂

  • 关系型数据库难以进行性能扩展


(上述内容摘自于


https://www.infoq.com/presentations/Why-I-Chose-MongoDB-for-Guardian


这个分享成了当时一个很大的成功案例,为 MongoDB 成为 Gartner CMS 魔力象限中排名第一第二的 Adobe Experience Manager 及 Sitecore 两个 CMS 系统不约而同选用的数据库奠定了基础。


  1. 2015 年,卫报因为自己数据中心的备份系统出问题而决定把数据中心迁移到 AWS 云上。注意,此时为止并没有出现什么运维事故。

  2. 搬到 AWS 上以后,发生了两次运维事故,一次是因为 NTP 始终服务被中断导致的,一次是因为他们在应用程序启动时创建索引导致的。

  3. 2017 年, 以 Philip McMahon 为首的 IT 团队开始了为期 10 个月的迁移工作,从基于 AWS 的 MongoDB 迁移到 AWS 的 PostgreSQL。Philip 列出了以下理由:


  • 这两年在 AWS 云里出了两次运维故障

  • MongoDB OpsManager 未能兑现“无障碍数据管理”

  • 官方未能及时帮助他解决问题,最终是自己解决了


  1. Philip 团队在花了 10 个月时间的努力之后,终于把他们系统的数据库迁移到了 AWS 的 PostgreSQL,随后就发表了 bye-bye MongoDB 的博客。


好了,至此我们就了解大概情况了。

中文社区有话要说

  1. Philip 的第一个要迁移的原因:NTP 导致的运维故障。 MongoDB 是分布式集群,需要时间统一,你自己在 VPC 里面不小心把 NTP 时钟服务中断了导致集群不能正常工作,这是谁的锅呢?

  2. Philip 的第二个要迁移的原因: 应用程序启动时构建索引导致服务不可用。关于这一点,如果是一个读的懂英文文档的开发者都会知道,无论是使用 Spring 或者 Node.js,都会提到并不建议在程序里来创建索引。 构建索引消耗很多资源并且执行时间不可控,按照 MongoDB 最佳实践是要在复制集内进行滚动构建。实际上使用 OpsManager 就可以很容易实现滚动建索引。这一点他自己也意识到了“可能不是一个好主意”。恩,怪我咯?

  3. Philip 的第三个要迁移的原因:数据库管理很重要而且很难。所以我们要换一个数据库,从 MongoDB 换到 PostgreSQL。因为 PostgreSQL 不是数据库, 就不用管理了?

  4. 没有比较就没有伤害,和上面提到的 Mat Wall 的 Oracle 迁移到 Mongo 的言之凿凿的原因比较,Philip 的 3 大原因没有一条是真正和 MongoDB 数据库本身技术相关的。MongoDB 丢了数据吗?MongoDB 自己崩溃了吗? 作为卫报这个知名媒体,可以有一点逻辑吗?

  5. 在卫报迁移到 AWS 之前,MongoDB 运行都是正常的。所有的问题反而是在 AWS 里发生的,特别是关于 VPC。这说明了卫报 IT 团队在云管理能力上有所欠缺。按照他们的理论,亚马逊多半也没有实现“云让你不用再管理你自己的基础架构”的口号吧?是不是也该从 AWS 迁移走呢?


写到这里,相信读者已经能够有所甄别。Philip 团队真正的痛点是他们无足够的能力,也无意在这方面去增强自己的能力来维运自己的 MongoDB 集群。这个出发点本身并无诟病,这是 SaaS/PaaS 平台存在的意义。MongoDB 自己就提供基于 AWS 的托管服务,支持线下到云中的无缝迁移。Philip 确实提到了有一个超出他决策范围的非技术原因(来自编辑部)让他无法选择该服务。换句话说,如果没有编辑部的外在影响,Philip 的完美解决方案就是:


卫报自管理的 AWS MongoDB   -> 无缝迁移工具  -> 数据库托管服务

这个方案可以完美解决:


  1. 1NTP 或类似的问题

  2. 数据库管理(托管服务的基本价值)

  3. 应用程序构建索引(oops 不行, 这种自己挖坑自己踩的,哪个云平台恐怕都解决不了)


这种迁移由于不涉及到代码改动,所需工作会大大减少。我们不知道 Philip 开始迁移方案的时候有没有预料到会花费整个团队 10 个月的时间,而且可能是 Sleepless 的 10 个月。但如果是在无缝迁移工具的帮助下,那么这个切换可以在数天内完成。


所以,如果我们更客观的来看,卫报作者发的那篇文章的题目其实更应该叫做:


别了,自运维数据库,拥抱云托管数据库。

MongoDB 中文社区参与撰稿成员:

徐雷 中文社区联席主席 MongoDB 实战指南翻译者


刘诚杰 中文社区上海分会长 平安集团高级 DBA


李丹 中文社区北京分会长 逻辑思维首席 DBA


周李洋 中文社区联席主席, MongoDB Master,  Teambition 运维总监


唐建法 中文社区主席

关于 MongoDB 中文社区

MongoDB 中文社区(mongoing.com) 成立于 2014 年,是大中华区获得官方认可的中文社区。社区由来自官方的工程师,阿里腾讯等大型互联网公司及业界 MongoDB 专家和 MongoDB 书籍作者等组成,。经过社区志愿者们的不断努力,目前已经有超过 2 万的线上及线下成员。中文社区由博客、线下活动、技术问答、微信/qq 群、官方文档翻译等版块组成,迄今为止已经举办了数十场线下活动和线上直播,发表了数百篇技术文章及文档,在社区里支持了数以万计的 MongoDB 用户。


2019-01-18 19:117544

评论 1 条评论

发布
用户头像
我绝的是他们业务系统稳定了,schemaless 不太需要了,所以可以沉淀到关系数据库。当然,自己维护一个数据库肯定不如云厂商来帮你维护了,不管是 MongoDB 还是 PostgreSQL。
2019-01-19 22:07
回复
没有更多了
发现更多内容

平凯星辰 TiDB 获评 “2023 中国金融科技守正创新扬帆计划” 十佳优秀实践奖

编程猫

StoneDB顺利通过中科院软件所 2023 开源之夏 结项审核

StoneDB

MySQL 数据库 HTAP StoneDB

华为云GaussDB助力工商银行、华夏银行斩获“十佳卓越实践奖”

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

万界星空科技云MES管理系统和ERP的对接

万界星空科技

数字化转型 mes 云mes 万界星空科技 万界星空科技mes

巴适得板!这次我们和四川一起加“数”前行!

天翼云开发者社区

云计算 大数据

LED显示屏防护等级知识讲解

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家 等级

外包的鄙视链,背后原因是什么

老张

外包 竞争力 核心竞争力

Aiseesoft Video Repair for Mac(视频修复软件) 1.0.12永久激活版

mac

苹果mac Windows软件 视频修复软件 AIseesoft Video RepAIr

KiCon Asia 2023完美落幕,助力Kicad生态繁荣,华秋在行动

华秋电子

kicad

华秋这场技术研讨邀请了哪些重磅嘉宾?

华秋电子

最新前端技术趋势——菜鸟必看

秃头小帅oi

前端

Mybatis和其他主流框架的整合使用

不在线第一只蜗牛

开源 mybatis 项目开发

使用 PPO 算法进行 RLHF 的 N 步实现细节

EquatorCoco

算法 ppo算法

代码混淆的原理是什么?常见代码混淆方法介绍

雪奈椰子

云主机CPU和内存配比:优化资源分配的关键

天翼云开发者社区

云计算 cpu 云主机

更快更省更好用!天翼云云原生一体机iStack打通物云最后一公里!

Geek_2d6073

更快更省更好用!天翼云云原生一体机iStack打通物云最后一公里!

天翼云开发者社区

云计算 云原生

Gitlab配置mirrorRepository 镜像仓库

javaNice

Java gitlab

苹果Mac动态壁纸:Dynamic Wallpaper 16.7中文版

繁星

动态壁纸 Dynamic Wallpaper

预训练模型在迁移学习中的应用

百度开发者中心

深度学习 大模型 LLM

Linux 安装gradle

javaNice

Java Linux Gradle

从商业增长到自然增长,OPPO广告联盟为开发者开辟增长新路径

Geek_2d6073

【Linux 基础入门 + Java项目部署】

百度搜索:蓝易云

Java 云计算 Linux 运维 云服务器

助力开发者健康长效增长 OPPO 开启应用和服务生态新篇章

Geek_2d6073

Apache环境php安装扩展swoole。

百度搜索:蓝易云

Apache 云计算 Linux swoole 云服务器

赛车竞速游戏:art of rally拉力赛车 for Mac 1.5.0中文版

繁星

赛车竞速游戏 Art of Rally

任福继院士:基于交叉学科的研究将成主流,算力平台和计算人才是自主创新关键

Geek_2d6073

本地MQTT协议消息服务远程连接教程介绍

EquatorCoco

Linux 本地化 mqtt 协议解析

英国卫报迁移, MongoDB躺枪背锅?MongoDB中文社区有话说_数据库_唐建法_InfoQ精选文章