Documente Academic
Documente Profesional
Documente Cultură
(EJERCICIO DE APLICACIN)
ENRIQUE ALCOCER
DANIEL OCHOA
PROFESOR
JOHN JAIRO LONDOO
BOGOTA
2014
BASES DE DATOS DISTRIBUIDAS
FRAGMENTACIN
FRAGMENTACIN HORIZONTAL.
Se realiza sobre las tuplas de la relacin, es decir que cada fragmento ser un
subconjunto de las tuplas de la relacin. Una tabla T se divide en subconjuntos, T1,
T2,...Tn. Los fragmentos se definen mediante una operacin de seleccin. Su
reconstruccin se realizar mediante la unin de los fragmentos componentes.
Las tres entradas necesarias para desarrollar la fragmentacin horizontal derivada son
las siguientes: el conjunto de particiones de la relacin propietaria, la relacin miembro
y el conjunto de predicados resultados de aplicar el semiyunto entre la propietaria y la
miembro. Es decir La fragmentacin de la tabla primaria, se aplica a tablas secundarias,
o bien se debe partir de una fragmentacin horizontal primaria.
MODELO BDD
OPEN curBogota;
/*transaccionesforeanes de bogota*/
REPEAT
FETCH curBogota INTO cuentab, valorb, tipob, fechab, ciudadb;
IF NOT doneBogota THEN
/*ciudad de medellin*/
IF ciudadb=MEDELLIN THEN
/*se almacena un registro en transacciones de medellin*/
INSERT INTO banco_medellin.transaccion(cuenta, valor, tipo, fecha) VALUES (cuentab, valorb, tipob,
fechab);
/*se actualiza el saldo para la cuenta de medellin*/
UPDATE banco_medellin.cuenta_cliente mcc SET mcc.saldo = ( SELECTdcc.saldo FROM
datacenter.cuenta_cliente dcc WHERE dcc.cuenta = cuentab) WHERE mcc.num = cuentab;
/*se almacena el registro de la transaccion*/
INSERT INTO auditoria(cuenta, valor, tipo, fecha, ciudad) VALUES (cuentab, valorb, tipob, CURDATE(),
ciudadb);
END IF;
END IF;
UNTIL doneBogota END REPEAT;
CLOSE curBogota;
BLOCK2: BEGIN
DECLARE doneMedellin INT DEFAULT 0;
DECLARE cuentab, cuentamvarchar(20);
DECLARE valormBIGINT(20);
DECLARE tipom INT;
DECLARE fecham TIMESTAMP;
DECLARE ciudadm INT;
DECLARE BOGOTA INT DEFAULT 1;
DECLARE curMedellin CURSOR FOR SELECT cuenta, valor, tipo, fecha, ciudad FROM
banco_medellin.transaccion_foranea WHERE fecha=CURDATE();
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET doneMedellin = 1;
OPEN curMedellin;
/*transaccionesforeanes de medellin*/
REPEAT
FETCH curmedellin INTO cuentam, valorm, tipom, fecham, ciudadm;
IF NOT doneMedellin THEN
/*ciudad de bogota*/
IF ciudadm=BOGOTA THEN
/*se almacena un registro en transacciones de bogota*/
INSERT INTO banco_bogota.transaccion(cuenta, valor, tipo, fecha) VALUES (cuentam, valorm, tipom,
fecham);
/*se actualiza el saldo para la cuenta de bogota*/
UPDATE banco_bogota.cuenta_clientebcc SET bcc.saldo = ( SELECTdcc.saldo FROM
datacenter.cuenta_cliente dcc WHERE dcc.cuenta = cuentam) WHERE bcc.num = cuentam;
/*se almacena el registro de la transaccion*/
INSERT INTO auditoria(cuenta, valor, tipo, fecha, ciudad) VALUES (cuentam, valorm, tipom, CURDATE(),
ciudadm);
END IF;
END IF;
UNTIL doneMedellin END REPEAT;
CLOSE curMedellin;
END Block2;
END Block1