본문 바로가기
목차훔치기/면접을 위한 CS 전공지식 노트

트랜잭션(면접을 위한 CS 전공지식 노트)

by 해삼2 2023. 10. 6.
728x90
반응형
트랜잭션

트랜잭션

트랜잭션(Transaction)은 데이터베이스 관리 시스템(DBMS)에서 사용되는 중요한 개념 중 하나로, 

데이터베이스에서 데이터를 읽거나 쓰는 작업의 단위를 나타냅니다. 

트랜잭션은 데이터베이스의 일관성, 무결성, 격리, 지속성을 보장하는데 사용됩니다. 

이러한 특성을 가리켜 ACID 속성이라고 부릅니다.

원자성 (Atomicity): 

트랜잭션은 작업의 모든 단계가 성공적으로 완료되거나 아무 것도 완료되지 않은 상태로 존재해야 합니다. 즉, 트랜잭션 내에서 어떤 하나의 단계라도 실패하면 모든 변경 사항이 롤백되어 이전 상태로 복원됩니다.

일관성 (Consistency): 

트랜잭션 이전과 이후에 데이터베이스는 일관된 상태를 유지해야 합니다. 

트랜잭션이 일관성을 깨뜨리면 트랜잭션은 롤백되어 데이터베이스는 이전 상태로 돌아가게 됩니다.

격리성 (Isolation): 

여러 트랜잭션이 동시에 실행될 때, 각 트랜잭션은 다른 트랜잭션의 작업에 영향을 받지 않아야 합니다.

즉, 각 트랜잭션은 독립적으로 실행되는 것처럼 보여야 합니다.

이는 다른 트랜잭션의 작업이 완료되기를 기다리는 대신 동시에 실행될 수 있음을 의미합니다.

지속성 (Durability): 

트랜잭션이 성공적으로 완료되면 그 결과는 영구적으로 저장되어야 합니다. 

시스템 장애 또는 전원 공급 장애가 발생하더라도 트랜잭션의 결과는 유지되어야 합니다.

트랜잭션은 주로 데이터베이스 시스템에서 사용되지만, 

파일 시스템 및 분산 시스템에서도 유사한 개념이 적용될 수 있습니다. 

트랜잭션은 데이터 정합성과 안정성을 유지하며, 

다중 사용자 환경에서 데이터 동시 접근을 관리하는 데 중요한 역할을 합니다.

 

트랜잭션 자세히 알기!!

해성이는 자신의 은행 계좌에서 친구 세영이에게 1,000,000원을 송금하려고 합니다. 

이 송금 과정을 트랜잭션으로 다음과 같이 나눌 수 있습니다.

출금 단계:
해성이의 계좌에서 1,000,000원을 인출합니다.
이 단계에서는 해성이의 계좌 잔액이 1,000,000원 감소하게 됩니다.


입금 단계:
세영이의 계좌에 1,000,000원을 입금합니다.
이 단계에서는 세영이의 계좌 잔액이 1,000,000원 증가하게 됩니다.
이 트랜잭션에서는 두 개의 작업 단계가 있습니다. 원자성의 개념에 따라,

이 두 단계는 모두 성공적으로 완료되거나 아무것도 완료되지 않은 상태로 유지되어야 합니다.

이제 몇 가지 시나리오를 생각해봅시다.


트랜잭션이 성공:

출금과 입금 모두 성공적으로 완료되었을 경우,

해성이의 돈은 세영이에게 이체되고 잔액은 정확하게 업데이트됩니다.

출금 단계 성공, 입금 단계 실패: 

출금은 성공적으로 이루어진 후, 입금 과정에서 문제가 발생하면 

해성이의 돈은 빠져나갔지만 세영이의 계좌로는 돈이 도착하지 않아야 합니다.

이러한 경우에는 트랜잭션은 롤백되어 해성이의 계좌로 다시 돈이 돌아와야 합니다.

출금 단계 실패: 

출금 과정에서 문제가 발생하면, 

해성이의 돈은 여전히 그의 계좌에 남아 있어야 하고, 세영이의 계좌는 변경되어서는 안됩니다.

입금 단계 실패: 

출금은 성공하였지만, 

입금 과정에서 문제가 발생하면 해성이의 돈은 빠져나갔지만 세영이의 계좌로 돈은 도착하지 않아야 합니다.

트랜잭션은 이러한 상황에서 데이터의 무결성과 안전성을 보장합니다. 

모든 단계가 성공하거나 실패하면 데이터는 일관성을 유지하고 문제 발생 시 

롤백되어 이전 상태로 복원됩니다.

 

한 마디로 요약하면 트랜잭션은 커밋(성공)을 하기 전까지는 롤백(실패)할 수 있도록 

이전의 데이터를 저장하고 보존하는 것이 맞습니다. 

트랜잭션이 완전히 성공적으로 완료되기 전까지 데이터베이스에 대한 변경 사항을 일시적으로 보류하고, 

트랜잭션의 모든 단계가 성공하면 변경 사항을 커밋하여 영구적으로 저장하게 됩니다. 

그러나 어떤 단계에서라도 문제가 발생하면 롤백하여 이전 상태로 돌려놓을 수 있습니다. 

이것이 데이터 무결성과 안전성을 보장하는 핵심 아이디어입니다.

 

 

*바쁜 사람을 위한 깜찍한 정리

트랜잭션이란 데이터베이스관리 시스템(DBMS)에서 사용되는 개념 중 하나로 데이터베이스에서 읽거나 쓰는 작업의 단위를 나타내고 일관성, 무결성, 격리, 지속성을 보장하는데 사용됩니다. 예를 들어 내가 상품을 구매하는 웹 사이트를 구측 했다면 물건 구매가 실패하면 그 실패한 지점 페이지로 복구 시키고 입력했던 해당 사용자 정보나 그런 정보들이 롤백되고 구매에 필요한 파일이나 데이터 들을 롤백 시켜줘서 사용자로 하여금 불편 하는 줄여줄때 많이 사용되게 설계해서 만드는 구조로 이해하면 좋을거 같습니다. 즉 커밋 되기 직전 까지 롤백 할 수 있다.
728x90
반응형