민팽로그

DB 운영과 @Transactional 본문

jpa

DB 운영과 @Transactional

민팽 2021. 9. 14. 16:27
현업에서의 DB 운영

DB도 물리적인 디스크 상에 존재 -> 여러 원인에 의해 DB가 웨손될 수 있음 -> 현업에서 DB를 1대 이상 운영

 

이 때 DB1과 DB2를 어떻게 Sync하는가??

 

 

Primary / Replica 운영 방식 사용 (Master / Slave)

 

primary: 쓰기 전용으로, @Transactional 의 readOnly 속성을 false로 둠(default값이 false이므로 명시하지 않아도 됨)

@Transactional(readOnly = false)

-> Write 된 Data(Create, Update, Delete)가 Replica 로 Sync됨(Replication)

 

Replica(Secondary): 읽기 전용으로, @Transactional 의 readOnly 속성을 true로 둠

@Transactional(readOnly = true)

 

Primary-Replica 방식의 DB 운영을 하면 Primary에 문제가 생겼을 때 Replica 중 1개가 Primary가 되어 운영함.

 

 

 

 

 


 

 

 

 

 

트랜잭션

- DB에서 데이터에 대한 하나의 논리적 실행절차

- 더이상 쪼갤 수 없는 최소 단위의 작업으로 모두 저장되거나, 아무것도 저장되지 않아야 함

- 트랜잭션을 안전하게 수행하기 위해 ACID(원자성, 일관성, 고립성, 지속성)을 지켜야 함

 

@Transactional

데이터를 다루다 보면 예상치 못한 오류로 인해 한번에 처리되어 DB에 저장되어야 하는 내용들이 절반만 수행된 채로 저장될 수 있음 -> @Transactional 어노테이션을 사용하면 이러한 문제를 예방할 수 있음. 즉, 트랜잭션을 안전하게 수행해 줌.

따라서 read 작업만 하는 경우에는 굳이 사용하지 않아도 되는 어노테이션이지만, 하나의 트랜잭션에 여러 번 데이터를 수정해야 할 때는 사용해 주어야 함.

 

 

 

 

 

 

참조

스파르타 코딩클럽 Spring 심화반

 

스파르타코딩클럽 [Spring 심화반]

Spring 뽀개고 취업하기

spartacodingclub.kr

 

'jpa' 카테고리의 다른 글

[ORM] JPA와 연관관계  (0) 2021.09.14
[jpa 연관관계] 다대일 관계: 양방향 매핑 무한루프  (0) 2021.08.26
Comments