MongoDB의 트랜잭션

2022. 11. 14. 19:46DB/MongoDB

- 몽고 디비에서 트랜잭션을 수행할 때의 제한 사항

버전의 제한 : 4.2 버전 이상에서만 지원.

트랜잭션으로 사용할 수 있는 명령어에 제한.

 

- 트랜잭션의 특성 4가지

Atomicity

Consistency

Isolation

Durability

 

- 몽고디비에서는 트랜잭션을 수행할 때 "세션"을 할당받아야 한다.

 

- 트랜잭션 예

- 트랜잭션 실행

 

- 몽고디비에서 API를 사용한 트랜잭션을 사용하는 두 가지 방법

코어 API : 관계형 데이터베이스와 유사한 구문 사용

콜백 API : 트랜잭션 사용에 권장되는 접근 방식.

두 API에서 개발자는 트랜잭션에서 사용할 논리 세션을 시작해야 하며, 트랜잭션의 작업이 특정 논리 세션과 연결되어야 한다.

 

- 트랜잭션 실행에 대한 시간 제한 

트랜잭션이 잠금을 획득하기 위한 대기 시간, 모든 트랜잭션의 실행될 최대 길이를 제어하는 것과 관련

트랜잭션의 최대 실행 시간은 기본적으로 1분 이하

 

-Op log 

마스터 노드에 요청되는 연산들이 로그로 기록되는 파일. 

크기 제한은 16mb이하여야 함

 

-몽고 디비에서 잠금을 사용하는 목적

동시성 제어, 원자성 보장

 

- 몽고디비 잠금 레벨(granule)

Global : 모든 데이터베이스가 잠기는 MongoDB 인스턴스 수준 잠금

Database : 언급된 데이터베이스가 잠기는 데이터베이스 수준 잠금

Collection : 여기서 잠금은 컬렉션 수준에서 처리

Document : 특정 도큐먼트만 잠기는 도큐먼트 수준 잠금

 

- Lock의 종류

S (Shared Lock) : 공유 잠금

X (Exclusive Lock) : 독점 잠금

IS (Intent Shared Lock) : 내부에 공유 잠금 설정시 사용

IX (Intent Shared Lock) : 내부에 독점 잠금 설정시 사용

 

- Lock의 양립성 테이블

보유/ 요청 X IX S IS
X X X X X
IX  X O X O
S X X O O
IS X O O O

인텐션 lock일 때 독점 잠금은 허용되지 않음

공유 lock과 인텐션 lock은 허용됨

인텐션 lock들은 호환 가능

 

'DB > MongoDB' 카테고리의 다른 글

데이터 모델링과 인덱스 (1)  (0) 2022.11.14
집계 명령어(3)  (0) 2022.11.14
집계 명령어(2)  (0) 2022.11.01
집계 명령어(1)  (0) 2022.11.01
쿼리 작성하기(2)  (0) 2022.10.31