node.js为什么大量用来操作非关系型数据库?

问题:为什么网上看到的node.js用来操作数据库一般都是非关系型数据库,关系型数据库(mysql)很少?

阅读 3.2k
2 个回答

不知道有没有听说过“全栈程序员(Full stack)”的说法,这要求你从前端到后端都要能够一个人完成。如果能力够强,当然可以随意搭配前后端技术。问题是对于大多数人而言学习成本太高,所以“全栈程序员”的段位就比较难以达到。如果要在一定程度上降低难度,达到“全栈程序员”的一条路径可以是MEAN Stack,分别是指:

  • MongoDB
  • Express
  • Angular
  • NodeJS

因为全部是以JS为基础,你就可以以一种语言吃遍前后端,一定程度上减少了学习负担和需要记忆的东西。
换个角度想,因为前端无论如何跑不出JS的手掌心,后面的技术栈多一种语言就多一些负担。从最省事的角度,当然是选择JS做服务端和JS操作数据库了。这样一来顺理成章的选择就是NodeJS+MongoDB。

另外从适应性的角度,JS对业务逻辑的描述能力并不强,有些人甚至认为其语法反人类(虽然我并不同意),也不适用于计算密集型的场景。它的优势在于并发能力强,适用于I/O密集型的场景。所以一个项目一旦选择了NodeJS,一般来说代表你更在乎的是并发能力。相较于关系数据库,MongoDB为代表的非关系数据库显然具备并发能力和水平扩展能力上的优势,那么它与NodeJS的搭配也就更合情合理一些。
反过来从后往前看,如果一开始决定了数据库必须使用关系数据库,多半因为涉及强事务或者复杂的关系。在这样的场景下逻辑通常会比较复杂,基于前面的原因(逻辑描述能力不强),选择后端语言的时候就多半不会选择NodeJS。

另外,逻辑复杂但是不涉及事务或复杂关系的情况也是存在的。如果一个项目的业务逻辑比较复杂,那一开始多半不会选择NodeJS,而是Java/C#/PHP之类。这时候后端的数据库其实并没有明确限制,只要适用就好。这种情况下你就会发现这些语言无论跟关系数据库或者MongoDB的搭配都很常见,取决于你自己对哪种更熟悉。

总之,你看到NodeJS搭配RDBMS比较少,是因为大部分时候这样的搭配没有道理。

应该用的比较多的也就 mongodb 了吧。

我想主要原因是,mongodb 使用的是一种类似 json 的 bson 作为存储和传输格式,而 js 对这种格式的解析又很友好;此外 mongodb 官方提供 nodejs 的驱动

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题