<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/mysqlnd.plugin.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'mysqlnd.plugin.mysql-proxy.php',
    1 => 'Comparaci&oacute;n de los plugins mysqlnd con proxy MySQL',
    2 => 'Comparaci&oacute;n de los plugins mysqlnd con proxy MySQL',
  ),
  'up' => 
  array (
    0 => 'mysqlnd.plugin.php',
    1 => 'API del plugin del controlador nativo MySQL',
  ),
  'prev' => 
  array (
    0 => 'mysqlnd.plugin.php',
    1 => 'API del plugin del controlador nativo MySQL',
  ),
  'next' => 
  array (
    0 => 'mysqlnd.plugin.obtaining.php',
    1 => 'Obtener la API del plugin mysqlnd',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/mysqlnd/plugin.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="mysqlnd.plugin.mysql-proxy" class="section">
  <h2 class="title">Comparación de los plugins mysqlnd con proxy MySQL</h2>
  <p class="simpara">
   Los plugins <code class="literal">Mysqlnd</code> y el proxy MySQL son
   tecnologías diferentes que utilizan diferentes enfoques.
   Ambos son herramientas válidas para resolver muchas
   tareas clásicas, como el equilibrio de carga, la supervisión,
   y la mejora de las prestaciones. Una diferencia importante es
   que el proxy MySQL funciona con todos los clientes MySQL mientras que
   los plugins <code class="literal">mysqlnd</code> son específicos para
   las aplicaciones PHP.
  </p>
  <p class="simpara">
   Como una extensión PHP, un plugin <code class="literal">mysqlnd</code>
   debe ser instalado en el servidor de aplicaciones PHP, además del
   resto de PHP. Un proxy MySQL puede funcionar tanto en el servidor
   de aplicaciones PHP como ser instalado en una máquina dedicada para
   gestionar varios servidores de aplicaciones PHP.
  </p>
  <p class="simpara">
   El despliegue de un proxy MySQL en un servidor de aplicaciones
   tiene 2 ventajas:
  </p>
  <ol type="1">
   <li class="listitem">
    <span class="simpara">
     No hay un único punto de fallo
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Fácil de escalar (escalado horizontal,
     escalado por el cliente)
    </span>
   </li>
  </ol>
  <p class="simpara">
   Un proxy MySQL (y los plugins <code class="literal">mysqlnd</code>) puede
   resolver problemas fácilmente, que de otro modo habrían requerido
   modificaciones a las aplicaciones existentes.
  </p>
  <p class="simpara">
   Sin embargo, un proxy MySQL tiene algunos inconvenientes:
  </p>
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     Un proxy MySQL es un nuevo componente, una nueva tecnología a
     aplicar al maestro y desplegar.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Un proxy MySQL requiere el conocimiento del lenguaje de script Lua.
    </span>
   </li>
  </ul>
  <p class="simpara">
   Un proxy MySQL puede ser personalizado utilizando los lenguajes de
   programación C y Lua. Lua es el lenguaje preferido para un proxy MySQL.
   Para la mayoría de los expertos PHP, Lua es un nuevo lenguaje a aprender.
   Un plugin <code class="literal">mysqlnd</code> puede ser escrito en C. También
   es posible escribir un plugin en PHP utilizando
   <a href="https://pecl.php.net/package/mysqlnd_uh" class="link external">&raquo;&nbsp;PECL/mysqlnd_uh</a>.
  </p>
  <p class="simpara">
   Un proxy MySQL funciona como un demonio - un proceso en segundo plano.
   Un proxy MySQL puede recordar decisiones tomadas anteriormente,
   ya que todos los estados pueden ser conservados. Sin embargo, un plugin
   <code class="literal">mysqlnd</code> está ligado al ciclo de vida de una consulta PHP.
   Un proxy MySQL puede compartir también resultados calculados una sola vez
   entre varios servidores de aplicaciones. Un plugin <code class="literal">mysqlnd</code>
   puede necesitar almacenar datos en un medio persistente.
   Otro demonio puede ser utilizado con este propósito, como por ejemplo,
   Memcache. Este mecanismo da una ventaja al proxy MySQL.
  </p>
  <p class="simpara">
   Un proxy MySQL funciona por encima de la capa física. Con un
   proxy MySQL, debe analizar y realizar ingeniería inversa
   del protocolo cliente-servidor MySQL. Las acciones están limitadas a las
   que pueden ser realizadas mediante la manipulación del protocolo
   de comunicación. Si la capa física cambia (lo que ocurre muy raramente),
   los scripts del proxy MySQL pueden necesitar ser adaptados.
  </p>
  <p class="simpara">
   Los plugins <code class="literal">Mysqlnd</code> funcionan por encima de la API C,
   reflejando así las APIs cliente <code class="literal">libmysqlclient</code>.
   Esta API C es esencialmente una envoltura del protocolo Servidor Cliente MySQL,
   o de la capa física, ya que es llamada algunas veces. Puede
   interceptar todas las llamadas a la API C. PHP utiliza la API C, sin embargo,
   puede conectar todas las llamadas PHP, sin necesidad de programar
   a nivel de la capa física.
  </p>
  <p class="simpara">
   <code class="literal">Mysqlnd</code> implementa la capa física. Los plugins
   pueden analizar, realizar ingeniería inversa, manipular
   y siempre reemplazar el protocolo de comunicación. Sin embargo, esto no es
   generalmente necesario.
  </p>
  <p class="simpara">
   Dado que los plugins permiten crear implementaciones que
   utilizan los 2 niveles (API C y capa física), tienen más flexibilidad
   que el proxy MySQL. Si un plugin <code class="literal">mysqlnd</code> es implementado
   utilizando la API C, todos los cambios posteriores a la capa
   física no requerirán modificaciones al plugin en sí.
  </p>
 </div><?php manual_footer($setup); ?>