nodejs mongodb connect/disconnect 模式
nodejs mongodb connect/disconnect pattern
我正在使用 sails.js 和 mongodb 作为我的后端。而且我听说为每个请求连接到数据库可能非常昂贵,这就是为什么其他非单线程编程语言为数据库保留一个连接池的原因吧?所以我想
- Nodejs 是否使用数据库连接池?(我想我已经有一个答案是否定的,只是为了确定)
- 由于我使用 sails-mongo 作为 mongodb 驱动程序,每次我对 [=23] 执行一些指令时,它是否会建立与 mongodb 的新连接=]分贝?或者它只是保持一个连接并每次都重复使用它?
- 假设 sails-mongo 每次都连接到 mongodb,然后在我完成后断开连接,如果无法建立连接怎么办?这会不会阻塞节点线程,从而无法处理所有后续请求?我很担心...
你的假设在 1. 时分崩离析,因为我知道的每个 nodejs 驱动程序(包括 sails 中的常见驱动程序)都实现了 node-native-driver which does of course initialize a connection pool(默认 5 个连接)。
至于第 2 点,连接实际上是在应用程序启动时建立的,模型定义使用底层 "Collection" 对象。
对于 3,除了通常 "de-bunked" 之外,nodejs 的整个概念通常是它在事件引擎上运行,所以实际上所有 "long running IO" 都在回调上工作,因此当这些 IO 调用 "take their time" 响应时,其他代码可能会执行。如果有的话,如果连接 "goes away" 出于任何原因,您会收到错误消息。
我通常会在 "How does nodejs work?" 上建议 "search",让您了解一些您似乎不太了解的概念。
所以不仅仅是 MongoDB 的情况,而且由于创建连接的固有成本,所有优秀的数据库驱动程序几乎总是实现连接池,异步环境特别是 "tooled" 所以他们不要"block"做外部IO之类的事情。
我正在使用 sails.js 和 mongodb 作为我的后端。而且我听说为每个请求连接到数据库可能非常昂贵,这就是为什么其他非单线程编程语言为数据库保留一个连接池的原因吧?所以我想
- Nodejs 是否使用数据库连接池?(我想我已经有一个答案是否定的,只是为了确定)
- 由于我使用 sails-mongo 作为 mongodb 驱动程序,每次我对 [=23] 执行一些指令时,它是否会建立与 mongodb 的新连接=]分贝?或者它只是保持一个连接并每次都重复使用它?
- 假设 sails-mongo 每次都连接到 mongodb,然后在我完成后断开连接,如果无法建立连接怎么办?这会不会阻塞节点线程,从而无法处理所有后续请求?我很担心...
你的假设在 1. 时分崩离析,因为我知道的每个 nodejs 驱动程序(包括 sails 中的常见驱动程序)都实现了 node-native-driver which does of course initialize a connection pool(默认 5 个连接)。
至于第 2 点,连接实际上是在应用程序启动时建立的,模型定义使用底层 "Collection" 对象。
对于 3,除了通常 "de-bunked" 之外,nodejs 的整个概念通常是它在事件引擎上运行,所以实际上所有 "long running IO" 都在回调上工作,因此当这些 IO 调用 "take their time" 响应时,其他代码可能会执行。如果有的话,如果连接 "goes away" 出于任何原因,您会收到错误消息。
我通常会在 "How does nodejs work?" 上建议 "search",让您了解一些您似乎不太了解的概念。
所以不仅仅是 MongoDB 的情况,而且由于创建连接的固有成本,所有优秀的数据库驱动程序几乎总是实现连接池,异步环境特别是 "tooled" 所以他们不要"block"做外部IO之类的事情。