일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 졸프
- google cloud
- Spring
- 2021 제9회 문화공공데이터 활용경진대회
- YOLOv5
- html
- Expo
- 코드업
- skt fellowship 3기
- google 로그인
- yolo
- react native
- idToken
- 양방향 매핑
- Loss Function
- @Transactional
- pandas
- javascript
- OG tag
- 순환참조
- 커스텀 데이터 학습
- marksense.ai
- C++
- google login
- JPA
- Spring Boot
- STT
- matplotlib
- AWS
- oauth
- Today
- Total
민팽로그
DB 운영과 @Transactional 본문
현업에서의 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 뽀개고 취업하기
spartacodingclub.kr
'jpa' 카테고리의 다른 글
[ORM] JPA와 연관관계 (0) | 2021.09.14 |
---|---|
[jpa 연관관계] 다대일 관계: 양방향 매핑 무한루프 (0) | 2021.08.26 |