首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结合使用MySQL和MongoDB

问结合使用MySQL和MongoDB
EN

Stack Overflow用户
提问于 2010-10-14 13:12:04
回答 1查看 2.2K关注 0票数 1

结合使用MySQL和MongoDB有意义吗?我尝试做的基本上是使用MySQl作为“原始数据备份”类型的东西,所有数据都存储在那里,而不是从那里读取。

数据也同时存储在MongoDB中,并且只从mongoDB读取数据,因为我不必进行连接和其他操作。

例如,假设在构建NetFlix时

在mysql中,我有一个用于评论和电影的表格。然后,当在mySQL中创建注释时,我只需将其添加到表中,然后在MongoDB中更新movies文档以保存此新注释。

然后,当我想获取电影和评论时,我只需从mongoDb抓取文档。

我主要关心的是mongodb与MySQL的“新”比较。如果在Mongo中发生了意想不到的事情,我们有一个MySQL备份,可以让应用程序快速回退到mysql和memcached。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-14 16:21:22

从理论上讲,这听起来像是一个好主意,但有很多事情你必须考虑到。这将使你的应用程序比你想象的要复杂得多。我给你举几个例子。

两种不同的系统

您将处理两个不同的系统,每个系统都有自己的行为。这些不同的行为将使保持所有内容同步变得相当困难。

  • 当在MongoDB中写入失败,但在MySQL中成功时会发生什么?
  • 或反过来,当违反MySQL中的列约束时,例如?
  • 如果在MySQL中发生死锁怎么办?
  • 如果您的模式更改了怎么办?一次迁移是痛苦的,但你必须做两次迁移。

您必须在应用程序代码中处理其中一些场景。这就引出了我的下一点。

两个数据访问层

您的应用程序需要与两个外部系统交互,因此您需要编写两个数据访问层。

maintained.

  • The layers.

  • Abstracting
  • 这两个层都必须经过测试。应用程序的其余部分都需要与这两个层进行通信。
  • 会引入另一个层,这将进一步增加复杂性。

级联故障的可能性

如果MongoDB失败,应用程序将回退到MySQL和memcached。但在这一点上,memcached将是空。因此,在MongoDB失败后,每个请求都会立即命中数据库。如果你有一个高流量的网站,这也可以很容易地关闭MySQL。

忠告之词

找出你认为MongoDB可能会发生“意想不到的事情”的所有可能的方式。然后为每个单独的案例使用最简单的解决方案。例如,如果您担心的是数据丢失,请使用replication。如果是数据损坏,请使用delayed replication。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3930253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档