• Read Preference

  • 읽기 선호도

  • Read preference describes how MongoDB clients route read operations to members of a replica set.
  • Read Preference는 MongoDB 클라이언트가 읽기 작업을 복제 집합(replica set)의 어떤 구성원으로 보낼지를 정한다.
  • By default, an application directs its read operations to the primary member in a replica set. Reading from the primary guarantees that read operations reflect the latest version of a document. However, by distributing some or all reads to secondary members of the replica set, you can improve read throughput or reduce latency for an application that does not require fully up-to-date data.
  • 기본적으로 애플리케이션은 읽기 작업을 복제 집합의 Primary 구성원 서버로 보낸다. Primary에서 읽으면 읽기 작업은 항상 문서의 최신 버전을 가져올 수 있다. 그러나 일부 또는 전체 읽기를 복제 집합의 Secondary 구성원에게 분산시켜서 읽기 작업의 처리량을 높이거나, 반드시 최신 데이터가 필요하지는 않은 애플리케이션의 대기 시간을 줄일 수 있다.
  • IMPORTANT
  • 중요
  • You must exercise care when specifying read preferences: modes other than primary can and willreturn stale data because the secondary queries will not include the most recent write operations to the replica set’s primary.
  • 읽기 선호도를 지정할 때는 주의해야 한다. Primary가 아닌 모드에서는 항상 오래된 데이터를 읽을 가능성이 있으며, 이것은 Secondary로 보낸 질의 결과에는 복제 집합의 Primary에 기록된 최신 데이터가 아직 반영되지 않았을 수 있기 때문이다.
Image of 2011 article
  • Read operations to a replica set. Default read preference routes the read to the primary. Read preference of nearest routes the read to the nearest member.
  • 복제 집합에 대한 읽기 작업. 아무것도 지정하지 않았다면 기본은 Primary이다. 읽기 선호도를 nearest로 지정하면 가장 '가까운' 구성원으로 지정한다.
  • Use Cases

  • 사용 예제

  • Indications

  • 유효한 경우

  • The following are common use cases for using non-primary read preference modes:
  • 다음은 Primary가 아닌 구성원을 지정하여 읽기 작업을 실행할 수 있는 일반적인 사례이다.
  • - Running systems operations that do not affect the front-end application.
  • - 앞단 (front-end) 애플리케이션에 영향을 미치지 않는 시스템 작업
  • NOTE
  • 비고
  • Read preferences aren’t relevant to direct connections to a single mongod instance. However, in order to perform read operations on a direct connection to a secondary member of a replica set, you must set a read preference, such as secondary.
  • - Providing local reads for geographically distributed applications.
  • If you have application servers in multiple data centers, you may consider having a geographically distributed replica set and using a non primary read preference or the nearest. This allows the client to read from the lowest-latency members, rather than always reading from the primary.
  • - Maintaining availability during a failover.
  • Use primaryPreferred if you want an application to read from the primary under normal circumstances, but to allow stale reads from secondaries in an emergency. This provides a “read-only mode” for your application during a failover.
  • Counter-Indications

  • 유효하지 않은 경우

  • In general, do not use secondary and secondaryPreferred to provide extra capacity for reads, because:
  • 일반적으로, 읽기 작업을 위한 추가 사용량을 확보하기 위한 목적으로 secondary와 secondaryPreferred를 사용하면 안된다.
  • - All members of a replica have roughly equivalent write traffic, as a result secondaries will service reads at roughly the same rate as the primary.
  • - 복제 집합의 모든 구성원은 거의 동일한 쓰기 부하를 받는다. 따라서 secondary 인스턴스들은 primary와 거의 동일한 비율로 읽기를 처리할 것이다
  • - Because replication is asynchronous and there is some amount of delay between a successful write operation and its replication to secondaries, reading from a secondary can return out-of-date data.
  • - 복제는 비동기 작업이고 성공한 쓰기 작업이 secondary들로 복제되기까지에는 약간 지연이 발생하므로 secondary에서는 오래된 데이터를 반환할 수 있다
  • - Distributing read operations to secondaries can compromise availability if any members of the set are unavailable because the remaining members of the set will need to be able to handle all application requests.
  • - 읽기 작업을 secondary들로 분배했는데 그 중 일부에 문제가 생기면 서비스 가용성이 낮아질 수 있다. 남은 구성원들이 동일한 애플리케이션 읽기 요청을 처리할 수 있어야 하기 때문이다
  • - For queries of sharded collections that do not include the shard key, secondaries may return stale results with missing or duplicated data because of incomplete or terminated migrations.
  • - 샤드된 컬렉션에 대해 샤드 키를 포함하지 않은 질의를 보내면, 청크 이전 작업의 영향으로 Secondary 인스턴스들은 데이터를 빠뜨리거나 중복된 데이터를 반환할 수 있다.
  • Sharding increases read and write capacity by distributing read and write operations across a group of machines, and is often a better strategy for adding capacity.
  • 샤딩 클러스터를 구성하면 여러 대의 장비 사이에 읽기 쓰기 작업이 분배되어 읽기 쓰기 작업의 처리 용량이 늘어나며, 처리량을 늘리기 위한 더 나은 전략일 수 있다.
  • Read Preference Modes

  • New in version 2.2.
  • IMPORTANT
  • All read preference modes except primary may return stale data because secondaries replicate operations from the primary with some delay. Ensure that your application can tolerate stale data if you choose to use a non-primary mode.
  • MongoDB drivers support five read preference modes.
  • Read Preference Mode
  • Description
  • primaryDefault mode. All operations read from the current replica set primary.
  • primary: 기본 모드이다. 모든 읽기 작업은 현재 복제 집합의 primary 서버에서 읽는다.
  • primaryPreferredIn most situations, operations read from the primary but if it is unavailable, operations read from secondary members.
  • parimaryPreferred: 대부분의 경우 읽기 작업은 primary 서버에서 처리하지만 작업이 실패하면 secondary 구성원에서 읽는다.
  • nearestOperations read from member of the replica set with the least network latency, irrespective of the member’s type.
  • Read preference modes are also available to clients connecting to a sharded cluster through a mongos. The mongos instance obeys specified read preferences when connecting to the replica set that provides each shard in the cluster.
  • In the mongo shell, the readPref() cursor method provides access to read preferences.
  • Tag Sets

  • Tag sets allow you to target read operations to specific members of a replica set.
  • Custom read preferences and write concerns evaluate tags sets in different ways. Read preferences consider the value of a tag when selecting a member to read from. Write concerns ignore the value of a tag to when selecting a member, except to consider whether or not the value is unique.
  • You can specify tag sets with the following read preference modes:
  • Tags are not compatible with mode primary and, in general, only apply when selecting a secondarymember of a set for a read operation. However, the nearest read mode, when combined with a tag set, selects the matching member with the lowest network latency. This member may be a primary or secondary.
  • All interfaces use the same member selection logic to choose the member to which to direct read operations, basing the choice on read preference mode and tag sets.
0 Comments