- 트랜잭션 :
데이터베이스에서 데이터에 대한 하나의 논리적 실행단계 ACID (원자성, 일관성, 고립성, 지속성)는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어
- 원자성(Atomicity): 트랜잭션 내의 모든 작업이 성공적으로 수행되거나 아니면 전혀 수행되지 않아야 합니다. 트랜잭션 중간에 어떤 실패도 발생하면 모든 작업이 롤백되어야 합니다.
- 일관성(Consistency): 트랜잭션이 성공적으로 완료되면 항상 일관된 데이터베이스 상태를 보장해야 합니다. 즉, 트랜잭션이 실행되기 이전과 후의 데이터 상태는 일관성을 유지해야 합니다.
- 고립성(Isolation): 동시에 실행되는 트랜잭션들이 서로 영향을 주지 않아야 합니다. 트랜잭션이 실행 중인 상태에서는 그 트랜잭션 내의 변경사항을 다른 트랜잭션에서는 볼 수 없어야 합니다.
- 지속성(Durability): 트랜잭션이 성공적으로 완료된 후, 그 결과는 영구적으로 반영되어야 합니다. 시스템이 다운되거나 문제가 발생하더라도, 완료된 트랜잭션의 결과는 보존되어야 합니다.
- 트랜잭션의 특징 :
- 더 이상 쪼갤 수 없는 최소단위의 작업입니다.
- 하나의 최소 단위의 작업에 여러가지 데이터 변경을 넣으면, 모두 저장되거나, 아무 것도 저장되지 않거나를 보장합니다
- 모두 성공 시 ⇒트랜잭션 Commit, 중간에 하나라도 실패 시 ⇒ 트랜잭션 Rollback
- 데이터베이스를 더 안전하게 관리하려면? (Primary, Replica)
- DB 운영방식
- 웹 서비스에서 DB 에 담겨있는 Data 는 가장 중요한 리소스 입니다.
- 회원 정보
- 서비스 이용 정보
- DB 훼손 가능성
- DB 도 결국 물리적인 HDD (하드 디스크) 에 존재
- DB 가 저장된 하드디스크 고장
- DB 가 저장된 컴퓨터 고장
- 일반적으로는 DB 를 2대 이상 운영합니다.(읽기 전용 DB와 쓰기 전용 DB를 분리)
- 쓰기 전용 DB를 카피(사실 데이터 변경을 추적)하는 읽기 전용 DB들을 다수 두는 방식으로 해결. 부하도 분산되고 안전하게 운영이 가능
- 웹 서비스에서 DB 에 담겨있는 Data 는 가장 중요한 리소스 입니다.
- Primary / Replica 운영방식 :
데이터베이스의 안정성과 데이터의 안전을 위해 일반적으로 기본(Primary) 데이터베이스와 복제(Replica) 데이터베이스를 구축하고 운영하는 방식을 사용합니다.- Primary (쓰기 전용): 모든 쓰기 작업 (Create, Update, Delete)은 Primary DB에 직접 수행됩니다. Primary DB에 쓰여진 데이터는 Replica DB로 복제됩니다.
- Replica (읽기 전용): 읽기 작업은 복제된 DB에서 수행됩니다. 이렇게 함으로써, 부하를 분산시키고, Primary DB에 문제가 발생했을 경우 데이터의 손실을 방지할 수 있습니다.
- 또한, 이런 Primary - Replica 구조는 Failover라는 개념과도 밀접한 관련이 있습니다. Primary DB에 장애가 발생하면, 하나의 Replica DB가 자동으로 Primary DB의 역할을 수행하게 됩니다. 이를 통해 서비스의 중단 없이 데이터베이스를 안정적으로 운영할 수 있습니다.
'Spring' 카테고리의 다른 글
TestCode, TDD, BDD, Junit, Mokito (0) | 2023.05.29 |
---|---|
AOP(Aspect-Oriented Programming) (0) | 2023.05.29 |
스프링 프레임워크(Spring Framework), 생성자 주입, Singletone Bean (0) | 2023.05.25 |
스프링 3계층 아키텍처, Annotation(@) (0) | 2023.05.25 |
JPA(Java Persistence API), ORM(Object-Relational Mapping) pt.2 (0) | 2023.05.25 |