트랜잭션
논리적인 작업 단위트랜잭션은 수행중에 한 작업이라도 실패하면 전부 실패하고, 모든 작업이 성공해야 성공합니다.
트랜잭션(Transaction)은 데이터베이스나 메시지 큐와 같은 시스템에서 여러 단계의 작업을 논리적으로 묶은 단위를 의미합니다. 트랜잭션은 데이터의 일관성과 무결성을 보장하기 위해 사용됩니다. 주로 ACID(원자성, 일관성, 고립성, 지속성) 속성을 준수합니다.
- 원자성(Atomicity):
- 트랜잭션의 모든 작업은 전부 수행되거나 아무것도 수행되지 않아야 합니다. 즉, 모든 작업이 성공하면 트랜잭션을 완료하고, 한 가지 작업이라도 실패하면 트랜잭션을 롤백해야 합니다.
- 일관성(Consistency):
- 트랜잭션이 수행되기 전과 후에 데이터베이스는 일관된 상태여야 합니다. 즉, 트랜잭션이 수행되는 동안에만 일시적으로 일관성이 깨질 수 있지만, 트랜잭션이 완료되면 다시 일관된 상태로 돌아와야 합니다.
- 고립성(Isolation):
- 여러 트랜잭션이 동시에 실행될 때, 각 트랜잭션은 다른 트랜잭션에 영향을 미치지 않아야 합니다. 즉, 각 트랜잭션은 격리된 환경에서 실행되어야 합니다.
- 지속성(Durability):
- 트랜잭션이 완료되면 그 결과는 영구적으로 저장되어야 합니다. 시스템 장애가 발생하더라도 데이터의 변경은 보존되어야 합니다.
트랜잭션의 종류
- 명시적 트랜잭션(Explicit Transaction):
- 개발자가 트랜잭션의 시작과 종료를 명시적으로 정의하는 방식입니다. 보통 JDBC나 JPA와 같은 데이터베이스 액세스 기술에서 사용됩니다.
- 암시적 트랜잭션(Implicit Transaction):
- 일반적으로 Spring과 같은 프레임워크에서 제공하는 방식으로, 트랜잭션의 시작과 종료를 프레임워크가 자동으로 처리합니다.
트랜잭션 관리
- 로컬 트랜잭션(Local Transaction):
- 하나의 데이터베이스 연결에 대한 트랜잭션을 의미하며, 일반적으로 JDBC에서 사용됩니다.
- 분산 트랜잭션(Distributed Transaction):
- 여러 데이터베이스나 서비스 간의 트랜잭션을 관리하는 것을 의미합니다. 보통 JTA(Java Transaction API)와 같은 분산 트랜잭션 관리자를 사용하여 처리됩니다.
트랜잭션은 데이터베이스에서만 사용되는 것이 아니라, 메시지 큐, 파일 시스템 등 다양한 시스템에서도 적용될 수 있습니다. 데이터의 일관성과 무결성을 유지하기 위해 트랜잭션을 적절하게 관리하는 것이 중요합니다.
트랜잭션의 주요 속성:
트랜잭션은 데이터베이스의 상태를 변화시키는 하나의 논리적인 작업 단위를 의미하며, 트랜잭션에는 여러개의 연산이 수행될 수 있습니다.
'개발 > 개발지식' 카테고리의 다른 글
[Spring] Port 8080 is already in use 에러 해결 방법 (0) | 2024.06.06 |
---|---|
도메인 네임(Domain Name) (0) | 2024.06.06 |
디버깅/logger (0) | 2024.02.26 |
[네트워크] 로드 밸런싱(Load balancing) (0) | 2023.05.11 |
암호화 알고리즘 (0) | 2023.04.25 |