Su nodejs con node-mysql, dovrei creare una connessione per il servizio in questo modo:
var client = mysql.createClient({
user: 'user',
password: 'pass'
}); // Create a new mysql Client
io.sockets.on("connection", function (user)) // when a user enters
{
result = client.query('check user'); //check for user on DB
if (result) {
user.on('do stuff', function (data) // set to do something on ask
{
client.query('some stuff'); //run the mysql client to work
});
} else {
user.disconnect();
}
});
}
o o per ciascun utente in questo modo:
io.sockets.on("connection", function (user)) // when a user enters
{
var client = mysql.createClient({
user: 'user',
password: 'pass'
}); // Create a new mysql Client when the users enters
result = client.query('check user'); //check for user on DB
if (result) {
user.on('do stuff', function (data) // set to do something on ask
{
client.query('some stuff'); //run the mysql client to work
});
user.on('disconnect', function (data) {
client.close();
});
} else {
user.disconnect();
client.close();
}
}
Quello che sto chiedendo è:
- è il primo più veloce perché la connessione è sempre aperta e attiva il secondo che deve creare ogni volta che un utente si connette?
- è il primo più lento perché se molti utenti chiedono le query ne fa solo uno alla volta, e nel secondo ognuno ha il suo proprio cliente e può effettuare più connessioni contemporaneamente?
- è il secondo più pesante per il nodo server e per il mysql perché ha bisogno di avere 1 client per ogni utente?
- è il primo più pesante perché non chiude mai la connessione mysql e dopo alcune query potrebbero esserci delle perdite di memoria?
- o dovrei creare e chiudere una connessione mysql per ogni query?
PS: l'applicazione connessa al server nodo avrà un numero elevato di utenti, connessi per un lungo periodo di tempo, ma avrà un numero molto basso di query, ma gli utenti probabilmente chiederanno le query all'incirca allo stesso tempo.