(mongodb >=1.0.0)
MongoDB\Driver\ReadPreference::__construct — Создаёт новый объект предпочтения чтения ReadPreference
$mode
, ?array $tagSets
= null
, ?array $options
= null
)Метод создаёт новый объект MongoDB\Driver\ReadPreference — неизменяемый объект значения.
mode
Значение | Описание |
---|---|
"primary" |
Операции считываются из текущего первичного узла набора реплик. Это предпочтение чтения по умолчанию для БД MongoDB. |
"primaryPreferred" |
В большей части случаев операции считываются из первичного узла, но если узел недоступен, операции считываются из вторичных узлов. |
"secondary" |
Операции считываются из вторичных узлов набора реплик. |
"secondaryPreferred" |
В большей части случаев операции считываются из вторичных членов, но если вторичные члены недоступны, операции считываются из первичного узла. |
"nearest" |
Операции считываются из члена набора реплик с наименьшей задержкой сети, независимо от типа члена. |
tagSets
Наборы тегов разрешают нацеливать операции чтения на конкретных членов
набора реплик. Аргумент формируют как массив ассоциативных массивов, каждый
из которых содержит ноль или больше пар ключ-значение. Для операции чтения драйвер выбирает
сервер, в конфигурации которого узел содержит каждый тег набора —
ассоциативного массива пар ключей и значений. Драйвер
выполнит попытку со следующими наборами, если не получилось выбрать узел. Пустой набор тегов
array()
совпадёт с любым узлом, его передают как запасной вариант.
Теги несовместимы с режимом "primary"
, и по ним
сервер чаще выбирает только вторичного члена набора для
операции чтения. Между тем, при сочетании режима "nearest"
с набором тегов драйвер выбирает члена с наименьшей задержкой в сети.
Тогда членом, которого выберет драйвер, окажется первичный или вторичный узел.
options
Опция | Тип | Описание |
---|---|---|
hedge | object|array |
Определяет, использовать ли » хеджированные считывания , которые БД MongoDB 4.4+ поддерживают для шардированных запросов.
Хеджированные считывания с сервера доступны для непервичных предпочтений чтения
и включаются по умолчанию в режиме |
maxStalenessSeconds | int |
Определяет максимальное отставание репликации (англ. staleness) для чтения из вторичных узлов. Когда по оценке клиента отставания репликации вторичных узлов превышает это значение, драйвер прекращает использовать отставание для операций чтения.
Максимальное значение отставания репликации указывают как 32-битное целое число со знаком,
которое больше или равно значению константы
Значение по умолчанию для опции равно значению константы
Опция несовместима с режимом |
mode
.
tagSets
передали для предпочтения чтения первичного узла
или аргумент неправильно сформировали — передали не массив из нуля или больше документов.
"maxStalenessSeconds"
передали для предпочтения чтения первичного узла
или указали значение за пределами диапазона.
Версия | Описание |
---|---|
PECL-модуль mongodb 1.20.0 |
Передача целых чисел (int) в аргументе mode
УСТАРЕЛА.
|
PECL-модуль mongodb 1.8.0 |
Добававили опцию "hedge" .
|
PECL-модуль mongodb 1.3.0 |
Параметр |
PECL-модуль mongodb 1.2.0 |
Добавили в сигнатуру метода третий параметр — |
Пример #1 Пример создания нового объекта ReadPreference методом MongoDB\Driver\ReadPreference::__construct()
<?php
/* Предпочитать вторичный узел, но в случае отказа отступить к первичному */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY_PREFERRED));
/* Предпочитать узел в Нью-Йоркском центре обработки данных с минимальной задержкой */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::NEAREST, [['dc' => 'ny']]));
/* Требуется дополнительный узел, задержка репликации которого в пределах двух минут от основного */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY, null, ['maxStalenessSeconds' => 120]));
/* Явно разрешить серверу хеджированные считывания */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::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) } }