SQL (MySQL)与NoSQL (CouchDB)的比较

136

我正在设计一款高可扩展应用程序,需要存储大量数据。例如,它将存储许多关于用户的信息,以及他们的许多消息、评论等等。我之前一直使用MySQL,但现在我想尝试像couchdb这样不是SQL的新东西。

请问有什么想法或建议吗?


3
噫,CW。我本来还希望在这里得到一些真正的声誉和街头信用呢。 :-) - Franci Penov
1
你能再详细解释一下你的数据集吗? - mikeal
4
我希望这个不需要被关闭。这些问题是很重要的,但由于某些原因它们不适合在SO上提问。 - Neil
3个回答

205
这是最近Dare Obasanjo的博客文章中的一句引用。

SQL数据库就像自动变速器,而NoSQL数据库就像手动变速器。一旦切换到NoSQL,您就需要承担许多在关系型数据库系统中由系统自动处理的工作。这与选择手动变速器与自动变速器类似。其次,通过从数据库层面消除关系型数据库执行的许多完整性检查,NoSQL允许您从系统中获得更高的性能。同样,这就像通过驾驶手动变速器车辆而不是自动变速器车辆来获得更高性能的汽车。

然而,最值得注意的相似之处在于,就像我们大多数人不能真正利用手动变速器车辆的好处,因为我们的大部分驾驶都是在通勤交通中,所以存在类似的残酷现实,即大多数网站并不具有Google或Facebook的规模,因此不需要Bigtable或Cassandra。

我只能补充一点,从你至少有一些经验的MySQL切换到你没有经验的CouchDB,意味着你将不得不处理一整套新的问题并学习不同的概念和最佳实践。虽然这本身很棒(我正在家里玩MongoDB,并且非常喜欢它),但这将是一个成本,您需要在估算该项目的工作量时计算它,并带来未知的风险,同时承诺未知的好处。如果基于您不了解的技术,那么很难判断您是否可以按时完成项目并获得您想要/需要成功的质量。

现在,如果您团队中有NoSQL领域的专家,请务必仔细考虑。但是如果团队中没有任何专业知识,则不要在新的商业项目中使用NoSQL。

更新:为了在你引发的公开火灾中添加一些汽油,这里有两篇来自SQL阵营人士的有趣文章。 :-)

我迫不及待地希望NoSQL死亡(原始文章已经消失,这是一个副本
战胜NoSQL思维定势,但这不是反对NoSQL的文章
更新: 好吧,这里有一篇有趣的关于NoSQL的文章
理解NoSQL


2
扩展SQL解决方案的过程是删除功能和关系的过程。因此,我认为这不是完全公正的评估。此外,我不会像这样将NoSQL数据库分组,例如Cassanda专注于向上扩展,而CouchDB关注于向下扩展API并使其易于使用,并尝试允许该API尽可能地扩展。 - mikeal
这可能是引用的链接吗?http://www.25hoursaday.com/weblog/2010/03/29/TheNoSQLDebateAutomaticVsManualTransmission.aspx - edosoft
啊,确实是的。我错过了他还将它作为公开博客文章发布的事实。我会更新这篇文章。 - Franci Penov
1
感谢您的帖子!“我迫不及待地想让NoSQL死去”的链接对我无效,您可能需要检查一下。 - kbpontius
你已经用一个新的、不太理解的限制和缺陷清单来交换了一个列举得很好的限制和缺陷清单。 - Yarin
显示剩余2条评论

4
似乎今天唯一的真正解决方案是扩展或分片。所有现代数据库(包括NoSQL和NewSQL)都支持水平扩展,而无需应用程序具备分片代码或其他东西。不幸的是,对于值得信赖的老牌MySQL来说,“分片”并未“开箱即用”。ScaleBase(免责声明:我在那里工作)是一个完整的扩展解决方案,如果您愿意,它是一个“自动分片机器”。 ScaleBase分析您的数据和SQL流,将数据分割到DB节点上,并在运行时聚合 - 所以您就不必了!而且它是免费下载的。
不要误会,NoSQL很棒,它们是新的,新的选择总是好的!但选择NoSQL需要付出代价,请确保您能够支付... 您可以在这里查看有关MySQL,NoSQL等的更多数据:http://www.scalebase.com/extreme-scalability-with-mongodb-and-mysql-part-1-auto-sharding
希望有所帮助。

0

其中最好的选择之一是选择支持可扩展性的MongoDB(NOSql dB)。它以文档的形式存储大量数据,而不是像SQL中的行和表那样。这比遵循数据分片更快。使用副本集来确保数据保证,维护具有主数据库服务器作为基础的多个服务器。独立于语言。灵活易用。


你应该支持你的观点,认为Couchbase、Cassandra、AeroSpike等所有支持你提到的功能的数据库都是最好的,并备份你的意见。 - OneCricketeer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接