使用MySQL和MongoDB的组合是否有意义.我试图做的基本上是使用MySQl作为"原始数据备份"类型的东西,其中所有数据存储在那里但不从那里读取.
数据也同时存储在MongoDB中,读取只发生在mongoDB中,因为我不必进行连接和填充.
例如,假设构建NetFlix
在mysql中我有一个评论和电影的表.然后当在mySQL中发表评论时我只是将它添加到表中,而在MongoDB中我更新电影文档以保存这个新评论.
然后,当我想要获得电影和评论时,我只需从mongoDb获取文档.
我主要担心的是因为"新"mongodb与MySQL相比如何.在Mongo发生意外情况的情况下,我们有一个MySQL备份,我们可以快速获得应用程序回退到mysql和memcached.
从理论上讲,它可能听起来不错,但是你需要考虑很多事情.这将使您的应用程序比您想象的更复杂.我会举几个例子.
您将处理两个不同的系统,每个系统都有自己的行为.这些不同的行为将使得保持一切同步变得非常困难.
您必须在应用程序代码中处理其中一些场景.这让我想到了下一点.
您的应用程序需要与两个外部系统交互,因此您需要编写两个数据访问层.
如果MongoDB失败,应用程序将回退到MySQL和memcached.但此时memcached将是空的.所以MongoDB发生故障后的每个请求都会命中数据库.如果你有一个高流量的站点,这也可以很容易地删除MySQL.
确定您认为MongoDB可能发生"意外事件"的所有可能方式.然后为每个案例使用最简单的解决方案.例如,如果您担心数据丢失,请使用复制.如果数据损坏,请使用延迟复制.