1

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

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

4

4 回答 4

3

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

回到您的问题,并非所有数据都是相关的。因此,对于这些情况,NoSQL 可能会有所帮助。话虽如此,NoSQL 代表“不仅仅是 SQL”。它并不打算敲击或取代 MySQL。

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

  1. MySQL是强大的数学基础。
  2. 声明性语法。
  3. 结构化查询语言 (SQL) 中的一种著名语言。
  4. 高度成熟且极其可靠的技术。MySQL 的存在远远超过了最古老的 noSQL。这是一项成熟的技术。Google Adsense 在 MySQL 上运行,Facebook 持久存储是 MySQL。这些例子表明了它的可靠性。
  5. 由于技术成熟,人们已经优化了它。
  6. 庞大的在线和开源社区,用于支持和提供与 noSQL 技术相反的功能(看看 Cassandra 发生了什么)

在我看来,当我选择一项技术时,上述所有问题对我来说都很重要。嘿,好吧,如果这是一个周日晚上的项目,你想在现实世界中产生很少的后果,那就做你想做的事,但如果它稍微严重一些,那么请考虑这些问题。

SQL 并没有消失(即使在 noSQL 中)。将此视为非此即彼的论点是错误的。NoSQL 是人们在合适时需要考虑的替代方案,仅此而已。

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

看看这个热闹的视频。这为这个主题提供了不同的视角:)

在此处输入图像描述

于 2012-07-09T18:23:46.577 回答
1

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

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

于 2012-07-09T18:25:05.413 回答
1

两者都不。

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

http://neo4j.org/

注意:与 Neo4J 无关

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

如果您需要将 Graph 数据可视化,这将非常令人印象深刻地展示给您的老板,请使用 yEd 包。要将 neo4J 导出为 graphml 格式,请使用以下命令:

将 Neo4j DB 转换为 XML?

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

于 2012-07-09T18:27:10.207 回答
0

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

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

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

于 2012-07-09T18:22:13.960 回答