mirror of
https://github.com/php/doc-es.git
synced 2026-03-28 01:12:20 +01:00
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@337393 c90b9560-bf6c-de11-be94-00142212c4b1
315 lines
13 KiB
XML
315 lines
13 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: b84e55620e97b453cc50143db08a37894f7050e9 Maintainer: seros Status: ready -->
|
|
<!-- Reviewed: no -->
|
|
|
|
<chapter xml:id="mongo.readpreferences" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<title>Preferencias de lectura</title>
|
|
<para>
|
|
MongoDB 2.2 y la versión 1.3.0 del controlador añaden el soporte para
|
|
<link xlink:href="&url.mongodb.docs.readpreferences;">preferencias de lectura</link>,
|
|
que permiten controlar cuántas consultas son dirigidas a instancias de mongod en un
|
|
entorno de conjunto de réplica. Las preferencias de lectura podrían especificarse en función a
|
|
cada conexión, cada base de datos, o cada colección. Las preferencias definidas
|
|
en un nivel más alto
|
|
serán heredadas de forma predeterminada (p.ej. <classname>MongoCollection</classname>
|
|
heredará las preferencias de lectura definidas en la instancia de
|
|
<classname>MongoDB</classname> conrrespondiente).
|
|
</para>
|
|
<para>
|
|
Las preferencias de lectura son especificadas con una combinación de modos y conjuntos de etiquetas.
|
|
Los modos determinan cómo se priorizan instancias, mientras que los
|
|
<link xlink:href="&url.mongodb.docs.tagsets;">conjuntos de etiquetas</link> especifican criterios
|
|
para elegir instancias de mongod. Las instancias de mongod solamente son elegibles si
|
|
el timepo de ping está dentro de 15ms desde la instancia de mongod más cercana.
|
|
</para>
|
|
<simplesect xml:id="mongo.readpreferences.modes">
|
|
<title>Modos de preferencias de lectura</title>
|
|
<warning>
|
|
<para>
|
|
Todos los modos de preferencias de lectura excepto <literal>MongoClient::RP_PRIMARY</literal>
|
|
podrían devolver datos antiguos, puesto que los secundarios replican operaciones del primario
|
|
con alguna demora. Asegúrese de que su aplicación puede admitir datos antiguos si elige
|
|
usar un modo distinto de <literal>MongoClient::RP_PRIMARY</literal>.
|
|
</para>
|
|
</warning>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<literal>MongoClient::RP_PRIMARY</literal>
|
|
</para>
|
|
<para>
|
|
Todas las opearciones de lectura utilizarn únicamente el primario del conjunto de réplica actual. Esto es lo
|
|
predeterminado. Si el primario no está disponible, las operaciones de lectura producirán una
|
|
excepción.
|
|
</para>
|
|
<para>
|
|
Este modo es incompatible con el uso de conjuntos de etiquetas. Especificar un conjunto de etiquetas con
|
|
<literal>MongoClient::RP_PRIMARY</literal> resultará en una excepción.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<literal>MongoClient::RP_PRIMARY_PREFERRED</literal>
|
|
</para>
|
|
<para>
|
|
En muchas situaciones, las operaciones leen desde el miembro primario del conjunto.
|
|
Sin embargo, si el primario no está disponible, como durante situaciones de tolerancia
|
|
a fallos, las operacoines leen desde miembros secundarios.
|
|
</para>
|
|
<para>
|
|
Cuando la preferencias de lectura incluye un conjunto de etiquetas, el cliente lee primero desde
|
|
el primario, si está disponible, y luego desde los secundarios que coinciden con las
|
|
etiquetas especificadas. Si ningún segundario coincide con alguna etiqueta, la operación de lectura
|
|
producirá una excepción.
|
|
</para>
|
|
<warning>
|
|
<para>
|
|
La versión 2.2 de mongos añade soporte completo para preferencias de lectura. Al
|
|
conectar a instancias más antiguas de mongos,
|
|
<literal>MongoClient::RP_PRIMARY_PREFERRED</literal> enviará las consultas a
|
|
los secundarios.
|
|
</para>
|
|
</warning>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<literal>MongoClient::RP_SECONDARY</literal>
|
|
</para>
|
|
<para>
|
|
Operations read only from the secondary members of the set. If no
|
|
secondaries are available, read operations will produce an exception.
|
|
</para>
|
|
<para>
|
|
La mayoría de los conjuntos tienen al menos un secundario, pero hay situaciones donde
|
|
podría no haber ningún secundario disponible. Por ejemplo, un conjunto con un primario, un
|
|
secundario, y un árbitro podría no tener ningún secundario si un miembro está en
|
|
estado de recuperación o indisponible.
|
|
</para>
|
|
<para>
|
|
Cuando la preferencia de lectura incluye un conjunto de etiquetas, el cliente intenta encontrar
|
|
miembros secundarios que coincidan con el conjunto de etiquetas especificado y dirigir las lecturas
|
|
a un secundario aleatorio de entre el grupo más cercano. Si ningún secundario ha coincidido
|
|
con las etiquetas, la operación de lectura producirá una excepción.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<literal>MongoClient::RP_SECONDARY_PREFERRED</literal>
|
|
</para>
|
|
<para>
|
|
En muchas situaciones, las operaciones leen desde miembros secundarios, pero en
|
|
situaciones donde el conjunto consiste el un único primario sin ningún otro
|
|
miembro, la operación de lectura usará el primario del conjunto.
|
|
</para>
|
|
<para>
|
|
Cuando la preferencia de lectura incluye un conjunto de etiquetas, el cliente intenta encontrar
|
|
un miembro secundario que coincida con el conjunto de etiquetas especificado y dirigir las lecturas
|
|
a un secundario aleatorio de entre el grupo más cercano. Si ningún secundario ha coincidido
|
|
con las etiquetas, la operación de lectura producirá una excepción.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<literal>MongoClient::RP_NEAREST</literal>
|
|
</para>
|
|
<para>
|
|
El controlador lee desde un miembro <emphasis>aleatorio</emphasis> del conjunto
|
|
que posea un timepo de ping que sea menos de 15ms más lento que el miembro con
|
|
el tiempo de ping más lento. Las lecturas en el modo
|
|
<literal>MongoClient::RP_NEAREST</literal> no consideran el
|
|
tipo de miembro y podría leerse tanto desde primarios como de secundarios.
|
|
</para>
|
|
<para>
|
|
Establezca este modo para minimizar el efecto de latencia de red en operaciones de lectura
|
|
sin tener preferencia para datos actuales o antiguos.
|
|
</para>
|
|
<para>
|
|
Si se especifica un conjunto de etiquetas, el cliente intenta encontrar un miembro
|
|
que coincida con el conjunto de etiquetas especificado y dirigir las lecturas a un nodo
|
|
aleatorio de entre el grupo más cercano.
|
|
</para>
|
|
<note>
|
|
<para>
|
|
Todas las operaciones leen desde el miembro más cercano del conjunto de réplica que
|
|
coincida con el modo de preferencia de lectura especificado. El modo
|
|
<literal>MongoClient::RP_NEAREST</literal> prefiere lecturas de baja latencia
|
|
sobre un estado de miembro primario o secundario.
|
|
</para>
|
|
</note>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</simplesect>
|
|
<simplesect xml:id="mongo.readpreferences.tagsets">
|
|
<title>Conjuntos de etiquetas</title>
|
|
<para>
|
|
Los <link xlink:href="&url.mongodb.docs.tagsets;">conjuntos de etiquetas</link> permiten
|
|
especificar criterios para que una aplicación pueda dirigir operaciones de lectura hacia
|
|
miembros específicos, basándose en parámetros personalizados. Los conjuntos de etiquetas
|
|
aseguran que las operaciones de lectura apunten a miembros de un centro de datos en particular o
|
|
a instancias de mongod diseñadas para una clase de operaciones en concreto, tales
|
|
como de información o análisis.
|
|
</para>
|
|
<para>
|
|
Se pueden especificar conjuntos de etiquetas con los siguientes modos de preferencia de lectura:
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<literal>MongoClient::RP_PRIMARY_PREFERRED</literal>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<literal>MongoClient::RP_SECONDARY</literal>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<literal>MongoClient::RP_SECONDARY_PREFERRED</literal>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<literal>MongoClient::RP_NEAREST</literal>
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<para>
|
|
No se pueden especificar conjuntos de etiquetas con el modo de
|
|
preferencia de lectura <literal>MongoClient::RP_PRIMARY</literal>. Las etiquetas se aplican
|
|
solamente al seleccionar un miembro secundario de un conjunto, excepto para el cuándo en el
|
|
modo más cercano.
|
|
</para>
|
|
</simplesect>
|
|
<simplesect xml:id="mongo.readpreference.usage">
|
|
<title>Especificar preferencias de lectura</title>
|
|
<para>
|
|
Las preferencias de lectura se pueden especificar en una URI proporcionada a
|
|
<function>MongoClient::__construct</function>, el cual utiliza una sintaxis decadena
|
|
de consulta, o mediante métodos modificadores (setter) en las clases núcleo, que usan una
|
|
sintaxis de array para los conjuntos de etiquetas.
|
|
</para>
|
|
<para>
|
|
Cuando se especifican los modos de preferencia de lectura en una cadena de consulta, los conjuntos de etiquetas
|
|
para el valor <literal>readPreferenceTags</literal> deberían ser una secuencia delimitada por
|
|
comas de pares clave/valor delimitados por dos puntos.
|
|
</para>
|
|
<note>
|
|
<para>
|
|
Cada conjunto de etiquetas definida en la cadena de consulta utilizará el
|
|
nombre <literal>readPreferenceTags</literal>. A diferencia de cómo PHP pudiera tratar cadenas
|
|
de consulta de URL, los valores sucesivos para <literal>readPreferenceTags</literal>
|
|
no se sobrescribirán. El controlador recopilará conjuntos de etiquetas en el orden
|
|
en que aparecen en la cadena de consulta.
|
|
</para>
|
|
</note>
|
|
<warning>
|
|
<para>
|
|
¡Si el controlador no puede encontrar un conjunto de etiquetas coincidente, la lectura fallará!
|
|
Es su responsabilidad el proporcionar recursos adecuados, tales como un valor de
|
|
<literal>readPreferenceTags</literal> vacío para recurrir a "no tag set
|
|
preference".
|
|
</para>
|
|
</warning>
|
|
<para>
|
|
<example>
|
|
<title>Preferencias de lectura de URI de coneción con sintaxis de cadena de consulta</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
// Preferir el servidor más cercano sin preferencia de etiqueta
|
|
$uri = 'mongodb://rs1.example.com,rs2.example.com/';
|
|
$uri .= '?readPreference=nearest';
|
|
$m = new MongoClient($uri, array('replicaSet' => 'rs'));
|
|
|
|
// Elegir el servidor más cercano en el centro de datos "east"
|
|
$uri = 'mongodb://rs1.example.com,rs2.example.com/';
|
|
$uri .= '?readPreference=nearest';
|
|
$uri .= '&readPreferenceTags=dc:east';
|
|
$m = new MongoClient($uri, array('replicaSet' => 'rs'));
|
|
|
|
// Preferir el servidor más cercano del centro de datos "east" también usado para información,
|
|
// pero recurrir a un servidor en el centro de datos "west"
|
|
$uri = 'mongodb://rs1.example.com,rs2.example.com/';
|
|
$uri .= '?readPreference=nearest';
|
|
$uri .= '&readPreferenceTags=dc:east,use:reporting';
|
|
$uri .= '&readPreferenceTags=dc:west';
|
|
$m = new MongoClient($uri, array('replicaSet' => 'rs'));
|
|
|
|
// Preferir el servidor más cercano del centro de datos "east", luego un servidor del
|
|
// centro de datos "west", y finalmente recurrir a preferencia sin conjunto de etiquetas
|
|
$uri = 'mongodb://rs1.example.com,rs2.example.com/';
|
|
$uri .= '?readPreference=nearest';
|
|
$uri .= '&readPreferenceTags=dc:east';
|
|
$uri .= '&readPreferenceTags=dc:west';
|
|
$uri .= '&readPreferenceTags=';
|
|
$m = new MongoClient($uri, array('replicaSet' => 'rs'));
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Establecer las preferencias de lectura con sintaxis de array para conjuntos de etiquetas</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
$m = new MongoClient('mongodb://rs1.example.com,rs2.example.com', array(
|
|
'replicaSet' => 'rs',
|
|
));
|
|
|
|
// Preferir el servidor más cercano sin preferencia de etiqueta
|
|
$m->setReadPreference(MongoClient::RP_NEAREST, array());
|
|
|
|
// Elegir el servidor más cercano en el centro de datos "east"
|
|
$m->setReadPreference(MongoClient::RP_NEAREST, array(
|
|
array('dc' => 'east'),
|
|
));
|
|
|
|
// Preferir el servidor más cercano del centro de datos "east" también usado para información,
|
|
// pero recurrir a un servidor en el centro de datos "west"
|
|
$m->setReadPreference(MongoClient::RP_NEAREST, array(
|
|
array('dc' => 'east', 'use' => 'reporting'),
|
|
array('dc' => 'west'),
|
|
));
|
|
|
|
// Preferir el servidor más cercano del centro de datos "east", luego un servidor del
|
|
// centro de datos "west", y finalmente recurrir a preferencia sin conjunto de etiquetas
|
|
$m->setReadPreference(MongoClient::RP_NEAREST, array(
|
|
array('dc' => 'east'),
|
|
array('dc' => 'west'),
|
|
array(),
|
|
));
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
</simplesect>
|
|
</chapter>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|
|
|