Read Preference

누군가·2024년 2월 7일
0

MongoDB Replica Set

목록 보기
4/4

Read Preference - 읽기 설정

MongoDB에서는 기본적으로 Primary에서만 쿼리를 수행합니다.

하지만 Read Preference 설정에 따라 보조 데이터베이스 (Secondary)에서도 쿼리를 수행하도록 설정할 수 있습니다.

모드설명
primary주 데이터베이스 (Primary)에서만 읽기 권한 수행 (기본 값)
primaryPreferred주 데이터베이스에서 읽기 권한을 수행하되 읽기가 불가능한 경우 (보조 데이터베이스 (Secondary)에서 읽기 권한 수행)
secondary보조 데이터베이스에서만 읽기 권한 수행
secondaryPreferred보조 데이터베이스에서 읽기 권한을 수행하되 읽기가 불가능한 경우 (주 데이터베이스에서 읽기 권한 수행)
nearestNetwork Latency가 가장 낮은 데이터베이스에서 읽기 권한 수행
# Read Preference 설정 방법
> db.getMongo().setReadPref('모드')

# Secondary 노드 - Read Preference 설정 전 ("primary")
> db.book.find({})
MongoServerError: not primary and secondaryOk=false - consider using db.getMongo()
.setReadPref() or readPreference in the connection string

# Secondary 노드 - Read Preference 설정 후 ("primaryPreferred")
> db.getMongo().setReadPref('primaryPreferred') // Read Preference = "primaryPreferred"
> db.book.find({})
[
  {
    _id: ObjectId("64df2b0ed10006156ad507ff"),
    name: 'book1',
    author: 'john'
  }
]
  • setReadPref()은 해당 세션 동안만 적용되는 것으로 보입니다.
  • cursor.readPref(’모드’)로 특정 쿼리에 대해서만 적용할 수도 있습니다.
    예, db.book.find({}).readPref(”primaryPreferred”)

Reference

https://www.mongodb.com/docs/manual/core/read-preference/

https://velog.io/@euholee/mongodb-read-preference-설정

profile
개발 중에 알게된 내용을 공유합니다 (나도 기억할겸)

0개의 댓글