Mat*_*aly 59 relational-database node.js
最近我一直在玩Node.js.在我的特殊情况下,我最终使用MongoDB,部分原因是因为它非常简单,部分原因是Mongoose似乎是一种非常简单的开始使用它的方法.
我注意到在使用Node.js时似乎对关系数据库有一定程度的反感.与Node.js生态系统中的非关系数据库相比,它们似乎得不到很好的支持,但我似乎无法找到一个简明的理由.
所以,我的问题是,是否存在一个可靠的技术原因,为什么关系数据库比使用MongoDB等替代方案更适合使用Node.js?
编辑:只是想澄清一些事情:
我正在寻找的只是技术上的原因.例如,如果有一个技术上的原因,为什么关系数据库在与Node.js一起使用时表现异常糟糕,那么这就是我正在寻找的那种东西(请注意,到目前为止,从答案来看似乎不是案子)
Ale*_*lls 24
我喜欢Node.js,但是使用Node实际上使用RDBM 更有意义,而不是非关系数据库.使用noSQL /非关系解决方案,您经常需要在Node.js代码中进行手动连接,有时需要处理缺少事务,这是具有提交/回滚功能的RDBM的技术特性.以下是使用非关系DB + Node.js服务器的一些潜在问题:
(a)连接速度较慢,响应速度较慢,因为Node不是C/C++
(b)昂贵的连接会阻塞你的事件循环,因为连接发生在你的Node.js代码中而不是某些数据库服务器上
(c)手动编写连接通常很困难且容易出错; 您的noSQL查询很容易出错,或者您的加入代码可能不正确或次优; RDBM的主人之前已经完成了优化连接,并且在大多数情况下,RDBM中的连接被证明是正确的,在数学上是正确的.
(d)一些非关系数据库,如MongoDB,不支持事务 - 在我的团队的情况下,这意味着我们必须使用外部分布式锁,以便可以将多个查询组合在一起形成原子事务.如果我们可以只使用事务并避免应用程序级锁定会更容易一些.
使用更强大的关系数据库系统,可以在数据库服务器上而不是在Node.js代码中对C/C++进行优化连接,让Node.js服务器做到最好.
话虽如此,我认为许多主要的noSQL供应商不支持连接是非常愚蠢的(?)就我所见,完全去规范化只是一个梦想.缺乏交易可能有点奇怪.没有事务,只有一个查询是原子的,没有应用程序级别的锁定机制,你不能使多个查询原子化:/
外卖:
如果您想要非关系持久性 - 为什么不简单地对关系数据库进行反规范化?没有人强迫您以关系方式使用传统数据库.
如果你使用Node.js的关系数据库我推荐这个ORM:https: //github.com/typeorm/typeorm
顺便说一句,我更喜欢"非关系"一词而不是"noSQL".
Mun*_*nim 10
您能否准确解释您所选择的数据库和node.js面临的具体问题?
MongoDB比关系数据库更受欢迎的几个原因:
MongoDB本质上是一个JSON对象存储,因此它可以很好地转换为javascript应用程序.MongoDB函数是javascript函数.
我只是在这里猜测,但由于NoSQL数据库更新,并且有更多热情的程序员在尝试它,你可能更多地参与这些NPM模块.
除此之外,Node.js在技术上是任何类型的数据库应用程序的完美选择.我个人在一个小的Node.js/MySQL应用程序上工作,我没有遇到任何障碍.
但回到我的主要观点,我们可以整天谈论这个问题,而这不是本论坛的用途.如果您在使用Node.js和您选择的数据库的任何代码中遇到任何特定问题,请提出相关问题.
编辑:严格的技术原因,除了双方的JSON兼容性:没有.
| 归档时间: |
|
| 查看次数: |
23912 次 |
| 最近记录: |