• 트랜잭션 :
    데이터베이스에서 데이터에 대한 하나의 논리적 실행단계 ACID (원자성, 일관성, 고립성, 지속성)는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어
    • 원자성(Atomicity): 트랜잭션 내의 모든 작업이 성공적으로 수행되거나 아니면 전혀 수행되지 않아야 합니다. 트랜잭션 중간에 어떤 실패도 발생하면 모든 작업이 롤백되어야 합니다.
    • 일관성(Consistency): 트랜잭션이 성공적으로 완료되면 항상 일관된 데이터베이스 상태를 보장해야 합니다. 즉, 트랜잭션이 실행되기 이전과 후의 데이터 상태는 일관성을 유지해야 합니다.
    • 고립성(Isolation): 동시에 실행되는 트랜잭션들이 서로 영향을 주지 않아야 합니다. 트랜잭션이 실행 중인 상태에서는 그 트랜잭션 내의 변경사항을 다른 트랜잭션에서는 볼 수 없어야 합니다.
    • 지속성(Durability): 트랜잭션이 성공적으로 완료된 후, 그 결과는 영구적으로 반영되어야 합니다. 시스템이 다운되거나 문제가 발생하더라도, 완료된 트랜잭션의 결과는 보존되어야 합니다.
    이러한 트랜잭션의 ACID 원칙은 데이터의 정확성과 일관성을 보장하며, 데이터베이스 시스템에서 중요한 역할을 합니다.

 

  • 트랜잭션의 특징 : 
    • 더 이상 쪼갤 수 없는 최소단위의 작업입니다.
    • 하나의 최소 단위의 작업에 여러가지 데이터 변경을 넣으면, 모두 저장되거나, 아무 것도 저장되지 않거나를 보장합니다
    • 모두 성공 시 ⇒트랜잭션 Commit, 중간에 하나라도 실패 시 ⇒ 트랜잭션 Rollback

 

  • 데이터베이스를 더 안전하게 관리하려면? (Primary, Replica)
  • DB 운영방식
    • 웹 서비스에서 DB 에 담겨있는 Data 는 가장 중요한 리소스 입니다.
      • 회원 정보
      • 서비스 이용 정보
    • DB 훼손 가능성
      • DB 도 결국 물리적인 HDD (하드 디스크) 에 존재
      • DB 가 저장된 하드디스크 고장
      • DB 가 저장된 컴퓨터 고장
    • 일반적으로는 DB 를 2대 이상 운영합니다.(읽기 전용 DB와 쓰기 전용 DB를 분리)
    • 쓰기 전용 DB를 카피(사실 데이터 변경을 추적)하는 읽기 전용 DB들을 다수 두는 방식으로 해결. 부하도 분산되고 안전하게 운영이 가능
  • Primary / Replica 운영방식 :
    데이터베이스의 안정성과 데이터의 안전을 위해 일반적으로 기본(Primary) 데이터베이스와 복제(Replica) 데이터베이스를 구축하고 운영하는 방식을 사용합니다.
    • Primary (쓰기 전용): 모든 쓰기 작업 (Create, Update, Delete)은 Primary DB에 직접 수행됩니다. Primary DB에 쓰여진 데이터는 Replica DB로 복제됩니다.
    • Replica (읽기 전용): 읽기 작업은 복제된 DB에서 수행됩니다. 이렇게 함으로써, 부하를 분산시키고, Primary DB에 문제가 발생했을 경우 데이터의 손실을 방지할 수 있습니다.
    스프링 프레임워크에서는 @Transactional(readOnly = true) 어노테이션을 사용하여 읽기 전용 트랜잭션을 선언할 수 있습니다. 이렇게 하면 해당 트랜잭션은 읽기 전용 DB(Replica)에서 수행되게 됩니다.따라서 Primary - Replica 방식은 데이터의 안정성을 보장하며, 동시에 DB 작업의 부하를 분산시키는 효과적인 방법입니다.
  • 또한, 이런 Primary - Replica 구조는 Failover라는 개념과도 밀접한 관련이 있습니다. Primary DB에 장애가 발생하면, 하나의 Replica DB가 자동으로 Primary DB의 역할을 수행하게 됩니다. 이를 통해 서비스의 중단 없이 데이터베이스를 안정적으로 운영할 수 있습니다.