ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ReadConcern & WriteConcern
    Database/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
Designed by Tistory.