39

我正在构建一个 NodeJS 应用程序,并且在 NoSQL MongoDB 与 RMDS PostregresSql 之间完全纠结。我的项目是创建一个开源示例项目,用于使用 NodeJS 在网页上记录访问者并实时显示访问者统计信息。一开始我打算使用 MongoDB,因为很多 NodeJS 示例和教程,尽管大多是较旧的,都使用了它,而且免费层的 paas 主机比比皆是。然而,我最近看到很多对 MongoDB 的抨击,发现尝试使用 MongoDB 的人最终切换到 Postgres:

我也是 Heroku 的粉丝,因此听说过很多关于 Postgres 的信息,并且发现 SQL 查询有时会很好。

我不是数据库专家,所以我一辈子都不知道该走哪条路。如果您能就考虑哪一个以及为什么提供一些建议,我将不胜感激。

我有几个标准:

  1. 由于我希望这是一个示例,因此最好有一种方法来托管大量数据。我知道 MongoDB 肯定提供了这个,但是像 Heroku 这样的 Postgres paas 似乎有相当小的数据库(因为我记录了网站的每个访问者)

  2. 一个简单且易于向他人解释的数据库。

  3. 性能并不重要,但速度不会受到伤害

感谢所有的帮助!

注意:请不要火焰战争,每个人都有自己的意见:)

4

1 回答 1

24

在 SQL 数据库和 NoSQL 数据库之间进行选择现在肯定会引起激烈的争论,并且有很多关于这个主题的好文章。我会在最后列出一对。我可以根据您的特定需求推荐 SQL 而不是 NOSQL。

NoSQL 有一组利基用例,其中数据存储在称为文档的大型紧密耦合包中,而不是关系模型中。简而言之,与单个实体(如单个用户使用的所有文本文档)紧密耦合的数据更好地存储在 NoSQL 文档模型中。表现得像 excel 电子表格并且很好地适合行并接受聚合计算的数据最好存储在 SQL 数据库中,而 postgresql 只是其中几个不错的选择之一。

您可能会考虑的第三个选项是 redis ( http://redis.io/ ),它是一个简单的键值数据存储,在像 SQL 那样查询时非常快,但不像严格键入的那样。

您引用的示例似乎是一个简单的行/列类型问题。您会发现 SQL 语法远没有 MongoDB 的查询语法那么晦涩难懂。Node 有很多值得推荐的东西,并且该工具集在过去一年中已经显着成熟。我建议使用monogoose npm 包,因为它减少了本机 mongodb 所需的样板代码量,而且我没有注意到任何性能下降。

http://slashdot.org/topic/bi/sql-vs-nosql-which-is-better/

http://www.infoivy.com/2013/07/nosql-database-comparison-chart-only.html

于 2013-09-13T00:33:19.183 回答