API do plugin do Driver Nativo MySQL

Table of Contents

A API de plugin do Driver Nativo MySQL é um recurso do Driver Nativo MySQL, ou mysqlnd. Os plugins Mysqlnd operam na camada entre os aplicativos PHP e o servidor MySQL. Isso é comparável ao Proxy MySQL. O Proxy MySQL opera em uma camada entre qualquer aplicativo cliente MySQL, por exemplo, um aplicativo PHP e o servidor MySQL. Os plugins Mysqlnd podem realizar tarefas típicas do Proxy MySQL, como balanceamento de carga, monitoramento e otimizações de desempenho. Devido à arquitetura e localização diferentes, os plugins mysqlnd não apresentam algumas das desvantagens do Proxy MySQL. Por exemplo, com plugins, não há um ponto único de falha, nenhum servidor proxy dedicado para se implantar e nenhuma nova linguagem de programação para aprender (Lua).

Um plugin mysqlnd pode ser pensado como uma extensão do mysqlnd. Plugins podem interceptar a maioria das funções do mysqlnd. As funções mysqlnd são chamadas pelas extensões PHP MySQL como ext/mysql, ext/mysqli e PDO_MYSQL. Como resultado, é possível para um plugin mysqlnd interceptar todas as chamadas feitas para essas extensões a partir da aplicação cliente.

Chamadas internas de função mysqlnd também podem ser interceptadas ou substituídas. Não há restrições na manipulação de tabelas de funções internas do mysqlnd. É possível configurar as coisas para que quando certas funções mysqlnd sejam chamadas pelas extensões que usam mysqlnd, a chamada seja direcionada para a função apropriada no plugin mysqlnd. A capacidade de manipular tabelas de funções internas do mysqlnd desta forma permite máxima flexibilidade para plugins.

Plugins Mysqlnd são na verdade extensões PHP, escritas em C, que usam a API do plugin mysqlnd (que está embutida no Driver Nativo MySQL, mysqlnd) . Os plugins podem ser 100% transparentes para aplicações PHP. Nenhuma alteração na aplicação é necessária porque os plugins operam em uma camada diferente. O plugin mysqlnd pode ser pensado como operando em uma camada abaixo do mysqlnd.

A lista a seguir representa algumas aplicações possíveis de plugins mysqlnd.

  • Balanceamento de Carga

    • Divisão de leitura/gravação. Um exemplo disso é a extensão PECL/mysqlnd_ms (Master Slave). Esta extensão divide consultas de leitura/gravação para uma configuração de replicação.

    • Failover

    • Round-Robin, menos carregado

  • Monitoramento

    • Registro de Consultas

    • Análise de Consultas

    • Auditoria de Consultas. Um exemplo disso é a extensão PECL/mysqlnd_sip (Proteção Contra Injeção SQL). Esta extensão inspeciona consultas e executa apenas aquelas permitidas de acordo com um conjunto de regras.

  • Desempenho

    • Cache. Um exemplo disso é a extensão PECL/mysqlnd_qc (Cache de Consultas).

    • Redução de velocidade

    • Fragmentação. Um exemplo disso é a extensão PECL/mysqlnd_mc (Multi Conecão). Esta extensão tentará dividir uma instrução SELECT em n partes, usando SELECT ... LIMIT part_1, SELECT LIMIT part_n. Ele envia as consultas para servidores MySQL distintos e mescla o resultado no cliente.

Driver Nativo MySQL Plugins Available

Existem vários plug-ins do mysqlnd já disponíveis. Esses incluem:

  • PECL/mysqlnd_mc - plugin Multi Conexão.

  • PECL/mysqlnd_ms - plugin Master Slave.

  • PECL/mysqlnd_qc - plugin Query Cache.

  • PECL/mysqlnd_pscache - plugin de Cache de Manipulador de Instruções Preparadas.

  • PECL/mysqlnd_sip - plugin de Proteção Contra Injeção SQL.

  • PECL/mysqlnd_uh - plugin de Manipulador de Usuário.