-
ReadConcern & WriteConcernDatabase/MongoDB 2023. 2. 2. 22:55
ReadConcern
ReplicaSet 에서 Secondary 가 해당 데이터를 가지고 있는지 검증 후 읽기 작업을 진행하는 기능입니다. 이는 Shard Cluster 에서도 적용됩니다.
기본 형식은 다음과 같습니다.
readConcern: { level: }
level description "local" 추가 검증을 하지 않고 읽기 작업 진행(default) "avaliable" local 과 동일하지만 Shard Cluster 에서의 읽기작업인 경우 "majority" 과반수의 구성원에 대하여 검증 "linearizable" 쓰기 동작이 있을 경우 대기 후 처리 "snapshat" 다중 트랜젝션에서 사용 WriteConcern
쓰기 작업에 대한 요청 승인 수준을 지정할 수 있습니다.
ReplicaSet 이나 Shard Cluster에서 쓰기 동작시 DB간 동기화 중 Down 케이스가 발생될 경우를 대비하여 활용됩니다.
간단하게 보면 ReplicaSet 의 Secondary 에 데이터를 적재하는것은 비동기적으로 동작하며, 일정주기를 기준으로 갱신하는데 이를 Sync 처리하는것을 뜻합니다.
기본형식은 다음과 같습니다.
writeConcern: { w: , j: , wtimeout: }
w 옵션
지정된 설정에 따라서 인스턴스에 전파되었다는 확인을 하는 옵션
Value Description number 0 : 쓰기 작업에 대한 승인을 요청하지 않습니다.
1 : StandAlone MongoDB 나 Primary 에 적재됨을 대기 합니다. 만약 Primary 가 Down 상태이면 아무 Secondary 에게 전달합니다.
1 이상부터는 ReplicaSet 사이즈만큼 사용할 수 있습니다.
2 : Primary 와 하나의 Secondary 가 적재됨을 대기 합니다.
3 : Primary 와 2대의 Secondary 에 적재됨을 대기 합니다."majority" 과반수 이상에 데이터가 전파되었음을 확인 custom write concern name mongod.conf 에 tags 로 추가되어 있는 설정 j 옵션
디스크에 적재되었는지에 대한 확인을 하는 옵션
Value Description true 디스크에 적재 대기 false 메모리에 적재 대기 wtimeout 옵션
쓰기 기능에 대한 시간제한
Value Description miliseconds 쓰기 동작의 타임아웃 StandAlone
w:1 w:"majority" j is unspecified 메모리에 적재될때까지 대기 디스크에 적재될때까지 대기 j : true 디스크에 적재될때까지 대기 디스크에 적재될때까지 대기 j : false 메모리에 적재될때까지 대기 디스크에 적재될때까지 대기 ReplicaSet
ReplicaSet 에서 복제 데이터 쓰기 작업에 대한 설정을 할 수 있습니다.
writeConcern 옵션은 아래와 같은 포멧을 가집니다.
w:1 w:"majority" j is unspecified 메모리에 적재 될 때까지만 대기 writeConcernMajorityJournalDefault 설정에 따라 동작 ( defualt : true ) j : true 디스크에 적재 될 때까지 대기 디스크에 적재 될 때까지 대기 j : false 메모리에 적재 될 때까지 대기 메모리에 적재 될 때까지 대기 "majority" 에 대한 과반수 값은 rs.status() 의 writeMajorityCount 를 통한 확인이 가능합니다. 이 때 값은 Primary 를 포함한 수량입니다.
'Database > MongoDB' 카테고리의 다른 글
Conf Options Guide (0) 2023.02.02 Import, Export, Dump (0) 2023.02.02 Transaction (0) 2023.02.02 ReplicaSet (0) 2023.02.02 2대의 서버로 구성하는 개발용 Shard Cluster (1) 2023.02.02