트랜잭션이란?
데이터 베이스의 정합성(데이터가 서로 모순이 없이 일관되게 일치해야 함)을 관리하기 위해 최소 작업 단위로 정한 것이 바로 트랜잭션입니다. 원자성, 일관성, 독립성, 영속성의 특징을 가지고 있습니다. 개념과 특징을 설명할 때 어떻게 하면 더 기억에 남고, 받아들이기 쉬울 지 고민해보았습니다. 일상에 녹아들어 있어 누구나 친숙하게 다가갈 수 있는 것을 비유해서 설명해보려고 합니다. 여러분께서 이해하기 쉽도록 일상 속의 머리 감기를 예로 들어보겠습니다.
트랜잭션과 머리 감기
[머리감기]
1. 머리카락을 물로 충분히 적신다.
2. 샴푸를 손에 짠다.
3. 샴푸가 묻은 손으로 머리카락과 두피를 거품 내며 마사지한다.
4. 샴푸를 물로 충분히 헹구어 낸다.
머리 감은 횟수를 DB에 기록한다고 가정해 봅시다. 그러면 머리 감기는 트랜잭션이 되어야 합니다. 왜 그럴까요?
머리 감는 작업을 시작했으면 중간에 그만 두기는 힘듭니다. 시작해서 끝까지 완료하거나, 끝까지 하지 못 할 거라면 아예 시작하지 않아야 하죠.
중간에 그만 두려면 상당히 곤란하니까요. 예를 들어 우리가 머리 감기의 3번 작업을 수행 후 4번 작업을 시작했는데 물이 나오지 않는(!!!! 😫) 끔찍한 문제가 발생할 가능성이 있습니다.
그 때 우리는 1번을 시작하기 전으로 돌아갈 수 있어야 합니다.
머리 감기를 시작하기 직전으로 말이죠. 그리고 머리 감은 횟수는 변하지 않아야 합니다.
트랜잭션의 특징
앞에서 말한 머리 감기 예시처럼 여러 작업을 한 묶음으로 모두 수행하거나, 아예 수행하지 않는 특징을 원자성(Atomicity)이라고 합니다.
머리를 한 번 감으면 머리 감은 횟수는 언제나 1 증가합니다. 다른 결과가 나오는 일은 없습니다. 트랜잭션의 이런 특징을 일관성(Consistency)이라고 합니다.
머리 감는 도중에 다른 일이 끼어들지 못해야 합니다. 손에 샴푸가 있는데 로션을 바르는 작업이 끼어들면 안 되니까요.. 트랜잭션의 이런 특징을 독립성(Isolation)이라고 합니다.
머리를 감고 나면 머리를 감은 횟수가 1 증가하고, 일주일이 지나도 그 때 저장됐던 데이터는 유효합니다. 트랜잭션의 이런 특징을 영속성(Durability)이라고 합니다.
요약
영단어 앞 글자를 따서 ACID 라고 기억하곤 합니다. 생각이 잘 안나면 머리 감기 예시를 떠올려보세요. 😁
원자성(Atomicity)
- 도중에 그만둘 수 없음
일관성(Consistency)
- 언제나 머리를 감으면 머리 감은 횟수+1
독립성(Isolation)
- 도중에 다른 일을 할 수 없음
영속성(Durability)
- 머리 감은 횟수가 +1 되었던 것은 일주일 뒤에도 유효함
마무리
저는 ‘공부 하기’ 작업이 트랜잭션이 되면 좋겠습니다. 원자성 덕분에 한 번 시작하면 끝을 보게 되고, 일관성 덕분에 공부를 하고 나면 늘 뿌듯하고, 독립성 덕분에 다른 일이 도중에 끼어들지 못하게 하고, 영속성 덕분에 공부한 내용은 자고 일어나도 저장되어 있을 테니까요. 아.. 하지만 공부하는 도중에 문제가 발생하면 공부를 시작하기 전으로 돌아가 버릴 수도 있겠군요.. 🤣 뭐든지 원하는 목표를 달성하기 위해 특징을 잘 파악해서 활용할 줄 아는 것이 중요한 것 같습니다.
여러분들께서 이해하기 쉬우셨는지 궁금하네요. 이런 식의 설명이 마음에 드셨다면 댓글을 남겨주세요!! 🙌
너무 쉽게 이해 됐어요! 감사합니다
감사합니다. 도움이 되었다니 기분이 좋네요 ㅎㅎ