2014-09-06 90 views
0

当我使用Grex连接到Rexster图形服务器时,是否应该保持数据库连接打开?我应该保持数据库连接打开吗?

var grex = require('grex'); 
var client = grex.createClient(); 

client.connect({ graph: 'graph'}, function(err, client) { 
    if (err) { console.error(err); } 

    ... 
}); 

我想应该是因为是的NodeJS单线程的,所以没有尝试使用在同一时间的一个连接请求不同的机会。

+0

对于普通代码,JavaScript是单线程的。对于异步代码(回调或事件),JS是多线程的。 – 2014-09-06 17:40:35

+0

我认为它是一个在不同代码块之间切换的单线程。所以如果你有一些等待回调的代码,那么Javascript将在其他地方停止,然后在完成等待某件事情并完成其它正在运行的任何其他事件时返回回调。但它从来不会同时运行多个代码。 – 2014-09-06 17:43:45

回答

1

是的,你应该。没有理由在每个请求上都有连接的开销。不会有任何问题发生,因为你的代码无论如何都将在单线程中运行。

此外,你甚至可以有一个连接池等待服务于你的请求,如果你有一个沉重的使用应用程序。一些适配器会自动为您执行此操作,例如,MongoClient具有5个连接的默认池。

+1

不错的用户名。 – 2014-09-06 17:52:07

+0

@IanWarburton谢谢:) – rollingBalls 2014-09-06 17:52:44

+0

关于秒的想法,是不是只有单线程的http请求位?像数据库访问这样的异步操作会被切换到线程,所以您可以同时运行多个查询。 – 2014-11-29 18:01:42

相关问题