是的,pool.connect()
每次调用它都会创建一个与池的新连接,因此您通常只需在应用程序启动时调用它一次,并将该连接传递给需要它的任何模块或方法。
我通常使用一个模块来做到这一点
module.exports = function(app, cb) {
var domain = require('domain'),
d = domain.create(),
helenus = require('helenus'),
d.run(function() {
var pool = new helenus.ConnectionPool({
hosts : ['localhost:9160'],
user : "",
password : "",
keyspace : 'something',
cqlVersion : '3.0.0'
});
pool.connect(function(err, keyspace){
if(err){
cb(err, null);
} else {
cb(null, pool);
}
});
pool.on('error', function(err) {
cb(err, null);
});
});
d.on('error', function(err) {
console.log('error', err.stack);
cb(err, null);
});
}
并用类似这样的方式将其称为我的应用程序(非常简化)
var express = require('express');
var app = this.express();
var database = require('db');
database(app, function(err, conn) {
if (err==null) {
// connected, do stuff
conn.cql("SELECT * FROM table WHERE KEY = ?", [what], function(err, result) {
if (err==null) {
// get result
}
});
}
});
我已经将它用于数百万条记录、连续插入和大量查找,没有任何问题,Cassandra 对我来说比我尝试过的任何其他数据库都好。