Yeah charlie i think your best bet is to use node-pool (https://github.com/coopernurse/node-pool) to make a set of persistent connections, to avoid the creation overhead. You could then use a separate connection not in the pool for your non-transaction requests.
Ted On Dec 20, 2012, at 12:09 AM, Jake Verbaten <[email protected]> wrote: > its not hard to write a wrapper around the mysql library to allow a > transaction queue where if a second transaction is started it gets > transparently queued until the first ends. > > Of course that will suck performance wise but transactions already suck > performance wise, if you want that use atomic operations or batch operations. > > > On Wed, Dec 19, 2012 at 9:50 PM, Charlie Circle <[email protected]> wrote: > Yeah, I'm talking about mysql. Here is my point: > a) Current library only provide connection per process choice, not suitable > for transaction. If you choose one connection per request for each request, > it's wasteful. > My first thought is only create a connection when there is a transaction, but > there is no module support now, maybe I should write one myself. > > b) Batch processing is suitable for simple business logic, if your logic is > combined with a lot of DAO in Service layer, you messed up. Or maybe I should > write in stored procedure, but I don't like it either. > > On Thursday, December 20, 2012 12:26:13 PM UTC+8, tedsuo wrote: > Mark I'm guessing he's talking about mysql, not couch. It's true that you > can't run multiple simultaneous transactions over one mysql connection. But > that's a mysql connection in any language, not just node (unless I'm missed > something). Not a node-mysql expert, but your choices are: > > a) create a connection per request > b) create a connection pool, for example with node-pool, and acquire and > release a connection on each request > > > Ted > > On Dec 19, 2012, at 7:44 PM, Mark Hahn <[email protected]> wrote: > >>> I wonder why there is no one care about it. >> >> I will assume you aren't a troll. I would think that almost all couch >> users know about ACID and use Couch understanding the trade-offs. >> CouchDB has distributed features that would not be possible with >> transactions. If transactions are necessary for your application then >> choose a DB with transactions. >> >> On Wed, Dec 19, 2012 at 7:37 PM, Jake Verbaten <[email protected]> wrote: >>> Transactions are trivial when supported by your database engine. >>> >>> Like [levelup's .batch()][1] >>> >>> var ops = [ >>> { type: 'del', key: 'father' } >>> , { type: 'put', key: 'name', value: 'Yuri Irsenovich Kim' } >>> , { type: 'put', key: 'dob', value: '16 February 1941' } >>> , { type: 'put', key: 'spouse', value: 'Kim Young-sook' } >>> , { type: 'put', key: 'occupation', value: 'Clown' } >>> ] >>> >>> db.batch(ops, function (err) { >>> if (err) return console.log('Ooops!', err) >>> console.log('Great success dear leader!') >>> }) >>> >>> If your database driver doesn't give you a sensible clean api then just >>> write one. >>> >>> If your database doesn't support transactions then your screwed. >>> >>> [1]: https://github.com/rvagg/node-levelup#batch >>> >>> >>> On Wed, Dec 19, 2012 at 7:01 PM, Charlie Circle <[email protected]> wrote: >>>> >>>> For serious web applications, transaction is crucial. >>>> >>>> But node's asynchronous nature do not obey transaction rule, I wonder why >>>> there is no one care about it. >>>> >>>> In synchronous applications, you start your transaction, and do database >>>> operation step by step, when done, just commit it. >>>> >>>> While in node, you must start transaction a place, and commit it in a >>>> callback chain in a deep level. >>>> >>>> But it's not the worst thing, because node share a single connection in a >>>> process, we can not sure which operation is in what transaction, so all >>>> messed must. >>>> >>>> I've seen a solution in npm, which let you execute database operation in >>>> sequence, let us go back to synchronous age, not so scalable, right? >>>> >>>> Is there any new idea? >>>> >>>> -- >>>> Job Board: http://jobs.nodejs.org/ >>>> Posting guidelines: >>>> 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 post to this group, send email to [email protected] >>>> >>>> To unsubscribe from this group, send email to >>>> [email protected] >>>> >>>> For more options, visit this group at >>>> http://groups.google.com/group/nodejs?hl=en?hl=en >>> >>> >>> -- >>> Job Board: http://jobs.nodejs.org/ >>> Posting guidelines: >>> 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 post to this group, send email to [email protected] >>> >>> To unsubscribe from this group, send email to >>> [email protected] >>> >>> For more options, visit this group at >>> http://groups.google.com/group/nodejs?hl=en?hl=en >> >> -- >> Job Board: http://jobs.nodejs.org/ >> Posting guidelines: >> 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 post to this group, send email to [email protected] >> >> To unsubscribe from this group, send email to >> [email protected] >> >> For more options, visit this group at >> http://groups.google.com/group/nodejs?hl=en?hl=en > > > -- > Job Board: http://jobs.nodejs.org/ > Posting guidelines: > 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 post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/nodejs?hl=en?hl=en > > > -- > Job Board: http://jobs.nodejs.org/ > Posting guidelines: > 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 post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/nodejs?hl=en?hl=en -- Job Board: http://jobs.nodejs.org/ Posting guidelines: 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 post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en
