La API del plugin del controlador nativo MySQL es una funcionalidad
del controlador nativo MySQL, o mysqlnd
.
El plugin Mysqlnd
opera en la capa entre
las aplicaciones PHP y el servidor MySQL. Es comparable
a un proxy MySQL. Un proxy MySQL opera en una capa entre todas
las aplicaciones cliente MySQL, por ejemplo, una aplicación PHP
y un servidor MySQL. El plugin Mysqlnd
puede realizar tareas típicas de proxy MySQL como
el equilibrio de carga, así como el seguimiento y la optimización
de las prestaciones. Debido a una arquitectura y una localización
diferente, el plugin mysqlnd
no tiene todos los
inconvenientes de un proxy MySQL. Por ejemplo, con el plugin, no
hay un único punto de fallo, no hay un servidor proxy dedicado
que desplegar, y no hay un nuevo lenguaje que aprender (Lua).
Un plugin mysqlnd
puede ejecutarse como una extensión
a mysqlnd
. Un plugin puede interceptar la mayoría de
las funciones mysqlnd
. Las funciones mysqlnd
son llamadas por la extensión PHP MySQL como
ext/mysql
, ext/mysqli
, y
PDO_MYSQL
. Como resultado, es posible para un
plugin mysqlnd
interceptar todas las llamadas realizadas
por estas extensiones desde una aplicación cliente.
Las llamadas a las funciones internas mysqlnd
pueden
también ser interceptadas o reemplazadas. No hay ninguna restricción
sobre la manipulación de las tablas de funciones internas mysqlnd
.
Es posible definir acciones para que cuando
ciertas funciones mysqlnd
sean llamadas
por la extensión que utiliza mysqlnd
, la llamada
sea redirigida hacia la función apropiada del plugin
mysqlnd
. La posibilidad de manipular las tablas
de funciones internas mysqlnd
de este modo permite
un máximo de flexibilidad.
El plugin Mysqlnd
es, en realidad, una extensión PHP,
escrita en C, que utiliza la API del plugin mysqlnd
(que está compilada en el controlador nativo MySQL, mysqlnd
).
El plugin puede ser 100% transparente para las aplicaciones PHP. No se requiere
ninguna modificación a las aplicaciones ya que el plugin opera
en una capa diferente. El plugin mysqlnd
puede ser utilizado en una capa por debajo de mysqlnd
.
La lista siguiente representa algunas aplicaciones posibles
del plugin mysqlnd
.
El equilibrio de carga.
Separación de lecturas y escrituras. Un ejemplo de esta funcionalidad es la extensión PECL/mysqlnd_ms (Maestro/esclavo). Esta extensión separa las consultas de lectura y escritura para una configuración de replicación.
Conmutación por error
Round-Robin, el menos cargado
Supervisión
Registro de consultas
Análisis de consultas
Auditoría de consultas. Un ejemplo de esto es la extensión PECL/mysqlnd_sip (Protección contra Inyección SQL). Esta extensión inspecciona las consultas y ejecuta únicamente aquellas que son permitidas siguiendo conjuntos de reglas.
Rendimiento
La caché. Un ejemplo de esto es la extensión PECL/mysqlnd_qc (Query Cache).
Limitación
Fragmentación. Un ejemplo de esto es la extensión PECL/mysqlnd_mc (Multi Connect). Esta extensión intenta separar una consulta SELECT en n partes, utilizando consultas del tipo SELECT ... LIMIT part_1, SELECT LIMIT part_n. La extensión envía las consultas a servidores MySQL distintos y luego fusiona el resultado hacia el cliente.
Plugins del controlador nativo MySQL disponibles
Ya hay varios plugins mysqlnd disponibles.
PECL/mysqlnd_mc - Plugin Multi Conexión.
PECL/mysqlnd_ms - Plugin Maestro Esclavo.
PECL/mysqlnd_qc - Plugin de caché de consultas.
PECL/mysqlnd_pscache - Plugin de caché de gestor de consultas preparadas.
PECL/mysqlnd_sip - Plugin que permite la protección contra inyecciones SQL.
PECL/mysqlnd_uh - Plugin de gestor de usuarios.