## Comparación de los plugins mysqlnd con proxy MySQL

Los plugins `Mysqlnd` 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 `mysqlnd` son específicos para las aplicaciones PHP.

Como una extensión PHP, un plugin `mysqlnd` 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.

El despliegue de un proxy MySQL en un servidor de aplicaciones tiene 2 ventajas:

1. No hay un único punto de fallo
2. Fácil de escalar (escalado horizontal, escalado por el cliente)

Un proxy MySQL (y los plugins `mysqlnd`) puede resolver problemas fácilmente, que de otro modo habrían requerido modificaciones a las aplicaciones existentes.

Sin embargo, un proxy MySQL tiene algunos inconvenientes:

- Un proxy MySQL es un nuevo componente, una nueva tecnología a aplicar al maestro y desplegar.
- Un proxy MySQL requiere el conocimiento del lenguaje de script Lua.

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 `mysqlnd` puede ser escrito en C. También es posible escribir un plugin en PHP utilizando » PECL/mysqlnd_uh.

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 `mysqlnd` 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 `mysqlnd` 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.

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.

Los plugins `Mysqlnd` funcionan por encima de la API C, reflejando así las APIs cliente `libmysqlclient`. 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.

`Mysqlnd` 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.

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 `mysqlnd` es implementado utilizando la API C, todos los cambios posteriores a la capa física no requerirán modificaciones al plugin en sí.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open