MongoDB\Driver\ReadPreference::__construct

(mongodb >=1.0.0)

MongoDB\Driver\ReadPreference::__construct — 새 ReadPreference 생성


설명

final public MongoDB\Driver\ReadPreference::__construct(string|int $mode, array $tagSets = null, array $options = array())

변경할 수 없는 값 개체인 새 MongoDB\Driver\ReadPreference를 생성합니다.


매개변수

mode

Read preference mode

Value 설명
MongoDB\Driver\ReadPreference::RP_PRIMARY 또는 "primary" 모든 작업은 현재 복제본 세트 기본에서 읽습니다. 이것은 MongoDB의 기본 읽기 환경 설정입니다.
MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED 또는 "primaryPreferred" 대부분의 경우 작업은 기본 구성원에서 읽지만 사용할 수 없는 경우 작업은 보조 구성원에서 읽습니다.
MongoDB\Driver\ReadPreference::RP_SECONDARY 또는 "secondary" 모든 작업은 복제본 세트의 보조 구성원에서 읽습니다.
MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED 또는 "secondaryPreferred" 대부분의 경우 작업은 보조 구성원에서 읽지만 사용 가능한 보조 구성원이 없는 경우 작업은 기본 구성원에서 읽습니다.
MongoDB\Driver\ReadPreference::RP_NEAREST 또는 "nearest" 구성원 유형에 관계없이 네트워크 대기 시간이 가장 짧은 복제본 집합의 구성원에서 읽는 작업입니다.
tagSets
태그 세트를 사용하면 복제본 세트의 특정 구성원에 대한 읽기 작업을 대상으로 할 수 있습니다. 이 매개변수는 각각 0개 이상의 키/값 쌍을 포함하는 연관 배열의 배열이어야 합니다. 읽기 작업을 위해 서버를 선택할 때 드라이버는 세트에 모든 태그가 있는 노드(즉, 키/값 쌍의 연관 배열)를 선택하려고 시도합니다. 선택에 실패하면 드라이버가 후속 세트를 시도합니다. 빈 태그 세트(array())는 모든 노드와 일치하며 폴백으로 사용될 수 있습니다.

태그는 MongoDB\Driver\ReadPreference::RP_PRIMARY 모드와 호환되지 않으며 일반적으로 읽기 작업을 위해 집합의 보조 구성원을 선택할 때만 적용됩니다. 그러나 MongoDB\Driver\ReadPreference::RP_NEAREST 모드는 태그 세트와 결합될 때 네트워크 대기 시간이 가장 낮은 일치하는 구성원을 선택합니다. 이 구성원은 기본 또는 보조일 수 있습니다.

options

options

Option Type 설명
hedge object|array 샤딩된 쿼리에 대해 MongoDB 4.4 이상에서 지원하는 » hedged reads를 사용할지 여부를 지정합니다.

서버 헤지 읽기는 기본이 아닌 모든 읽기 기본 설정에 사용할 수 있으며 "nearest" 모드를 사용할 때 기본적으로 활성화됩니다. 이 옵션을 사용하면 ['enabled' => true]를 지정하여 기본이 아닌 읽기 기본 설정에 대한 서버 헤지 읽기를 명시적으로 활성화하거나 ['enabled' => false]를 지정하여 "nearest" 읽기 기본 설정에 대한 서버 헤지 읽기를 명시적으로 비활성화할 수 있습니다.

maxStalenessSeconds int 보조에서 읽기에 대한 최대 복제 지연 또는 "부실"을 지정합니다. 보조 장치의 예상 수명이 이 값을 초과하면 드라이버가 읽기 작업에 사용을 중지합니다.

지정된 경우 최대 비활성은 MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS보다 크거나 같은 부호 있는 32비트 정수여야 합니다.

기본값은 MongoDB\Driver\ReadPreference::NO_MAX_STALENESS이며, 이는 드라이버가 읽기 작업을 지시할 위치를 선택할 때 보조 장치의 지연을 고려하지 않음을 의미합니다.

이 옵션은 MongoDB\Driver\ReadPreference::RP_PRIMARY모드와 호환되지 않습니다. 최대 비활성을 지정하려면 배포의 모든 MongoDB 인스턴스가 MongoDB 3.4 이상을 사용해야 합니다. 배포의 MongoDB 인스턴스가 이전 서버 버전인 경우 실행 시 예외가 발생합니다.


오류/예외


변경 로그

버전 설명
PECL mongodb 1.8.0 "hedge" 옵션을 추가했습니다.
PECL mongodb 1.3.0 mode 인수는 이제 MongoDB\Driver\Manager::__construct()에 대한 "readPreference" URI 옵션과 일치하는 문자열 값을 허용합니다.
PECL mongodb 1.2.0 "maxStalenessSeconds" 옵션을 지원하는 세 번째 options 인수를 추가했습니다.

Examples

예제 #1 MongoDB\Driver\ReadPreference::__construct() 예제

                  
<?php

/* Prefer a secondary node but fall back to a primary. */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED));

/* Prefer a node in the New York data center with lowest latency. */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_NEAREST, [['dc' => 'ny']]));

/* Require a secondary node whose replication lag is within two minutes of the primary */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, ['maxStalenessSeconds' => 120]));

/* Explicitly enable server hedged reads */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, ['hedge' => ['enabled' => true]]));

?>
                  
                

위의 예는 다음을 출력합니다.

object(MongoDB\Driver\ReadPreference)#1 (1) {
  ["mode"]=>
  string(18) "secondaryPreferred"
}
object(MongoDB\Driver\ReadPreference)#1 (2) {
  ["mode"]=>
  string(7) "nearest"
  ["tags"]=>
  array(1) {
    [0]=>
    object(stdClass)#2 (1) {
      ["dc"]=>
      string(2) "ny"
    }
  }
}
object(MongoDB\Driver\ReadPreference)#1 (2) {
  ["mode"]=>
  string(9) "secondary"
  ["maxStalenessSeconds"]=>
  int(120)
}
object(MongoDB\Driver\ReadPreference)#1 (2) {
  ["mode"]=>
  string(9) "secondary"
  ["hedge"]=>
  object(stdClass)#1 (1) {
    ["enabled"]=>
    bool(true)
  }
                

기타