关系数据库不适合Node.js吗?

最近我一直玩Node.js一点点。 在我个人的情况下,我使用了MongoDB,部分原因是因为它非常简单,部分原因是Mongoose似乎是一个非常简单的方法来开始使用它。

我注意到,在使用Node.js时,似乎对于关系数据库有一定程度的反感。 与Node.js生态系统中的非关系数据库相比,它们好像得不到支持,但我似乎无法find一个简明的理由。

所以,我的问题是, 为什么关系数据库比Node.js更适合使用比MongoDB更好的select呢?

编辑:只是想澄清一些事情:

  • 我特别不在寻找与我正在构build的特定应用程序有关的细节
  • 我也不是在寻找非技术性的原因(例如,我没有像“Node和MongoDB都是新的,所以开发人员一起使用它们”之类的答案)

我所寻找的仅仅是技术上的原因。 例如,如果有一个技术原因,为什么关系数据库在与Node.js一起使用时performanceexception差,那么这就是我正在寻找的东西(请注意,从迄今为止的答案来看,案子)

不,没有技术上的原因。 这主要只是意见和使用NoSQL与Node.js是目前stream行的select。

诚然,Node的生态系统主要是由社区驱动的 。 除了Node的核心API以外的一切都需要社区的参与 而且,当然,人们更可能支持与个人喜好相一致的东西。

但是,许多人仍然使用和支持Node.js的关系数据库。 一些值得注意的项目包括:

  • mysql
  • pg
  • sequelize

在我的经验中,节点往往会受到拥有无状态API的数据库的欢迎,这非常适合节点的asynchronous性质。 大多数关系数据库利用有状态的连接进行事务处理,这将asynchronous非块I / O的主要优点降到最低。

我喜欢Node.js,但是使用Node,实际上使用RDBMs更有意义。 使用noSQL解决scheme,您经常需要在您的Node.js代码中进行连接

(a)连接速度较慢,响应速度较慢,因为Node不是C / C ++

(b)连接阻塞你的事件循环,因为连接发生在你的Node.js代码而不是在某个数据库服务器上

(c)手动编写连接通常很困难且容易出错; 您的noSQL查询可能很容易出错,或者您的连接代码可能不正确或不理想; 已经由RDBM的主人完成了优化的连接,并且在大多数情况下在RDBM中的连接被certificate是正确的。

有一个更强大的关系数据库系统,可以在数据库服务器上而不是在你的Node.js代码中优化C / C ++的连接,你可以让你的Node.js服务器做最好的事情。

说到这里,我认为很多主要的noSQL厂商都不支持连接()),我觉得这很愚蠢。完全的非规范化只是我能看到的一个梦想。

你能否准确地解释你所select的数据库和node.js面临的具体问题?

MongoDB比关系型数据库更受欢迎的几个原因:

  • MongoDB本质上是一个JSON对象存储,所以它翻译得非常好,为一个JavaScript应用程序。 MongoDB的function是JavaScript的function。

  • 我只是在这里猜测,但由于NoSQL数据库是新的,并有更多的热心程序员试验它,你可能有更多的参与这些NPM模块。

除此之外,Node.js在技术上是任何types数据库应用程序的完美select。 我曾经亲自做过一个小型的Node.js / MySQL应用程序,并没有遇到任何障碍。

但回到我的主要观点,我们可以整天谈论这个问题,这不是这个论坛的目的。 如果您在使用Node.js和select的数据库的任何代码中遇到任何具体问题,请改为提出这些问题。

编辑:严格的技术原因,除了双方的JSON兼容性:没有。