MongoDB\Driver\ReadPreference::__construct
(mongodb >=1.0.0)
MongoDB\Driver\ReadPreference::__construct — Создать новый ReadPreference
Описание
$mode
, array $tagSets
= null
, array $options
= array()
)Создает новый MongoDB\Driver\ReadPreference, который является неизменяемым объектом значения.
Список параметров
-
mode
-
Режим предпочтения чтения Значение Описание MongoDB\Driver\ReadPreference::RP_PRIMARY
or"primary"
Все операции считывается из текущего первичного узла набора реплик. Это предпочтение чтения по умолчанию для MongoDB.
MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED
or"primaryPreferred"
В большинстве ситуаций операции считываются из первичного узла, но если он недоступен, операции считываются из вторичных узлов.
MongoDB\Driver\ReadPreference::RP_SECONDARY
или"secondary"
Все операции считываются из вторичных узлов набора реплик.
MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED
или"secondaryPreferred"
В большинстве ситуаций операции считываются из вторичных членов, но если вторичные члены недоступны, операции считываются из первичного узла.
MongoDB\Driver\ReadPreference::RP_NEAREST
or"nearest"
Операции считываются из члена набора репилк с наименьшей задержкой сети, независимо от типа члена.
-
tagSets
-
Наборы тегов позволяют настраивать операции чтения для определенных членов набора реплик. Этот параметр должен быть массивом ассоциативных массивов, каждый из которых содержит ноль или несколько пар ключ-значение. При выборе сервера для операции чтения драйвер пытается выбрать узел, имеющий все теги в наборе (т.е. ассоциативный массив пар ключ-значение). Если выбор не удался, the driver will attempt subsequent sets. Пустой набор тегов (
array()
) будет соответствовать любому узлу и может использоваться как резервный.Теги не совместимы с режимом
MongoDB\Driver\ReadPreference::RP_PRIMARY
, и, как правило, применяется только при выборе вторичного члена набора для операции чтения. Однако режимMongoDB\Driver\ReadPreference::RP_NEAREST
в сочетании с набором тегов, выбирает соответствующий член с наименьшей задержкой сети. Этот член может быть первичным или вторичным. -
options
-
options Опция Тип Описание hedge object|array Указывает, использовать ли » хеджированные чтения, которые поддерживаются MongoDB 4.4+ для закрытых запросов.
Хеджированные чтения с сервера доступны для всех неосновных предпочтений чтения и включаются по умолчанию при использовании режима
"nearest"
. Этот параметр позволяет явно разрешить чтение с хеджированием на сервере для неосновных предпочтений чтения, указав['enabled' => true]
, или явно отключив серверное чтение с хеджированием для предпочтения чтения"nearest"
, указав['enabled' => false]
.maxStalenessSeconds int Определяет максимальное отставание репликации или "staleness", для чтения из вторичных узлов. Когда оцениваемая staleness вторичных узлов превышает это значение, драйвер прекращает использовать ее для операций чтения.
Если указано, максимальный staleness должен быть 32-битным числом без знака, большим или равным
MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS
.По умолчанию используется
MongoDB\Driver\ReadPreference::NO_MAX_STALENESS
, что означает, что драйвер не будет учитывать отставания вторичных узлов при выборе направления для операции чтения.Этот параметр несовместим с режимом
MongoDB\Driver\ReadPreference::RP_PRIMARY
. Указание максимальной staleness также требует, чтобы все экземпляры MongoDB в развертывании использовали MongoDB 3.4+. Исключение будет выброшено во время выполнения, если экземпляры MongoDB в развертывании имеют более старую версию.
Ошибки
- При ошибке парсинга аргумента бросает исключение MongoDB\Driver\Exception\InvalidArgumentException.
- При некорректном
mode
выбрасывает MongoDB\Driver\Exception\InvalidArgumentException - Если
tagSets
предоставляется как первичное предпочтение чтения или имеет неправильный формат (т.е. не массив из нуля или более документов) выбрасывает MongoDB\Driver\Exception\InvalidArgumentException. - Если опция
"maxStalenessSeconds"
предоставляется для первичного предпочтения чтения или находится вне диапазона, выбрасывает MongoDB\Driver\Exception\InvalidArgumentException.
Список изменений
Версия | Описание |
---|---|
PECL mongodb 1.8.0 |
Добавлен параметр "hedge" .
|
PECL mongodb 1.3.0 |
Аргумент |
PECL mongodb 1.2.0 |
Добавлен третий аргумент |
Примеры
Пример #1 Пример использования MongoDB\Driver\ReadPreference::__construct()
<?php
/* Предпочитать вторичный узел, но в случае отказа отступить к первичному. */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED));
/* Предпочитать узел в Нью-Йоркском центре обработки данных с минимальной задержкой. */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_NEAREST, [['dc' => 'ny']]));
/* Требуется дополнительный узел, чья задержка репликации находится в пределах двух минут от основного */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, ['maxStalenessSeconds' => 120]));
/* Явно включить хеджирование чтения на сервере */
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) } }