我正在构建一个NodeJS应用程序,在NoSQL MongoDB和RMDS PostRegressionQL之间左右为难.我的项目是创建一个开源示例项目,用于记录访客,并使用NodeJS在网页上实时显示访客统计信息.起初我打算使用MongoDB,因为很多NodeJS示例和教程(尽管大多是较老的)都使用了它,而且有大量免费层的paas宿主.然而,我最近看到了很多对MongoDB的抨击,发现试图使用MongoDB的人最终转向了Postgres:

我也是Heroku的粉丝,因此我听说过很多关于Postgres的事情,我发现SQL查询有时很好.

我不是数据库专家,所以我一辈子都不知道该怎么办.如果你能给我一些建议和建议,我将不胜感激.

我有几个标准:

  1. 因为我希望这是一个例子,所以最好有一种方法来承载大小适中的数据量.我知道MongoDB确实提供了这个功能,但像Heroku这样的Postgres paas似乎有非常小的数据库(因为我记录了网站的每个访问者)

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

  3. 性能并不重要,但速度不会有坏处

谢谢你的帮助!

Note:请不要火战,每个人都有自己的看法:)

推荐答案

目前,在SQL数据库和NoSQL数据库之间进行 Select 肯定是一个激烈的争论,关于这一主题的好文章很多.最后我会列出几个.我可以根据您的特殊需求推荐SQL而不是NOSQL.

NoSQL有一组特殊的用例,其中数据存储在称为文档的紧密耦合的大型包中,而不是存储在关系模型中.简而言之,与单个实体紧密耦合的数据(如单个用户使用的所有文本文档)最好存储在NoSQL文档模型中.表现类似excelElectron 表格的数据,可以很好地按行排列,并且需要进行聚合计算,这些数据最好存储在SQL数据库中,postgresql只是其中的一个好 Select .

您可以考虑的第三个选项是ReRIS(http://redis.io/),它是一个简单的键值数据存储,当查询类似SQL但不是严格类型化时,速度非常快.

你举的例子似乎是一个简单的行/列类型问题.您会发现SQL语法远没有MongoDB的查询语法那么神秘.Node有很多值得推荐的地方,而且该工具集在过go 一年中已经显著成熟.我建议使用monogooseNPM包,因为它减少了原生mongodb所需的样板代码量,而且我没有注意到任何性能下降.

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

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

Mongodb相关问答推荐

MongoDB.ArrayFilters出错:在路径中找不到标识符';elem';的数组筛选器

我可以在BSON中使用代理字段吗?

MongoDB即使在使用索引时也很慢

Mongo查找条件:不存在

优化游戏应用程序的反馈表单后端设计

将数据从一个集合插入另一个集合的聚合

MongoDB - 使用许多嵌套对象更新嵌套数组

Mongoose 和 MongoDB,如何在具有多个引用的两个模型之间创建关系?

MongoDB聚合多条件

指定字段对于 MongoDB 是transient瞬态的,但对于 RestController 不是

mongodump 是否锁定数据库?

NoSql 参考数据

django 和 mongodb 是否使迁移成为过go ?

从性能Angular 来看 MongoDB 嵌入式与参考

如何在 Node.js 中格式化 Mongoose 的日期?

java.lang.IncompatibleClassChangeError:Implementing class Mongo

MongoDB MapReduce - 发出一个键/一个值不调用reduce

Mongoid 不在查询中

MongoDB打印两点之间的距离

Mongo 条件为key doesn't exist?