Anuncios

Bienvenidos sean a este post, hoy como unir tablas similares de este motor.

Anuncios
Anuncios

Este motor posee un tipo de tabla muy util llamado TBL ya que representa una coleccion de tablas identicas, o muy similares, como una coleccion puede ser consultada como si fuese una tabla sola, por eso si usamos el tipo de tabla MYSQL nos permitira que TBL implemente una forma simple de fragmentacion de datos en un monton de servidores, es posible definir un conjunto local de tablas CONNECT las cuales estan enlazadas a muchas tablas diseminadas en muchos equipos remotos, por lo tanto una tabla TBL puede ser creada en tales tablas MYSQL y todos los queries hechos contra las tablas TBL seran enviados a las tablas MYSQL y los datos seran recuperados de los equipos remotos relevantes.

Anuncios

Tengamos en cuenta que TBL tiene una limitacion muy importante, son solamente de lectura, haciendo que todos los datos de las tablas subyacentes no pueden ser modificados atraves de TBL, lo cual hace inutil en algunas circunstancias, sin embargo puede ser una buena opcion cuando queremos fragmentar datos de solo lectura a traves de muchos servidores de mariadb, la sintaxis para crear a TBL es la siguiente:

CREATE TABLE <nombre_tabla>
  ENGINE = CONNECT,
  TABLE_TYPE = TBL,
  TABLE_LIST = '<lista_tablas>';
Anuncios
Anuncios

La variable lista_tablas es una lista separada por comas de nombre de tablas de tipo CONNECT, de manera opcional podemos especificarla como nombre_base.nombre_tabla pero si lo omitimos se asume que la tabla TBL esta en la misma base que las otras tablas, tecnicamente una tabla TBL puede ser ensambladas con tablas CONNECT pero estara indirectamente enlazados a tablas de otros motores, esto sucede porque las tablas MYSQL creadas apuntan a estas y ensamblamos una tabla TBL sobre ellos, sin embargo aun sera mas rapido que conectarnos al servidor remoto dado que esta pensado para distribuir datos sobre multiples servidores incluyendo el local, por esta razon este motor nos permite resolver problema importante de performance que no pueden ser resueltos facilmente con otros motores tales como FEDERATEDX o SPIDER.

Anuncios

Vamos a suponer que trabajamos para una compañia que tiene muchas tiendas fisicas, cada tienda tiene su propia base, la cual contiene entre otros datos:

  • Productos almacenados
  • Categorias de productos
  • Transacciones recientes
Anuncios

Para este caso nos solicitan un query que devuelve la cantidad promedio de ventas telefonicas de la ultima semana en todas las tiendas, una forma seria hacer un JOIN entre estas tres tablas:

  • product_category
  • product
  • transaction
Anuncios

Sin embargo, este JOIN debe ser ejecutado separadamente por cada tienda, comparando las transacciones de una tienda con los productos de otra tienda que podria o no resultar en resultados erroneos, esto dependera de como esta diseñado nuestro sistema pero igualmente requerira de una gran cantidad de trafico de red y seria una forma muy lenta.

Anuncios
Anuncios

Para ejecutar un query JOIN en una tienda podemos crear una tabla CONNECT por cada tienda, esta tabla estara basada en ese query usando la opcion SRCDEF como veremos en un momento, tales tablas cuando son consultadas devolveran las asociaciones entre categorias, productos y transacciones para cada tienda, nuestro siguiente paso sera crear una tabla TBL arriba de estas tablas MYSQL y ejecutar un query que devuelve el promedio deseado, solo las filas relevantes seran enviadas desde la base de datos en las tiendas al servidor local de mariadb pero se puede usar una sintaxis especial para obtener el mismo resultado sin definir una nueva tabla CONNECT para cada servidor remoto, la opcion SRCDEF se puede especificar directamente en la definicion de la tabla TBL y se puede proveer una lista de servidores remotos en la opcion TABLE_LIST, veamos un ejemplo:

CREATE TABLE <table_name>
  ENGINE = CONNECT,
  TABLE_TYPE = TBL,
  SRCDEF = '<query>',
  TABLE_LIST = '<lista_servidores>';
Anuncios

En resumen, hoy hemos visto como unir tablas de tipo CONNECT por medio de TBL, hemos visto un ejemplo practico donde se podria utilizar este tipo de tabla especial, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50

Anuncio publicitario