express 및 node-mysql 드라이버를 사용하여 node.js에 응용 프로그램을 빌드하고 있습니다. 일련의 데이터베이스 삽입/업데이트를해야 할 때 몇 가지 경우가 있습니다. 두 번째 또는 세 번째 트랜잭션이 실패하면 이전의 트랜잭션이 완전히 롤백되도록 트랜잭션에서 처리하기를 원합니다.Node.js + MySQL - 트랜잭션 처리
현재 내가 수행하는 방식은 요청이 도착하면 START TRANSACTION
을 수행하는 일종의 미들웨어를 갖는 것입니다. 요청을 처리하는 과정에서 오류가 발생하면이 오류를 catch하고 ROLLBACK
을 수행합니다. 오류가 발생하지 않으면 브라우저에 응답을 보내기 전에 COMMIT
을 수행합니다.
그러나 다른 사용자가 START TRANSACTION
으로 자신의 트랜잭션을 시작하려고하면 MySQL이 강제 커밋을 수행하므로 여러 사용자가 동시에 응용 프로그램에 액세스 할 때이 기능이 작동하지 않을까 우려됩니다. 나는 현재 노드의 단일 인스턴스와 모든 요청에 대해 단일 MySQL 연결 만 사용하고 있습니다.
내 관심사가 유효한 경우 누군가가 조언을 해주고 거래 지원은 어떻게 받아 들여야합니까?
옵션이있는 경우 노드와 함께 사용하기 쉽기 때문에 couch/redis/mongo를 대신 사용하는 것이 좋습니다. 이미 MYSQL 데이터베이스를 가지고 있다면 계속 사용하십시오. – Raynos
@Raynos AFAIK MongoDb는 트랜잭션을 지원하지 않습니다 ... – renatoargh