Hmm, there are two things that feels funny here. 1) Each user has its own Database with a list of schemes 2) Spamming API requests would open up a massive amount of connection.
What do you think postgres says about millions of databases? Normally you share your users in a single database and selects the correct "view" using a "where" clause. I think you should log in to your database once and use connection pooling. Put a HAProxy infront of your outward facing servers and limit the number of simultaneous connections per ip. /svante 2014-11-25 6:38 GMT+01:00 Alex Spencer <[email protected]>: > Thanks for the replies. The reason I built it this way was beacuse of > these reasons: > > - Each user has its own Database with a list of schemes. (IE new > connection every time, can't reuse a mass pool on a specific database) > - Spamming API requests would open up a massive amount of connections, > that are never killed off, resulting in the postgres instance to eventually > be smocked full. > > This is why I thought opening and closing was good. How would you > recommend handling the above issues? > > Den tisdagen den 25:e november 2014 kl. 01:36:44 UTC+1 skrev Alex Kocharin: >> >> >> Opening and closing database connection per request is a very bad >> idea. Database connection should be opened permanently and re-used across >> many different requests, this way you save milliseconds establishing it. >> >> knex allows connection pooling. Use it. >> >> >> 25.11.2014, 01:09, "Alex Spencer" <[email protected]>: >> >> Hey. >> >> Need some advice on an api application built using: >> - express >> - knexjs >> - postgres >> >> My question is if im handling database operations correctly or if im >> doing it completely wrong.. See example >> >> var knex = require('knex'); >> app.get('/example/:param', >> loadWithParam(), >> updateWithParam(), >> render.staticOK() >> >> function loadWithParam() { >> return function(req, res, next) { >> var db = knex({conConfig}); >> db(tableName).where(field, req.params.param).select().then(function(rows) >> { >> db.destroy(function() { >> res.locals[tableName] = rows; >> next(); >> }); >> }).catch(function(err) { >> ... >> }); >> }; >> } >> >> function updateWithParam() { >> return function(req, res, next) { >> if(res.locals[tableName].length === 0) { >> return next(); >> } >> var db = knex({conConfig}); >> db(tableName).where(field, req.params.param).update({field: value}).then( >> function() { >> db.destroy(function() { >> next(); >> }); >> }).catch(function(err) { >> ... >> }); >> }; >> } >> >> >> In short my question is if its good or bad practise opening up and >> closing database connections per operation required to run? Ive been told >> setting up a database connection on res.locals upon receiving a request is >> better, but i disagree.. >> >> Thanks >> >> >> -- >> Job board: http://jobs.nodejs.org/ >> New group rules: https://gist.github.com/othiym23/9886289#file- >> moderation-policy-md >> Old group rules: https://github.com/joyent/node/wiki/Mailing-List- >> Posting-Guidelines >> --- >> You received this message because you are subscribed to the Google Groups >> "nodejs" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> To view this discussion on the web visit https://groups.google.com/d/ >> msgid/nodejs/408d3fd6-dd6c-4621-9030-99ff2e3fe7d6%40googlegroups.com >> <https://groups.google.com/d/msgid/nodejs/408d3fd6-dd6c-4621-9030-99ff2e3fe7d6%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> >> -- > Job board: http://jobs.nodejs.org/ > New group rules: > https://gist.github.com/othiym23/9886289#file-moderation-policy-md > Old group rules: > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines > --- > You received this message because you are subscribed to the Google Groups > "nodejs" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/nodejs/bb064078-9578-4082-b74a-284bac1092f5%40googlegroups.com > <https://groups.google.com/d/msgid/nodejs/bb064078-9578-4082-b74a-284bac1092f5%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- Job board: http://jobs.nodejs.org/ New group rules: https://gist.github.com/othiym23/9886289#file-moderation-policy-md Old group rules: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/nodejs/CAHkETj8nVfmi584HsFMmYwzM4jDVnmcDDMwBz7oZkEELaJ9K6g%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
