Como funciona a engine do MySQL Federated?

porLuis Augusto Moretto

Como funciona a engine do MySQL Federated?

MySQL Federated: O que é afinal?

A engine de armazenamento do MySQL Federated,  é um mecanismo de armazenamento que permite ao usuário criar uma tabela que seja uma representação local de uma tabela externa (remota).

Ele utiliza a API da biblioteca cliente MySQL como um transporte de dados, tratando a origem de dados remotos da mesma forma que outros mecanismos de armazenamento tratam fontes de dados locais, sejam arquivos MYD (MyISAM), memória (Cluster, Heap) ou tablespace (InnoDB).

Cada tabela Federada definida lá é uma .frm. Os dados reais podem existir em uma instância MySQL local ou remota.

Quando usar a engine nas tables do Mysql?

Quando a gravação de dados em uma determinada tabela exceder a capacidade da instância local do MySQL  em disco, o MySQL desenvolveu o mecanismo de armazenamento FEDERATED.

Com a engine as gravações em uma determinada tabela podem ser enviadas pela rede para uma segunda instância do MySQL.

Dessa forma, é possível escalar suas gravações em vários servidores MySQL, sem precisar codificar seus aplicativos para se conectarem a vários servidores.

Há muitos problemas com o mecanismo de armazenamento FEDERATED. Ele foi criado para ser um proxy para gravações em uma tabela, mas não para servir como um front-end mágico para todos os tipos de consultas SELECT.

Há muitos problemas não resolvidos com o acesso a consultas remotas por meio da interface FEDERATED.

Exemplo de uso

CREATE TABLE `T1`(`A` VARCHAR(100),UNIQUE KEY(`A`(30))) ENGINE=FEDERATED
  CONNECTION='MYSQL://usuario:senha@127.0.0.1:3306/DATABASE/TABELA_REMOTA';

 

Limitações da Engine Mysql Federated

A seguir indicamos os recursos que a engine Mysql FEDERATED possui e não suporta:

  • O servidor remoto deve ser um servidor MySQL.
  • A tabela remota referenciada deve existir antes de você tentar acessar a tabela através da tabela FEDERATED.
  • É possível que uma tabela FEDERATED aponte para outra, mas você deve ter cuidado para não criar um loop.
  • Não há suporte para transações.
  • O acesso aos dados da tabela é tratado remotamente, na verdade é a tabela remota que faz uso de índices.
  • Uma consulta requer uma verificação completa da tabela, o servidor busca todas as linhas da tabela remota e as filtra localmente.
  • Consultas que não conseguem usar índices podem, portanto, causar baixo desempenho e sobrecarga de rede.
  • Além disso, como as linhas retornadas devem ser armazenadas na memória, essa consulta também pode levar o servidor local à interrupção.