대용량 처리 이해/MongoDB

Read Preference

훈지런 2023. 2. 16. 18:30

목적 :

  • read를 Write 도 하는 Primary한테 부하가집중되는 걸 Secondary로 분산시키는게 주된 목적임.
  • 4.4버전에서 새로생긴 옵션 - 해치드 리드: 각각 샤드에 두번의 요청을 동시에 보내고 둘중 먼저오는 요청을 기준으로 반환을함으로 더 빨리 처리 가능함.

종류:
Primary : 무조껀 Primary로 읽기 요청
PrimaryPreferred: 가능하면 Primary에서 읽고 없으면 Secondary로 요청
Secondary: 무조껀 Secondary로 읽기 요청
SecondaryPreferred: 가능하면 Secondary에서 읽고 없으면 Primary로 요청
Nearest: 평균 Ping 시간을 기반으로 지연율이 가장 낮은 멤버로 요청

Secondary 문제점 : 복제가 완료되지않아서 지연된 데이터를 보여줄수있다.

지연된 데이터를 보여준다..?

  • 허용 가능: SNS에서 게시물 업로드했을경우 팔로워한테 바로 보여줄 필요가 꼭 필요하진 않음.
  • 허용 불가능: 배달 대행시에 주문 내용이 바로 확인이 되지 않는다면 문제가 생길것으로 판단됨. 이럴경우엔 Primary를 사용하는것에 좋다.

테스트

테스트 하기위한 자바소스

한참 켜둔후에 끄고 Atlas 모니터링을 확인해보니

왼쪽에서 순서대로 Secondary, Secondary, Primary

Primary만 올랐다.

다음에는 Read Preference로 설정을 하고 돌렸다.

왼쪽에서 순서대로 Secondary, Secondary, Primary

이번엔 Secondary가 올랐다.

'대용량 처리 이해 > MongoDB' 카테고리의 다른 글

일관성 제어  (0) 2023.02.15
Aggregation  (0) 2023.01.29
Sharded Cluster  (0) 2023.01.28
Replica Set  (0) 2023.01.01
MongoDB 구조  (0) 2022.12.31