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 인스턴스가 이전 서버 버전인 경우 실행 시 예외가 발생합니다.
오류/예외
- 인수 구문 분석 오류에 대해 MongoDB\Driver\Exception\InvalidArgumentException을 던집니다.
-
mode
가 유효하지 않으면 MongoDB\Driver\Exception\InvalidArgumentException을 던집니다. - 기본 읽기 기본 설정에 대해
tagSets
가 제공되거나 형식이 잘못된 경우(즉, 0개 이상의 문서 배열이 아닌 경우) MongoDB\Driver\Exception\InvalidArgumentException을 던집니다. - 기본 읽기 기본 설정에 대해
"maxStalenessSeconds"
옵션이 제공되거나 범위를 벗어나면 MongoDB\Driver\Exception\InvalidArgumentException이 발생합니다.
변경 로그
버전 | 설명 |
---|---|
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) }