Sunteți pe pagina 1din 13

BASE DE DATOS DISTRIBUIDAS

(EJERCICIO DE APLICACIN)

ENRIQUE ALCOCER
DANIEL OCHOA

PROFESOR
JOHN JAIRO LONDOO

UNIVERSIDAD DISTRITAL FRANCISO JOS DE CALDAS


BASE DE DATOS

BOGOTA
2014
BASES DE DATOS DISTRIBUIDAS

Un sistema distribuido de bases de datos, almacena la informacin en varios


computadores y varios medios de comunicacin como las redes de alta velocidad son
las encargadas de poner contacto los distintos computadores de un sistema distribuido.
Estos no comparten recursos fsicos como memorias y discos, adems pueden variar en
tamao y funcin pudiendo abarcar desde las estaciones de trabajo hasta grandes
sistemas.

Dependiendo del contexto en el que se mencionen existen diferentes nombres para


referirse a los computadores que forman parte de un sistema distribuido, tales como
sitios o nodos. Para enfatizar la distribucin fsica de estos sistemas se usa
principalmente el trmino sitio. En la siguiente figura se muestra la estructura general de
un sistema distribuido:

FRAGMENTACIN

El diseo de la fragmentacin es conocido como una caracterstica distintiva de las


bases de datos distribuidas y hace referencia a la fragmentacin o divisiones lgicas de
una relacin global. La fragmentacin en un sistema de base de datos distribuido
determina como sern subdivididas las relaciones propias de las tablas diseo de la base
de datos, ya sean de manea horizontal, vertical o mixta (una combinacin de horizontal
y vertical).

Al disear una fragmentacin en un sistema distribuido se debe cumplir con las


siguientes reglas:
Todos los datos de la relacin global debern ser mapeados a algn fragmento
Debe ser siempre posible reconstruir la relacin global a partir de sus fragmentos
Es conveniente que los fragmentos sean disjuntos (nada en comn).
Fragmentos: Cada relacin global puede ser dividida en porciones llamados
fragmentos. El mapa resultante se denomina esquema de fragmentacin. Una relacin
global puede dividirse en n fragmentos y un fragmento slo puede pertenecer a una
relacin global. Los fragmentos se referencian por un nombre de relacin global y un
subndice.

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.

Existen dos tipos de fragmentacin como es: fragmentacin horizontal primaria y la


fragmentacin horizontal derivada.

La fragmentacin horizontal primaria. Consiste en particionar las tuplas de una


relacin global en subconjuntos, donde cada subconjunto tenga propiedades comunes,
se puede definir expresando cada fragmento como una operacin de seleccin sobre la
relacin global.

La fragmentacin horizontal derivada Consiste en dividir una relacin partiendo de


los predicados definidos sobre alguna otra, debido a que la relacin R depende de la
relacin Q, sobre cuyos atributos est definido el predicado de la fragmentacin.

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.

Nota: La relacin al final de la conexin es llamada propietario de la conexin y la


relacin que est en la cabeza de la conexin es llamada miembro.
FRAGMENTACIN VERTICAL.

El objetivo de la fragmentacin vertical consiste en dividir la relacin en un conjunto de


relaciones ms pequeas tal que algunas de las aplicaciones de usuario slo hagan uso
de un fragmento. Sobre este marco, una fragmentacin ptima es aquella que produce
un esquema de divisin que minimiza el tiempo de ejecucin de las aplicaciones que
emplean esos fragmentos.

La fragmentacin vertical se basa en los atributos de la relacin para realizar la divisin,


es decir: la subdivisin de atributos en grupos. La fragmentacin es correcta si cada
atributo se mapea en al menos un atributo del fragmento.

La particin vertical resulta ms complicada que la horizontal. Esto se debe al aumento


del nmero total de alternativas que tenemos disponibles.

Existen dos enfoques heursticos para la fragmentacin vertical de relaciones:

Agrupacin: Comienza asignando cada atributo a un fragmento, y en cada paso,


