我应该使用MySql还是mongodb

时间:2012-07-09 18:16:48

标签: mysql ruby-on-rails-3 mongodb devise

我正在构建一个社交网络(连接及其连接,消息和位置),在设计我们的后端时,我在决定是否使用关系数据库(MySQL)或无sql系统(MongoDB)时有点困惑蜜蜂。有没有人对什么时候有什么看法?

PS:我正在为开发人员构建开发人员API,以便使用oAuth进入我们的系统。因此,可扩展性和性能也是关键因素。 Rails 3 +设计(最有可能)。

4 个答案:

答案 0 :(得分:3)

这在很大程度上取决于您对哪种技术感到满意,您想要从中获得什么等等。

回到你的问题,并非所有数据都是关系型的。所以对于那些情况,NoSQL可能会有所帮助。话虽如此,NoSQL代表“Not Only SQL”。它并不打算敲取MySQL或取代它。

SQL或MySQL有几个非常大的优点:

  1. MySQL是强大的数学基础。
  2. 声明性语法。
  3. 结构化查询语言(SQL)中的一种众所周知的语言。
  4. 经过充分验证且极其可靠的技术。 MySQL已经远远超过了最古老的noSQL。这是一项成熟的技术。谷歌Adsense运行在MySQL,Facebook持久存储是MySQL。这些例子表明它的可靠性。
  5. 由于技术成熟,人们已经优化了它。
  6. 巨大的在线和开源社区,无论是支持还是提供功能,而不是noSQL技术(看看Cassandra发生了什么)
  7. 在我看来,当我选择一项技术时,上述所有问题对我都很重要。嘿嘿,如果这是一个星期天晚上的项目,你想要掀起一点现实世界的后果,那就去做一些让你想象的事情,但如果它稍微严重一些,那么请考虑这些问题。

    SQL还没有消失(即使在noSQL中)。将此视为一个或两个参数是错误的。 NoSQL是人们在适合时需要考虑的替代方案,就是这样。

    文档可以存储在非关系型数据库中,例如CouchDB甚至是MySQL(它仍然存在滥用但仍然存在)。原则上,关系数据库可以构成一个非常好的NOSQL解决方案

    查看此hilarious video。这给出了关于这个主题的不同观点:)

    enter image description here

答案 1 :(得分:1)

由于架构的灵活性和可扩展性/性能,我选择了MongoDB作为我的“社交”应用程序。 MongoDB允许我调整我的模式,而不必进行大量的代码更改,并使读取/查找数据非常容易。

我还选择MongoDB作为学习经历。我想知道这些“noSQL”数据库的大惊小怪...现在我知道为什么了。 MongoDB在我看来很棒,绝对值得寻找需要可扩展性和性能的社交网络。 Node.js也是API的绝佳选择;)

答案 2 :(得分:1)

两者都不是。

使用网络/图表数据库,您不会后悔。我目前最喜欢的是Neo4j。

http://neo4j.org/

注意:与Neo4J无关

我认为最新版本的Neo4J有一个sql接口,以防万一你需要SQL兼容性。否则,使用他们的本机库做你的crud。它非常快。

如果您需要可视化图表数据,这对您的老板来说非常令人印象深刻,请使用yEd软件包。要将neo4J导出为graphml格式,请使用:

Convert Neo4j DB to XML?

您可以在Neo4J中结束您的关系,并使用关系数据库或mongodb对其进行后端处理。我也见过那些混合架构。

答案 3 :(得分:0)

如果你的项目需要某些对象之间的实际关系,那么MySql就可以了。如果您要存储通常只有固有数据的内容,例如向其他用户发送消息的用户,则文档样式数据库(如MongoDB)更有意义。

你可以在mongo中建立关系,但它们在关系数据库中更有意义。但是,如果您的大多数数据更加固有用户,那么mongo更有意义。

在您的情况下,文档类型的方案更有意义,每个用户都有一个连接用户列表和他们自己的个人属性,等等......

相关问题