Los complementos de mysqlnd
y el Proxy de MySQL son diferentes
tecnologías que utilizan diferentes enfoques. Ambos son herramientas válidas para
resolver una variedad de tareas comunes tales como el equilibrio de carga, monitorización,
y mejoras en el rendimiento. Una diferencia importante es que el Proxy de
MySQL funciona con todos los clientes de MySQL, mientras que los
complementos de mysqlnd
son específicos de aplicaciones de PHP.
Al igual que una Extensión de PHP, un complemento de mysqlnd
se
instala en el servidor de aplicaciones de PHP, junto con el resto de PHP.
El Proxy de MySQL puede ejecutarse sobre el servidor de aplicaciones de PHP o ser
instalado en una máquina dedicada para manejar múltiples servidores de aplicaciones
de PHP.
El despliegue del Proxy de MySQL sobre un servidor de aplicaciones tiene dos ventajas:
No tiene un único punto de fallo
Fácil escalabilidad (escalabilidad horizontal, escalabilidad por cliente)
El Proxy de MySQL (y los complementos de mysqlnd
) pueden resolver
problemas fácilmente que de otro modo requerirían cambios en las
aplicaciones existentes.
Sin embargo, el Proxy de MySQL tiene algunas desventajas:
El Proxy de MySQL es un componente y una tecnología nuevos que son necesarios llegar a dominar y desplegar.
El Proxy de MySQL requiere conocimientos del lenguaje de scripts Lua.
El Proxy de MySQL puede ser personalizado con programación en C y Lua. Lua es el
lenguaje de scripts preferido del Proxy de MySQL. Para la mayoría de los expertos en PHP, Lua
es un nuevo lenguaje que aprender. Un complemento de mysqlnd
puede
ser escrito en C. También es posible escribir complementos en PHP usando
» PECL/mysqlnd_uh.
El Proxy de MySQL se ejecuta como un demonio - un proceso en segundo plano. El Proxy de MySQL puede
recordar decisiones anteriores, ya que todos los estados pueden ser guardados. Sin embargo, un
complemento de mysqlnd
está vinculado al ciclo de vida basado en
peticiones de PHP. El Proxy de MySQL también comparte resultados computados una única
vez entre múltiples servidores de aplicaciones. Un
complemento de mysqlnd
necesitaría almacenar los datos en un
medio persistente para poder hacer esto. Sería necesario otro demonio
para este propósito, tal como Memcache. Esto otorga al Proxy de MySQL una
ventaja en este caso.
El Proxy de MySQL funciona en lo más alto del protocolo de cable. Con el Proxy de MySQL se ha de analizar y usar ingenierá inversa con el Protocolo Cliente Servidor de MySQL. Las acciones están limitadas a aquellas que pueden realizarse manipulando el protocolo de comunicación. Si el protocolo de calbe cambia (lo que ocurre muy raramente), los scripts del Proxy de MySQL necesitarían cambiarse también.
Los complementos de Mysqlnd
funcionan en lo más alto de la API en C, la cual
refleja el cliente libmysqlclient
y las APIs Connector/C.
ESta API en C es básicamente una envoltura sobre el protocolo Cliente Servidor de
MySQL, o protocolo de cable, como es llamado a veces. Se pueden
interceptar todas las llamadas a la API en C. PHP hace uso de la API en C, por lo que se
pueden enganchar todas las llamadas de PHP, sin necesidad de programar en el nivel del
protocolo de cable.
Mysqlnd
implementa el protocolo de cable. Los complementos pueden,
por lo tanto, analizar, usar ingeniería inversa, manipular e incluso reemplazar el
protocolo de comunicación. Sin embargo, esto normalmente no es necesario.
Ya que los complementos permiten crear implementaciones que utilizan dos niveles (la API
en C y el protocolo de cable), tienen más flexibilidad que el Proxy de
MySQL. Si un complemento de mysqlnd
es implementado usando
la API en C, cualquier cambio subsiguiente al protocolo de cable no requerirá
cambios en el complemento en sí.