잡설

트랜잭션

J-Sundi 2023. 7. 9. 23:29

트랜잭션의 사전적 정의는 '쪼갤 수 없는 업무의 최소 단위'로 데이터베이스에서 쓰이는 용어이다.

예를 들어  A, B, C라는 세 사람이 1000원씩을 갖고 있는 통장이 있다라고 가정했을 때 A가 B에게 100원을 보내는 이벤트가 발생했다고 하자. A가 B에게 100원이라는 돈을 보낸다는 행위는 컴퓨터상에서는 A의 통장에서 1000원을 900원으로 바꾸고 B의 통장에서 1000원을 1100원으로 바꾸는 행위다. A가 B에게 100원을 보내는 이벤트가 컴퓨터가 처리하는 행위로 완벽히 끝나는 작업을 트랜잭션이라고 한다.

이것이 왜 중요하냐면 A가 B에게 100원을 보내는 이벤트에서 컴퓨터가 A의 통장에서 1000원을 900원으로 바꾸고 B의 통장에서 1000원을 1100원으로 바꿔야하는데 중간에 통신오류가 나서 B의 통장은 그대로 1000원으로 있는다면 100원이 증발하기 때문에 이러한 오류가 생길 경우 롤백이라는 과정을 통해 트랜잭션이 시작되기 전의 지점으로 돌려 무결성을 유지하는 것이다. 

또한 A가 B에게 100원을 보내는 동시에 C도 B에게 100원을 보낼 수 있다. 이러한 트랜잭션이 없다면 A와 C의 입장에서는 B는 1100원이 돼야하는데 1200원이 되는 오류가 발생할 수 있다. A와 C의 입장에서만 그렇게 보일뿐 실질적으로는 B가 1200원이 됐기 때문에 문제가 없다고 생각 할 수도 있지만 반대로 A와 C가 각자 1000원을 B로부터 가져온다고 했을 때(예를 들면 자동이체) B가 1000원을 가지고 있음을 알고 동시에 1000원씩을 가져와서 A와 B는 가각 2000원이 됐는데 B는 1000원 밖에 없었기때문에 0원이 될 것이므로 오류가 발생한다. 그래서 이런 것을 막고자 트랜잭션이라는 업무단위를 두어 하나의 트랜잭션이 끝날때가지 다른 업무는 대기를 시킨다.

사실 오프라인에서도 반드시 지켜줘야하는 일이고 발생할 수 있는 일이지만 동시에라는 말을 쓸만큼 자주 발생하지는 않는다. 하지만 IT의 경우 예를 들면 주식, 티켓팅, 계좌이체 등에서 속도가 너무 빨라 오류나 충돌이 자주 발생할 수 있기에 매우 중요한 요소가 된다.

'잡설' 카테고리의 다른 글

드디어 찾았다!  (0) 2023.12.08
인생은 선택의 연속지  (0) 2023.07.07
운동과 노동이 차이점  (0) 2023.07.04
비행기를 처음 탄 날  (0) 2023.06.28
과학을 탑다운 방식으로 가르친다면...  (0) 2023.06.22