(mongodb >=1.0.0)
MongoDB\Driver\ReadPreference::__construct — Crear una nueva ReadPreference
$mode
, ?array $tagSets
= null
, ?array $options
= null
)Construye un nuevo MongoDB\Driver\ReadPreference, que es un objeto de valor inmutable.
mode
Valor | Descripción |
---|---|
"primary" |
Todas las operaciones leídas desde el conjunto de réplicas actual primario. Este es el modo de preferencia de lectura por omisión para MongoDB. |
"primaryPreferred" |
En la mayoría de las situaciones, las operaciones son leídas desde el primario, pero si no está disponible, las operaciones son leídas desde un miembro secundario. |
"secondary" |
Todas las operaciones son leídas desde los miembros secundarios del conjunto de réplicas. |
"secondaryPreferred" |
En la mayoría de los casos, las operaciones son leídas por miembros secundarios, pero si ningún miembro secundario está disponible, las operaciones son leídas desde el primario. |
"nearest" |
Operaciones leídas desde el miembro del conjunto de réplicas con la latencia de red más baja, independientemente del tipo de miembro. |
tagSets
Los conjuntos de etiquetas permiten dirigir las operaciones de lectura a miembros específicos de un conjunto de réplicas. Este parámetro debe ser un array de arrays asociativos, que contienen cada uno cero o más pares clave/valor. Al seleccionar un servidor para una operación de lectura, el controlador intenta seleccionar un nodo que contenga todas las etiquetas de un conjunto (es decir, el array asociativo de pares clave/valor). Si la selección falla, el controlador intentará con los siguientes conjuntos. Un conjunto de etiquetas vacío (array()
) corresponde a cualquier nodo y puede ser utilizado como respaldo.
Las etiquetas no son compatibles con el modo "primary"
y, en general, solo se aplican cuando se selecciona un miembro secundario de un conjunto para una operación de lectura. Sin embargo, el modo "nearest"
, cuando se combina con un conjunto de etiquetas, selecciona el miembro correspondiente con la latencia de red más baja. Este miembro puede ser primario o secundario.
options
Opción | Tipo | Descripción |
---|---|---|
hedge | object|array |
Especifica si se debe utilizar o no » las lecturas cruzadas, que son soportadas desde MongoDB 4.4+ para las consultas compartidas.
El servidor de lecturas cruzadas está disponible para todas las lecturas de referencias no primarias, y está activado por omisión al utilizar el modo |
maxStalenessSeconds | int |
Especifica un desfase de replicación máximo, o "obsolescencia", para las lecturas de los secundarios. Cuando la obsolescencia estimada de un secundario supera este valor, el controlador deja de utilizarlo para las operaciones de lectura.
Si se especifica, la obsolescencia máxima debe ser un entero signado de 32 bits mayor o igual a
Por omisión,
Esta opción no es compatible con el modo |
mode
es incorrecto.tagSets
es proporcionado para una preferencia de lectura primaria o es incorrecto (es decir, no es un array de cero o más documentos)."maxStalenessSeconds"
es proporcionada para una preferencia de lectura primaria o está fuera de rango.Versión | Descripción |
---|---|
PECL mongodb 2.0.0 |
Pasar un int para el argumento mode ya no es soportado.
|
PECL mongodb 1.20.0 |
Pasar un int para el argumento mode está DEPRECADO.
|
PECL mongodb 1.8.0 |
Añadida la opción "hedge" .
|
PECL mongodb 1.3.0 |
El argumento |
PECL mongodb 1.2.0 |
Añadido un tercer argumento de |
Ejemplo #1 Ejemplo con MongoDB\Driver\ReadPreference::__construct()
<?php
/* Prefiera un nodo secundario pero recurra a un primario. */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY_PREFERRED));
/* Prefiera un nodo en el centro de datos de Nueva York con la latencia más baja. */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::NEAREST, [['dc' => 'ny']]));
/* Requiere un nodo secundario cuyo desfase de replicación se encuentre dentro de los dos minutos */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY, null, ['maxStalenessSeconds' => 120]));
/* Activa explícitamente el servidor de lecturas cruzadas */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY, null, ['hedge' => ['enabled' => true]]));
?>
El resultado del ejemplo sería algo similar a:
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) } }