Federated

FEDERATED
Información sobre la plantilla
100*100
Motor de almacenamiento de MySQL
LicenciaGNU
Sitio web
Sitio oficial de FEDERATED

Federated. Es un motor de almacenamiento que está disponible desde MySQL 5.0.3. permitiendo el acceso a datos en tablas de bases de datos remotas en lugar de tablas locales.

Descripción

Cuando se crea una tabla FEDERATED , el servidor crea un fichero de definición de tabla en el directorio de base de datos. El fichero comienza con el nombre de tabla y tiene extensión .frm No se crean más ficheros, ya que los datos reales están en la base de datos remota. Esto difiere de cómo funcionan los motores con tablas locales.

Para tablas de bases de datos locales, los ficheros de datos son locales. Por ejemplo, si crea una tabla MyISAM llamada users, el handler MyISAM crea un fichero de datos llamado users.MYD. Un handler para tablas locales lee, inserta, borra y actualiza datos en ficheros de datos locales, y los registros se guardan en un formato particular del handler. Para leer registros, el handler debe parsear los datos en columnas. Para escribir registros, los valores de la columna deben convertirse al formato de registro usado por el handler y escribirse en el fichero de datos local.

Con el motor MySQL FEDERATED no hay ficheros de datos locales para una tabla (por ejemplo, no hay fichero .MYD ). En su lugar, una base de datos remota almacena los datos que normalmente estarían en la tabla. Esto necesita el uso de la API del cliente MySQL para leer, borrar, actualizar e insertar datos. La recuperación de datos se inicia con un comando SELECT * FROM tbl_name . Para leer el resultado, los registros se tratan uno a uno usando la función de la API C mysql_fetch_row() y luego se convierten desde las columnas del conjunto de resultados SELECT al formato que el handler FEDERATED espera.

El flujo básico es el siguiente: 1. Llamadas SQL efectuadas localmente. 2. API del handler MySQL (datos en formato del handler). 3. API del cliente MySQL (datos convertidos a llamadas SQL). 4. Base de datos remota ( API del cliente MySQL). 5. Convierte el conjunto de resultados al formato del handler. 6. API del handler (registros resultado o conteo de registros afectados a local).

Cómo usar las tablas

El procedimiento para usar tablas FEDERATED es simple. Normalmente, se tienen dos servidores en ejecución en la misma máquina o en distintas.

  • Primero se debe crear una tabla en el servidor remoto que quiera acceder con la tabla FEDERATED .

Ejemplo:

CREATE TABLE test_table id int(20) NOT NULL auto_increment name varchar(32) NOT NULL default other int(20) NOT NULL default '0' Primary Key (id) KEY name (name), KEY other_key (other)


Engine MyISAM

DEFAULT CHARSET=latin1

  • Luego crear una tabla FEDERATED en el servidor local para acceder a la tabla remota:

CREATE TABLE federated_table id int(20) NOT NULL auto_increment name varchar(32) NOT NULL default other int(20) NOT NULL default '0' Primary Key (id) Key name (name) Key other_key (other)

ENGINE FEDERATED

Default Charset latin1 La estructura de esta tabla debe ser exactamente la misma que la de la tabla remota, excepto que la opción de tabla ENGINE debe ser FEDERATED y la opción de tabla COMMENT es una cadena de conexión que indica al motor FEDERATED cómo conectar al servidor remoto. El motor FEDERATED crea sólo el fichero test_table.frm en la base de datos federated . La información del equipo remoto indica el servidor remoto al que se conecta el servidor local, y la información de base de datos y tabla indica la tabla remota a usar como fichero de datos. En este ejemplo, el servidor remoto está indicado para ser remote_host corriendo en el puerto 9306.

La forma general de la cadena de conexión en la opción COMMENT es la siguiente: scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name Sólo se soporta mysql como scheme en este punto; la contraseña y el número de puerto son opcionales.

Limitaciones

  • En la primera versión, el servidor remoto debe ser un servidor MySQL. El soporte de FEDERATED para otros motores de bases de datos se añadirá en el futuro.
  • La tabla remota a la que apunta una tabla FEDERATED debe existir antes de intentar acceder a ella.
  • Es posible para una tabla FEDERATED apuntar a otra, pero hay que tener cuidado de no crear un bucle.
  • No hay soporte para transacciones.
  • No hay forma que el motor FEDERATED sepa si la tabla remota ha cambiado. La razón es que la tabla debe funcionar como un fichero de datos que nunca se escribirá para hacer algo distinto a la base de datos. La integridad de los datos en la tabla local debe comprobarse si hay algún cambio en la base de datos remota.
  • El motor FEDERATED soporta SELECT, INSERT, UPDATE, DELETE, e índices. No soporta ALTER TABLE, DROP TABLE, o cualquier otro comando Data Definition Language . La implementación actual no usa comandos preparados.
  • La implementación usa SELECT, INSERT, UPDATE, y DELETE, pero no HANDLER.
  • Las tablas FEDERATED no funcionan con la caché de consultas.

Fuente