요새 회사에서 머리가 터지는 (?) 문제가 하나 (사실은 여러 개 일지도 ) 있습니다.
그건 바로, 할 때마다 새로우면서도 전체적인 플로우를 정확히 이해해야 적용할 수 있는 트랜잭션 !
제대로 이해하기 위해 먼저 기본 지식을 한번 더 체크하기 위해 정리해 보려고 한다.
트랜잭션(Transaction) 이란?
트랜잭션(Transaction)은 데이터베이스 관리에서 하나의 작업 단위를 의미한다.
트랜잭션은 데이터베이스의 일관성을 유지하기 위해 필요한 조치들을 묶어서 관리하는데,
이를 정리하면 "모든 작업이 성공적으로 수행되거나, 전부 수행되지 않음"을 보장하는 것이 포인트 !
트랜잭션의 특징 - ACID 속성
트랜잭션은 ACID라는 네 가지 중요한 특성을 통해 데이터베이스의 안정성과 일관성을 유지한다.
- 원자성 (Atomicity)
- 일관성 (Consistency)
- 독립성 (Isolation)
- 지속성 (Durability)
원자성(Atomicity)
- 원자성은 트랜잭션이 모두 완료되거나 전혀 수행되지 않는 특성을 의미한다.
- 원자성은 트랜잭션 내의 모든 작업이 성공해야만 결과가 데이터베이스에 반영되며, 하나라도 실패할 경우 전체 트랜잭션이 취소되어 이전 상태로 되돌아간다.
- 이로 인해 데이터의 무결성이 보장된다.
일관성(Consistency)
- 일관성은 트랜잭션이 완료된 후에도 데이터베이스가 일관된 상태를 유지하는 것을 보장한다.
- 즉, 트랜잭션 전후의 데이터 상태가 항상 정의된 규칙을 따르도록 보장하는 것이다.
- 예를 들어, 특정 규칙을 따라야 하는 데이터 제약 조건이나 참조 무결성 등이 트랜잭션이 끝난 후에도 유지된다.
독립성(Isolation)
- 고립성은 여러 트랜잭션이 동시에 실행될 때 서로 영향을 받지 않고 독립적으로 실행될 수 있도록 보장하는 특성이다.
- 예를 들어, 하나의 트랜잭션이 아직 완료되지 않은 상태에서 다른 트랜잭션이 해당 데이터를 참조하게 되면 데이터의 일관성이 깨질 수 있다. 따라서 독립성을 통해 트랜잭션 간의 상호 간섭을 방지합니다.
지속성(Durability)
- 내구성은 트랜잭션이 성공적으로 완료된 후에는 데이터베이스에 영구적으로 반영되는 특성이다.
- 시스템 장애나 오류가 발생하더라도완료된 트랜잭션의 결과는 손실되지 않고 유지됩니다.
- 데이터베이스 관리 시스템은 이러한 내구성을 보장하기 위해 로그 기록 등을 사용하여 데이터를 보호한다.
트랜잭션은 데이터베이스의 신뢰성을 높이는 중요한 개념으로, ACID 특성을 통해 데이터의 일관성을 유지하고,
여러 작업이 동시에 수행될 때 데이터 무결성을 보장한다.
그렇다면 다음 포스팅에서는 Java의 @Transactional 어노테이션을 사용한 트랜잭션 관리 방법에 대해 다뤄보도록 하겠다.
두구두구 ...
'Spring > Spring' 카테고리의 다른 글
세션 기반 인증과 토큰 기반 인증의 차이, 왜 다를까? (0) | 2024.12.02 |
---|---|
Spring (0) | 2022.08.27 |