我应该使用mySQL还是MongoDB

时间:2012-01-20 00:54:41

标签: mysql mongodb nosql

目前有很多关于NoSQL的讨论,我的理解Mongodb就是其中之一,对我而言,NoSQL似乎是SQL与我们认识mySQL的意义不同。

以这种方式思考它们,它们都存储数据,一个是通过具有所谓限制的固定数据库来实现的,而另一个存储数据是因为它认为存储数据的最佳时间和可支持的数据没有限制或非常少。

然而,对于正在进行切换或考虑进行切换的Web开发人员来说,这会让人感到困惑。在我的情况下,我为一家大型电信公司工作,并且做出像这样的转换是需要真正关注的事情,而且我们无法转发那些没有实际内容的事情。

也许我不理解NoSQL的含义,也许我的意思是正确的。

我正在重新编写我们使用的整个CMS的过程中,如果我花时间查看noSQL或保留MySQL(这似乎没有任何问题,我会很高兴知道力矩)

我们在客户详细信息中只有5000行,而在备份中有14000行,只有在主表决定搞砸后才会备份。

3 个答案:

答案 0 :(得分:11)

你被迫选择一个还是另一个?如果没有,为什么要限制解决您的业务需求的潜在解决方案,必须做“这个”或必须做'那个'。我将软件工程的工作流程等同于医生的工作流程。

医生必须做出一些决定,以确保手术顺利进行。这包括诊断,确定切口点,以及选择所需的交易工具;手术刀,骨锯等完成手术。如果您告诉医生他们只能用弩进行手术,最终结果对患者或医生来说效果不好(医疗事故)。

因此,撇开笨拙的比喻,以下是我选择使用两者的几个原因,(以网上书店为例):

  • 书籍数据,如ISBN,作者姓名,发布日期等,都存储在RDBMS中(比方说MySQL)。通过在MySQL中存储这种类型的数据,我可以运行任意数量的查询以呈现给用户。例如,我可以运行一个查询,返回由姓氏为字母Z的作者发布的所有书籍,以及2005年的发布日期,按其ISBN降序排序。在为公司(或客户)创建有用的功能时,这种类型的数据操作至关重要。

  • 使用NoSQL解决方案将书籍资产(如封面图样)存储在文件系统中。这解决了两个问题。首先,我不希望大量数据膨胀我的MySQL数据库(blob),所以我将这些数据存储在文件系统上。其次,一本书的封面艺术与任何实际的书籍数据无关(人们真的想要在封面艺术中使用蓝色的所有书籍吗?)。我们根本无法放弃一本书的封面艺术,因为它可以在用户浏览我们的在线库存时成就或破坏销售。

最后,我建议您选择成功完成操作所需的任何和所有工具,以及将来可以轻松添加新功能的方法。

答案 1 :(得分:3)

有了这样的数据,MySQL不会成为问题。 NoSQL db是为大型数据集而设计的,并且设计完全不同(你可以在NoSQL中做的所有事情也可以在sql db中完成)。

此外,NoSQL管理起来要困难得多。 Cassandra需要正确的配置比正常的MySQL数据库更快,如果不是它要慢得多(即使这样你也几乎没有问题)。对于大多数NoSQL,您需要VPS /专用人质。

答案 2 :(得分:1)

NoSQL数据库值得进行某些评估,但它们有适合的利基,而不是拥有5,000行的CMS。

我认为你应该坚持使用适当的基于SQL的关系数据库。您可能会发现PosgreSQL是比MySQL更好的自由选择,但您必须自己评估 1

1 为此提供了各种资源,例如:http://www.wikivs.com/wiki/MySQL_vs_PostgreSQL