La API de Complementos del Controlador Nativo de MySQL es una característica del Controlador
Nativo de MySQL, o mysqlnd
. Los complementos de
mysqlnd
operan en la capa que hay entre las aplicaciones de PHP y el
servidor MySQL. Es comparable al Proxy de MySQL. El Proxy de MySQL opera sobre una
capa entre cualquier aplicación cliente de MySQL, por ejemplo, una aplicación
de PHP, y el servidor de MySQL. Los complementos de mysqlnd
can undertake typical MySQL Proxy tasks such as load balancing,
monitorizan y optimizan el rendimiento. A causa de la arquitectura
y ubicación diferentes, los complementos de mysqlnd
no
tienen algunas de las desventajas del Proxy de MySQL. Por ejemplo, con los complementos
no existe un único punto de fallo, ni un servidor proxy para el
despliegue, y no hace falta aprender un nuevo lenguaje de programación (Lua).
Se puede pensar en un complemento de mysqlnd
como una extensión
de mysqlnd
. Los complementos pueden interceptar la mayoría de las
funciones de mysqlnd
. Las funciones de
mysqlnd
son llamadas por las extensiones de MySQl de PHP, como
ext/mysql
, ext/mysqli
, y
PDO_MYSQL
. Como resultado, es posible que un complemento de
mysqlnd
intercepte todas las llamadas hechas a estas
extensiones desde la apliacación cliente.
Las llamadas a funciones internas de mysqlnd
también pueden ser
interceptadas o reemplazadas. No existen restricciones en la manipulación
de tablas de funciones internas de mysqlnd
. Es posible
configurar cosas, y así cuando ciertas funciones de
mysqlnd
son llamadas por extensiones que utilizan
mysqlnd
, la llamada es dirigida a la función
apropiada del complemento de mysqlnd
. La capacidad de
manipular tablas de funciones internas de mysqlnd
de esta manera
permite una flexibilidad máxima para los complementos.
Los complementos de mysqlnd
son de hecho Extensiones de PHP, escritos
en C, que utilizan la API de complementos de mysqlnd
(la cual está
construida dentro del Controlador Nativo de MySQL, mysqlnd
). Los complementos
se pueden hacer 100% transparentes a las aplicaciones de PHP. No es necesario hacer ningún
cambio a las aplicaciones ya que los complementos operan en una capa diferente. Se puede
pensar en los complementos de mysqlnd
como en una operación en una
capa por debajo de mysqlnd
.
La siguiente lista representa algunas aplicaciones posibles de los
complementos de mysqlnd
.
Equilibrio de Carga
División de Lectura/Escritura. Un ejemplo de esto es la extensión PECL/mysqlnd_ms (Maestro Esclavo). Esta extensión divide las consultas de lectura/escritura para una configuración de réplica.
Tolerancia a fallos
Rotación de servidores para evitar la sobrecarga ("Round-Robin")
Monitorización
Registro de Consultas
Análisis de Consultas
Audición de Consultas. Un ejemplo de esto es la extensión PECL/mysqlnd_sip (Protección contra la Inyección SQL). Esta extensión inspecciona las consultas y ejecuta únicamente aquellas que están permitidas según un cojunto de reglas.
Rendimiento
Almacenamiento en Caché. Un ejemplo de esto es la extenión PECL/mysqlnd_qc (Caché de Consultas).
Estrangulamiento ("Throttling")
Fragmentación. Un ejemplo de esto es la extensión PECL/mysqlnd_mc (Multiconexión). Esta extensión intentará dividir una sentencia SELECT en n partes, usando SELECT ... LIMIT parte_1, SELECT LIMIT parte_n. Envía las consultas a diferentes servidores MySQL y combina el resultado en el cliente.
Complementos del Controlador Nativo de MySQL disponibles
Hay varios complementos de mysqlnd ya disponibles. Estos incluyen:
PECL/mysqlnd_mc - Complemento de Multiconexión.
PECL/mysqlnd_ms - Complemento Maestro Esclavo.
PECL/mysqlnd_qc - Complemento de Caché de Consultas.
PECL/mysqlnd_pscache - Complemento de Caché de Gestores de Sentencias Preparadas.
PECL/mysqlnd_sip - Complemento de Protección contra Inyección SQL.
PECL/mysqlnd_uh - Complemento de Gestor de Usuarios.