<?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 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'mysqlnd.plugin.mysql-proxy.php',
    1 => 'Uma compara&ccedil;&atilde;o de plugins mysqlnd com Proxy MySQL',
    2 => 'Uma compara&ccedil;&atilde;o de plugins mysqlnd com Proxy MySQL',
  ),
  'up' => 
  array (
    0 => 'mysqlnd.plugin.php',
    1 => 'API do plugin do Driver Nativo MySQL',
  ),
  'prev' => 
  array (
    0 => 'mysqlnd.plugin.php',
    1 => 'API do plugin do Driver Nativo MySQL',
  ),
  'next' => 
  array (
    0 => 'mysqlnd.plugin.obtaining.php',
    1 => 'Obtendo a API do plugin mysqlnd',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    '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">Uma comparação de plugins mysqlnd com Proxy MySQL</h2>
  <p class="simpara">
   Plugins <code class="literal">Mysqlnd</code> e Proxy MySQL são tecnologias
   diferentes que usam abordagens diferentes. Ambas são ferramentas válidas para
   resolver uma variedade de tarefas comuns, como balanceamento de carga, monitoramento
   e melhorias de desempenho. Uma diferença importante é que o Proxy
   MySQL funciona com todos os clientes MySQL, enquanto
   os plugins <code class="literal">mysqlnd</code> são específicos para aplicações PHP.
  </p>
  <p class="simpara">
   Como uma extensão PHP, um plugin <code class="literal">mysqlnd</code> é
   instalado no servidor de aplicativos PHP, junto com o restante do PHP.
   O Proxy MySQL pode ser executado no servidor de aplicativos PHP ou pode ser
   instalado em uma máquina dedicada para lidar com vários servidores de aplicações
   PHP.
  </p>
  <p class="simpara">
   A implantação do Proxy MySQL no servidor de aplicativos tem duas vantagens:
  </p>
  <ol type="1">
   <li class="listitem">
    <span class="simpara">
     Nenhum ponto único de falha
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Fácil de escalonar horizontalmente (escalonar por cliente)
    </span>
   </li>
  </ol>
  <p class="simpara">
   O proxy MySQL (e os plugins <code class="literal">mysqlnd</code>) podem resolver
   facilmente problemas que de outra forma exigiriam alterações em
   aplicações existentes.
  </p>
  <p class="simpara">
   No entanto, o Proxy MySQL tem algumas desvantagens:
  </p>
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     Proxy MySQL é um novo componente e uma nova tecnologia para dominar e implantar.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     O Proxy MySQL requer conhecimento da linguagem de script Lua.
    </span>
   </li>
  </ul>
  <p class="simpara">
   O proxy MySQL pode ser customizado com programação C e Lua. Lua é a
   linguagem de script preferida do Proxy MySQL. Para a maioria dos especialistas em PHP, Lua
   é uma nova linguagem para se aprender. Um plugin <code class="literal">mysqlnd</code> pode
   ser escrito em C. Também é possível escrever plugins em PHP usando
   <a href="https://pecl.php.net/package/mysqlnd_uh" class="link external">&raquo;&nbsp;PECL/mysqlnd_uh</a>.
  </p>
  <p class="simpara">
   O proxy MySQL é executado como um daemon - um processo em segundo plano. O proxy MySQL pode
   recuperar decisões anteriores, pois todo o estado pode ser retido. Entretanto, um
   plugin <code class="literal">mysqlnd</code> está vinculado ao ciclo de vida baseado em
   solicitações do PHP. O Proxy MySQL também pode compartilhar resultados computados
   únicos entre vários servidores de aplicativos. Um
   plugin <code class="literal">mysqlnd</code> precisaria armazenar dados em um
   meio persistente para poder fazer isso. Outro daemon precisaria ser
   usado para essa finalidade, como o Memcache. Isso dá ao Proxy MySQL uma
   vantagem neste caso.
  </p>
  <p class="simpara">
   O proxy MySQL funciona sobre o protocolo de fio. Com o Proxy MySQL é
   necessário analisar e fazer engenharia reversa do protocolo MySQL Client Server.
   As ações são limitadas àquelas que podem ser alcançadas através da manipulação do
   protocolo de comunicação. Se o protocolo de fio for alterado (o que acontece
   muito raramente), os scripts do proxy MySQL também precisarão ser alterados.
  </p>
  <p class="simpara">
   Os plugins <code class="literal">Mysqlnd</code> funcionam sobre a API C, que
   espelha o cliente <code class="literal">libmysqlclient</code>.
   Esta API C é basicamente um encapsulador em torno do protocolo clienten-servidor
   MySQL, ou protocolo de fio, como às vezes é chamado. Pode-se
   interceptar todas as chamadas da API C. O PHP faz uso da API C, portanto
   pode-se conectar todas as chamadas PHP, sem a necessidade de programar
   no nível do protocolo de fio.
  </p>
  <p class="simpara">
   <code class="literal">Mysqlnd</code> implementa o protocolo de fio. Os plugins podem,
   portanto, analisar, fazer engenharia reversa, manipular e até mesmo substituir o
   protocolo de comunicação. No entanto, isso geralmente não é necessário.
  </p>
  <p class="simpara">
   Como os plugins permitem criar implementações que utilizam dois níveis (API
   C e protocolo de fio), eles têm maior flexibilidade que o Proxy
   MySQL. Se um plugin <code class="literal">mysqlnd</code> for implementado usando
   a API C, quaisquer alterações subsequentes no protocolo de fio não requerem
   alterações no próprio plugin.
  </p>
 </div><?php manual_footer($setup); ?>