더북(TheBook)

02 | 트랜잭션

트랜잭션transaction 은 ‘거래’라는 뜻으로,우리가 은행에서 입금과 출금을 하는 그 거래를 말한다. 일반적인 프로그래밍 언어나 오라클에서 말하는 트랜잭션도 이 개념에서 차용한 것이다. 예컨대 A란 은행에서 출금을 하여 B란 은행으로 송금을 한다고 해보자. 그런데 송금하는 중에 알 수 없는 오류가 발생하여 A은행 계좌에서는 돈이 빠져 나갔는데 B은행 계좌에 입금되지 않았다면, 금액 손실은 물론이고 신용거래의 대표주자인 은행에 대한 불신이 팽배해져 큰 혼란이 생긴다. 그렇다면 이 문제를 어떻게 처리하면 좋을까?

한 가지 방법은 이런 오류사항을 파악해서 A은행 계좌의 출금을 취소하거나, 출금된 금액만큼 B은행 계좌로 다시 송금하고 이 오류가 다시 발생하지 않도록 조치하면 된다. 하지만 이는 현실성이 없는 해결책이다. 어떤 오류가 발생할 지 모든 경우의 수를 다 파악해 대처할 수도 없고 출금된 금액을 잘못 계산해서 B은행에 더 많거나 적은 금액을 송금할 여지도 많다. 그래서 생각해 낸 해결책이, 거래가 성공적으로 모두 끝난 후에야 이를 완전한 거래로 승인하고, 거래 도중 뭔가 오류가 발생했을 때는 이 거래를 아예 처음부터 없었던 거래로 되돌리는 것이다. 이렇게 하면 거래 도중에 발생한 오류에 대해 즉시 처리하지 못할지언정 최소한 금액손실은 발생하지 않는다. 거래당사자 입장에서도 좀 귀찮기는 하지만 금액 손실이 발생하느니 다시 거래하는 것이 낫다. 이렇게 거래의 안전성을 확보하는 방법이 바로 트랜잭션이다. 데이터베이스에서도 마찬가지다. 특정 테이블에서 데이터를 읽어 조작 후 다른 테이블에 데이터를 입력하거나 갱신, 삭제하는데 처리 도중 오류가 발생하면 모든 작업을 원상태로 되돌리고, 처리 과정이 모두 성공했을 때만 최종적으로 데이터베이스에 반영하는 것이 바로 트랜잭션 처리다. 그럼 어떻게 트랜잭션 처리를 하는지 지금부터 알아 보자.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.