Cuando 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 via un comando SELECT * FROM
. Para leer el
resultado, los registros se tratan uno a uno usando la función
de la API C tbl_name
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:
Llamadas SQL efectuadas localmente
API del handler MySQL (datos en formato del handler )
API del cliente MySQL (datos convertidos a llamadas SQL )
Base de datos remota -> API del cliente MySQL
Convierte el conjunto de resultados al formato del handler
API del handler -> registros resultado o conteo de registros afectados a local
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.