ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MongoDB - Read Concern
    mongoDB 2022. 4. 4. 00:17

    MongoDB CRUD - 어떻게 완화된 ACID (BASE) 인가? :: 개발 일지 (tistory.com) 에서 마지막에 알아 본 concern의 이해가 어려울 것으로 생각된다. 그래서 mongoDB 문서에 나와있는 예를 들어가며 간단하게 설명하고자 한다.


    Read Concern

    local, available

     "local"은 리턴 한 data가 replica set member들에 data가 써졌음을 보장하지 않는다. 이제 어떻게 동작하는지 알아보자.

     

    3개의 replica set에 write operation을 한다고 생각해보자

    Write Prev = write 이전 값

    Write After = w: "majority" write 이후 실제 쓰여진 값

      ~t0 t0~t1 t1~t2 t2~t3 t3~t4 t4~t5 t5~t6
    primary Write Prev Write After Write After Write After Write After Write After Write After
    secondary1 Write Prev Write Prev Write After Write After Write After Write After Write After
    secondary2 Write Prev Write Prev Write Prev Write After Write After Write After Write After

     그림에서 보면 Primary 에서는 t0이후에 바로 data가 쓰이고, Primary가 Secondary에 write를 실행한 후에야 secondary에서는 data가 쓰이게 된다. "local"의 경우는 다른 node의 상태를 보지 않기 때문에 read 시 위의 표처럼 동작한다.

     

     "local"과 "available"의 경우 unsharded collections에 대해서 동일하게 동작한다. 이에 대해서는 이전 포스트에 설명했기 때문에 간단히 말하면 "available"은 read latency를 최소화했기 때문에 "local"보다 조금 더 불안정하다.


    majority

     "majority"는 data read가 replica set member들에게 acknowledge 되었음을 보장한다.

    3개의 replica set에 write operation을 한다고 생각해보자

    Write Prev = write 이전 값

    Write After = w: "majority" write 이후 실제 쓰여진 값

      ~t0 t0~t1 t1~t2 t2~t3 t3~t4 t4~t5 t5~t6 t6~
    primary Write Prev Write Prev Write Prev Write Prev Write After Write After Write After Write After
    secondary1 Write Prev Write Prev Write Prev Write Prev Write Prev Write Prev Write After Write After
    secondary2 Write Prev Write Prev Write Prev Write Prev Write Prev Write Prev Write Prev Write After

     "local", "available" 과 다르게 t3에서 acknowledge과정이 지나고 나서야 read 시에 변환된 값으로 읽힌다. 또한 secondary의 경우 완료되었음을 primary에 알리고 응답을 받아야 변화된 값으로 읽힌다.

    'mongoDB' 카테고리의 다른 글

    MongoDB - Data modeling (2)  (0) 2022.04.16
    MongoDB - Data modeling (1)  (0) 2022.04.14
    MongoDB CRUD - 어떻게 완화된 ACID (BASE) 인가?  (0) 2022.03.28
    Mongodb - database and collection  (0) 2022.03.27
    MongoDB Time Series Collection - 3  (0) 2022.03.25

    댓글

Designed by Tistory.