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:
No hay un único punto de fallo
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í.