我正在构建一个 NodeJS 应用程序,并且在 NoSQL MongoDB 与 RMDS PostregresSql 之间完全纠结。我的项目是创建一个开源示例项目,用于使用 NodeJS 在网页上记录访问者并实时显示访问者统计信息。一开始我打算使用 MongoDB,因为很多 NodeJS 示例和教程,尽管大多是较旧的,都使用了它,而且免费层的 paas 主机比比皆是。然而,我最近看到很多人抨击 MongoDB,发现尝试使用 MongoDB 的人最终切换到 Postgres:
- http://blog.engineering.kiip.me/post/20988881092/a-year-with-mongodb
- http://dieswaytoofast.blogspot.com/2012/09/mysql-vs-postgres-vs-mongodb.html
- http://www.plotprojects.com/why-we-use-postgresql-and-slick/
我也是 Heroku 的粉丝,因此听说过很多关于 Postgres 的事,并且发现 SQL 查询有时会很不错。
我不是数据库专家,所以我一生都无法告诉我该走哪条路。如果您能就应该考虑哪一个以及为什么提供一些建议,我将不胜感激。
我有几个标准:
因为我希望这是一个示例,所以最好有一种方法来托管大量数据。我知道 MongoDB 肯定提供了这个,但是像 Heroku 这样的 Postgres paas 似乎有相当小的数据库(因为我记录了网站的每个访问者)
一个简单易懂的数据库。
性能并不重要,但速度不会受到伤害
感谢大家的帮助!
注意:请不要喷火,每个人都有自己的看法:)
最佳答案
目前,在 SQL 数据库和 NoSQL 数据库之间进行选择无疑引起了激烈的争论,并且有很多关于这个主题的好文章。我会在最后列出一对。对于您的特定需求,我推荐 SQL 而不是 NOSQL 没有问题。
NoSQL 有一组利基用例,其中数据存储在称为文档的大型紧密耦合包中,而不是关系模型中。简而言之,与单个实体(如单个用户使用的所有文本文档)紧密耦合的数据更好地存储在 NoSQL 文档模型中。表现得像 excel 电子表格并且可以很好地成行并接受聚合计算的数据最好存储在 SQL 数据库中,而 postgresql 只是其中几个不错的选择之一。
您可能会考虑的第三个选项是 redis (http://redis.io/),它是一种简单的键值数据存储,在像 SQL 一样查询时非常快,但不像严格键入的那样。
您引用的示例似乎是一个简单的行/列类型问题。您会发现 SQL 语法远没有 MongoDB 的查询语法那么晦涩难懂。 Node 有很多值得推荐的东西,并且该工具集在过去一年中已经显着成熟。我建议使用 monogoose npm 包,因为它减少了 native mongodb 所需的样板代码量,我没有注意到任何性能下降。
http://slashdot.org/topic/bi/sql-vs-nosql-which-is-better/
http://www.infoivy.com/2013/07/nosql-database-comparison-chart-only.html
关于node.js - Nodejs 中的 Mongodb 与 Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18776088/