junta algunos de los fragmentos hasta que satisface un determinado criterio. La
agrupacin sugiri en principio para bases de datos centralizadas y se us
posteriormente para las bases de datos distribuidas.
Escisin: A partir de la relacin se deciden que fragmentos resultan mejores,
basndose en las caractersticas de acceso de las aplicaciones a los atributos.
Esta tcnica se present, tambin, para bases de datos centralizadas.
Posteriormente, se extendi al entorno distribuido.
La escisin genera fragmentos no solapados mientras que la agrupacin
normalmente produce fragmentos solapados. Dentro del contexto de los sistemas
de bases de datos distribuidos, son preferibles los fragmentos no solapados por
obvias razones. Los fragmentos no solapados se refieren nicamente a atributos
clave no primarios.
Ejemplo de aplicacin de base datos distribuidos:

MODELO BDD

Relacin de Fragmentacin Horizontal y Fragmentacin Vertical al modelo:


La Fragmentacin Horizontal se puede ver en el modelo anterior en las tablas de
transacciones, tabla de transacciones de la base de datos nativa y la tabla de
transacciones forneo, estas tablas estn fragmentadas por la ciudad. No hay evidencias
de la Fragmentacin Vertical en este modelo.
Desarrollo del ejercicio el motor de base de datos MySQL:
Se crean tres bases de datos, de las cuales dos tienen el mismo diseo para las
sucursales de Bogot y Medelln (banco_bogota, banco_medellin) y una del Data
center (datacenter).

Se maneja 2 ciudades en cada base de datos de bancos (1-Bogot, 2-Medellin):


Se manejan 2 tipos de transacciones en cada base de datos de bancos (1-Retiro, 2-
Abono).

Se inserta una cuenta en la base de datos de Bogot con un saldo de $500000:

Se inserta una cuenta en la base de datos de Medelln con un saldo de $1000000:


Se insertan las 2 cuentas en la base de datos del DataCenter:

Se inserta un registro a la tabla de transacciones forneas de Bogot de una


transaccin de retiro de $200000 realizada por el cliente de Medelln:

Se actualiza el saldo en la tabla de cuentas del Datacenter para el cliente de


Medelln cobrando el valor de la transaccin que son $10000, por lo tanto el saldo
queda as:
$1000000 - $200000 - $10000=$790000

Se inserta un registro a la tabla de transacciones forneas de Medelln de una


transaccin de abono de $100000 realizada por el cliente de Bogot:

Se actualiza el saldo en la tabla de cuentas del Datacenter para el cliente de Bogot


cobrando el valor de la transaccin que son $10000, por lo tanto el saldo queda as:
$500000 + $100000 - $10000=$590000
Se ejecuta el procedimiento almacenado motor_distribucin:
Definicin:
CREATE DEFINER=`root`@`localhost` PROCEDURE `motor_distribucion`()
MODIFIES SQL DATA
BLOCK1: BEGIN
DECLARE doneBogota INT DEFAULT 0;
DECLARE MEDELLIN INT DEFAULT 2;
DECLARE cuentab, cuentamvarchar(20);
DECLARE valorbBIGINT(20);
DECLARE tipob INT;
DECLARE fechab TIMESTAMP;
DECLARE ciudadb INT;
DECLARE curBogota CURSOR FOR SELECT cuenta, valor, tipo, fecha, ciudad FROM
banco_bogota.transaccion_foranea WHERE fecha=CURDATE();
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET doneBogota = 1;

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

El procedimiento se ejecuta sin problemas:

Se Verifica la tabla de transacciones de la base de datos del banco de Bogot y se


verifica que se registr la transaccin realizada desde Medelln:
Se Verifica el saldo del cliente de Bogot de la base de datos del banco de Bogot:

Se verifica la tabla de transacciones de la base de datos del banco de Medelln y se


verifica que se registr la transaccin realizada desde Bogot:

Se verifica el saldo del cliente de Medelln de la base de datos del banco de


Medelln:
Verificamos que se hayan almacenado los registros de que se realiz las
transaccciones en la tabla Auditoria del DataCenter:

S-ar putea să vă placă și