Professional Documents
Culture Documents
Los servidores de bases de datos IBM Informix le permiten consultar ms de una base de datos del mismo servidor de bases de datos o de varios servidores de bases de datos. Este tipo de consulta se denomina consulta distribuida. Los servidores de bases de datos pueden residir en un solo sistema principal, en distintos sistemas de la misma red o en una pasarela. (Engeneral, la mayor parte de caractersticas y restricciones descritas eneste captulo para las consultas distribuidas se aplican tambin allamadas de funciones y a las operaciones INSERT, DELETE o UPDATE que hacen referencia a objetos o datos de ms de unabase de datos.)
Para soportar las operaciones distribuidas entre varios servidores de bases de datos, los servidores de IBM Informix mantienen relaciones jerrquicas que constan de un coordinador y uno o ms participantes. El coordinador y participante se definen del modo siguiente: El coordinador dirige la resolucin de la consulta. Tambin decide si se debe confirmar o cancelar anormalmente la consulta. El participante dirige la ejecucin de la consulta distribuida sobre una rama. La rama es la parte de la consulta distribuida que sloimplica a ese servidor de bases de datos participante. Los siguientes ejemplos hacen referencia a un entorno devarios servidores en el que db es la base de datos local, db2 es una basede datos externa que reside en el mismo servidor y master_db es una basede datos externa del servidor remoto new_york. Los siguientes ejemplos muestran una consulta que se puede utilizarpara acceder a datos de otro servidor utilizando la base de datos db comocoordinador.
database db; select col1, col2 from db2:tab1, master_db@newyork:tab2;
Una sesin slo tendr una base de datos local, pero puede abrir variasbases de datos externas. Las consultas distribuidas siempre se debenoriginar en un coordinador.
Aqu, una tabla puede ser un nombre de tabla, un nombre de vista o un sinnimo. Tiene la opcin de especificar el propietario de la tabla. Para conocer las opciones de sintaxis completas, consulte la documentacin de los segmentos de base de datos y objeto de base de datos de la publicacin IBM Informix Guide to SQL: Syntax.
El siguiente ejemplo muestra una consulta que accede a una tabla remota:
DATABASE locdb; SELECT l.name, r.assignment FROM rdb@rsys:rtab r, loctab l WHERE l.empid = r.empid;
Esta consulta accede a las columnas name y empid de la tabla local loctab, y a las columnas assignment y empid de la tabla remota rtab. Los datos se enlazan utilizando empid como columna de enlace. El siguiente ejemplo muestra una consulta que accede a datos de una tabla remota y los inserta en una tabla local:
DATABASE locdb; INSERT INTO loctab SELECT * FROM rdb@rsys:rtab;
Esta consulta selecciona todos los datos de la tabla remotartab y los inserta en la tabla local loctab. El siguiente ejemplo crea una vista en la base de datos localutilizando las columnas empid y priority de la base de datos remota rdb.
DATABASE locdb; CREATE VIEW myview (empid, empprty) AS SELECT empid, priority FROM rdb@rsys:rtab;
Permisos de tabla
Los permisos para acceder a tablas de otras bases dedatos y a tablas remotas se controlan en la ubicacin de latabla. Cuando se accede a un servidor remoto, la conexin se realizautilizando el nombre de inicio de sesin y la contrasea del usuario que ejecutala consulta. Para acceder a datos remotos, el usuario debe tener lospermisos apropiados sobre la tabla remota. Cuando se procesan consultas distribuidas, el servidor de bases dedatos ignora la funcin activa en la base de datos local actual cuando seaccede a un objeto remoto. En el servidor remoto, se utiliza la funcinpor omisin aplicada a cada base de datos remota. Si no se ha definido un rolpor omisin, los privilegios del usuario definen los permisos de acceso paralos objetos de cada base de datos remota.
Especificando un objeto remoto en la sentencia DATABASE, puedeabrir una base de datos remota, como en los siguientes ejemplos:
DATABASE nombrebd@nombreservidor; DATABASE "//nombservidor/basedatos";
Es posible que un sinnimo exista tanto en el servidor local como enel remoto.En el ejemplo anterior, es posible que rtab sea por s mismosinnimo de rdb2@rsys2:rtab2. Cuando se recupera informacin delcatlogo, se sigue la cadena de sinnimos hasta que se encuentran la basede datos y el servidor fsicos en que reside la tabla. Si, finalmente, unsinnimo se apunta a s mismo, se devuelve un error.
Parmetro DEADLOCK_TIMEOUT
Este parmetro de configuracin se utiliza para especificarla cantidad de tiempo durante el que una transaccin esperar un bloqueo. Sise fuerza que una transaccin distribuida espere un nmero de segundossuperior al especificado, la hebra propietaria de la transaccin supone queexiste un punto muerto de varios servidores. Se devuelve el siguiente mensajede error:
-143 Error ISAM: detectado punto muerto.
Paraobtener ms informacin sobre cmo utilizar este parmetro de configuracin,consulte la publicacinIBM Informix DynamicServer Administrator's Guide.
Proceso de transacciones
En esta seccin se describen algunas de las consideracionesimplicadas cuando se utilizan consultas distribuidas en un entorno deproceso de transacciones.
Niveles de aislamiento
El nivel de aislamiento de una transaccin se enva al servidorremoto al comienzo de la transaccin en el sitio remoto. Si un nivel deaislamiento cambia durante una transaccin, se enva el nuevo valor alsitio remoto.
trata sobre los protocolosde confirmacin en varias fases en la publicacin IBM Informix DynamicServer Administrator's Guide.