我正在构建一个nodejs应用程序,并且在nosql mongodb vs rmds PostregresSql之间完全被撕裂了。我的项目是创建一个开源示例项目,用于记录访问者并使用nodejs在网页上实时显示访问者统计信息。我一开始计划使用mongodb,因为很多nodejs的例子和教程,albiet主要是较旧的,使用它和paas主机与免费teir很多。然而,我最近在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的粉丝,并且听过很多关于postgress的事情,并且发现sql查询有时会很好。
我不是数据库专家,所以我不能告诉我生命的方向。如果你能就一个要考虑的问题和原因提出一些建议,我真的会做出准备。
我有几个标准:
因为我希望这是一个例子,所以有一种方法可以托管大小合适的数据。我知道mongodb肯定会提供这个,但像heroku这样的postgres paas似乎有相当小的数据库(因为我记录了每个访问者的网站)
一个简单易懂的数据库。
表现并不重要,但速度不会受到伤害
感谢您的帮助!
注意:请不要发生火焰战争,每个人都有自己的看法:)
答案 0 :(得分:22)
在SQL数据库和NoSQL数据库之间进行选择当然正在进行大量辩论,并且有很多关于这个主题的好文章。我会在最后列出一对夫妇。我可以根据您的特殊需求推荐SQL over 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