일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 로그인기능 #
- jquery
- 향상된 for문
- soild
- 분산형 아키택처
- 토글기능
- 의존성주입
- 타입오류
- 클래스추가
- 마이크로서비스아키택처
- 회원가입기능
- 4-Way Handshake
- AttributeError
- 비절차형 언어
- Arrays.sort()
- 프로그래머스
- 객체지향 5대 특징
- 객체지향
- 3-Way Handshake
- MSA
- 배열오름차순정렬
- oop 4대 특성
- flask
- 빅오표기법
- 함수지향
- 의존역적원칙
- nat inside
- 멀티프로세스
- CORS
- 클래스삭제
- Today
- Total
개발하는 체대생
트랜잭션(Transaction) 본문
질문 : 트랜잭션이 무엇인지 설명해 주세요.
답변 : 트랜잭션(Transaction)은 데이터베이스에서 데이터의 무결성과 일관성을 보장하기 위한 작업 단위를 의미합니다. 트랜잭션은 일련의 작업을 하나의 논리적인 작업 단위로 묶어서 처리하는 것으로, 여러 개의 쿼리나 데이터 변경 작업이 하나의 단위로 묶여 원자성을 갖습니다.
1. 트랜잭션이란?
트랜잭션은 데이터베이스에서 하나의 논리적인 작업 단위를 의미합니다. 이 작업 단위는 데이터베이스에서 안전하게 수행되어야 하며, 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)을 보장해야 합니다. 이러한 속성을 ACID(Atomicity, Consistency, Isolation, Durability)라고 합니다.
2. 트랜잭션의 속성
2.1 원자성(Atomicity)
트랜잭션은 하나의 논리적인 작업 단위이므로, 그 작업이 모두 수행되거나 모두 수행되지 않아야 합니다. 즉, 트랜잭션이 수행 중에 어떤 문제가 발생하면, 해당 작업은 모두 취소되어야 합니다. 이를 원자성이라고 합니다.
2.2 일관성(Consistency)
트랜잭션은 데이터베이스에서 일관성 있는 상태를 유지해야 합니다. 예를 들어, 어떤 트랜잭션이 계좌에서 100원을 출금하는 작업을 수행하면, 계좌 잔액은 100원 감소해야 합니다. 이렇게 트랜잭션을 수행한 후에도 데이터베이스의 일관성이 유지되어야 합니다.
2.3 격리성(Isolation)
트랜잭션은 동시에 여러 개가 수행될 수 있습니다. 이러한 경우에는 서로 다른 트랜잭션이 데이터에 접근하는 것이 서로에게 영향을 미치지 않아야 합니다. 이를 격리성이라고 합니다. 격리성을 보장하지 않으면, 동시성 제어 문제가 발생할 수 있습니다.
2.4 지속성(Durability)
트랜잭션이 성공적으로 수행되면, 그 결과는 영구적으로 유지되어야 합니다. 데이터베이스가 다운되거나 시스템이 재부팅되더라도, 해당 작업의 결과는 유지되어야 합니다.
3. 트랜잭션의 처리 방법
트랜잭션의 처리 방법에는 두 가지가 있습니다. 첫째는 Commit 방식이고, 둘째는 Rollback 방식입니다.
3.1 Commit 방식
Commit 방식은 트랜잭션을 수행한 후, 해당 작업이 영구적으로 유지될 것임을 보장합니다. 즉, 트랜잭션이 성공적으로 수행되면, 그 결과가 데이터베이스에 반영되며, 이후에 어떠한 문제가 발생하더라도 해당 작업의 결과는 유지됩니다. 이러한 방식은 대부분의 데이터베이스에서 기본적으로 사용됩니다.
3.2 Rollback 방식
Rollback 방식은 트랜잭션을 수행한 후, 해당 작업이 롤백될 수 있음을 보장합니다. 즉, 트랜잭션이 성공적으로 수행되더라도, 이후에 어떠한 문제가 발생하면 해당 작업이 취소되어야 합니다. Rollback 방식은 대부분의 데이터베이스에서 제공되지만, Commit 방식에 비해 덜 사용됩니다.
결론
트랜잭션의 가장 중요한 개념은 'All or Nothing'이라는 개념으로 데이터베이스에서 하나의 논리적인 작업 단위를 의미합니다
예를 들자면, 은행에서 고객이 계좌에서 돈을 인출하는 작업을 수행할 때, 이 작업은 하나의 트랜잭션으로 처리되고, 이 작업이 수행되는 동안에는 다른 고객이 동일한 계좌에 접근할 수 없어야 하며, 인출 작업이 완료되면 계좌 잔액이 정확히 갱신되어야 합니다. 또한, 인출 작업이 실패하면 해당 작업은 취소되어야 하며, 성공적으로 수행된 작업은 영구적으로 유지되어야 합니다.
'취업스터디' 카테고리의 다른 글
Stack, Queue, Array, Linked List (0) | 2023.04.04 |
---|---|
웹 서버(Web Server)와 WAS(Web Application Server) (0) | 2023.04.03 |
멀티쓰레드(Multi-thread)와 멀티프로세스(Multi-process) (0) | 2023.04.01 |
TCP와 UDP (3-way handshake, 4-way handshake) (0) | 2023.03.31 |
프로세스와 스레드 (0) | 2023.03.31 |