더북(TheBook)

7.9.1 트랜잭션

이번에는 트랜잭션을 알아봅시다. 우리가 일상에서 이야기하는 트랜잭션, 즉 거래는 무엇일까요? 기브 앤 테이크죠. 이쪽에서 저쪽에 무언가를 주면, 저쪽에서는 이쪽에 상응하는 것을 주어야 합니다. 주고받는 것 중 한쪽이 없으면 야단나겠죠.

이는 데이터베이스에서도 마찬가지입니다. 데이터베이스는 게임뿐만 아니라 많은 분야에서 사용하는 소프트웨어입니다. 물론 은행도 포함됩니다.

계좌 이체 과정을 프로그램으로 만든다고 가정합시다. Hong Gil Dong이 Kang Bu Ja에게 100원을 계좌 이체하려면 다음 처리를 해야 합니다.

update UserAccount set Money=Money+100 where ID='Kang Bu Ja'
update UserAccount set Money=Money-100 where ID='Hong Gil Dong'

프로그래머 실수 또는 시스템 결함으로 이 구문 중 하나만 실행된다면 어떤 일이 발생할까요? 끔찍하겠죠. 이 예시는 단순하기에 실수를 일으킬 만한 것이 별로 없어 보이지만, 프로그램이 오랫동안 유지 보수되고 시스템이 복잡해지면 이러한 일이 발생할 가능성이 높아집니다.

그래서 데이터베이스에는 멋진 방어 장치가 있습니다. 이 구문이 모두 실행되든지 하나도 실행되지 않든지 둘 중 하나의 결과만 보장되게 합니다.

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