Вы находитесь на странице: 1из 13

Universidad Distrital Francisco Jos de Caldas

Facultad Tecnolgica
Bases de Datos Distribuidas

Integrantes:
Cristian Camilo Snchez Chvez Cdigo: 20141578083
Hsneider Salgado Yate Cdigo: 20142578011
Duvan Leonardo Chavez Buitrago Cdigo: 20141578058

Docente:
Claudia Liliana Hernndez Garca

Tema:
Fragmentacin vertical & Replicacin

Bogot D.C
2016

Fragmentacin vertical

Creamos la base de datos central llamada colegio en docker

Creamos la tabla alumno e insertamos datos

create table alumno(


codigo bigint not null,
nombre varchar(30) not null,
apellido varchar(30) not null,
grado int not null,
edad int not null,
asignatura varchar(20) not null,
primary key(codigo)
);
insert into alumno values(12458,'camilo','ochoa',7,13,'algebra');
insert into alumno values(12449,'andres','leon',5,11,'algebra');
insert into alumno values(14587,'flipe','castro',6,12,'algebra');
insert into alumno values(12469,'leonardo','sandoval',8,14,'algebra');
insert into alumno values(124325,'daniel','forero',9,14,'algebra');
insert into alumno values(12164,'juan','rocha',5,12,'algebra');
insert into alumno values(12798,'sara','mendez',6,12,'algebra');

Ahora se procede a conectar con el servidor en docker.


Creamos la bases de datos en la base de local

Como se ha realizar fragmentacin vertical, se va a dividir las tablas en dos y se


repartiremos los datos de las columnas. La estructura general de la tabla principal
es:
Alumno (cdigo, Nombre, apellido, grado, edad, asignaturas)
Al hacer proyeccin sobre las tablas vamos a dividir los datos de la siguiente
manera
alumno1= cdigo, Nombre, apellido, edad ALUMNO

create table alumno1(


codigo bigint not null,
nombre varchar(30) not null,
apellido varchar(30) not null,
edad int not null,
primary key(codigo)
);
alumno2= cdigo, grado,
asignatura ALUMNO
create table alumno(
codigo bigint not null,
grado int not null,
asignatura varchar(20) not
null,
primary key(codigo)
);

Se crea la extensin dblink en la base de datos inicial:

Comprobamos la conexin llamando datos desde una base de datos a la


remota:

select a.* from dblink('


dbname=colegio
port=32775
host=192.168.99.100
user=postgres
password=',
' select * from alumno') as a(codigo bigint,
nombre varchar(30),
apellido varchar(30),
grado integer,
edad integer,
asignatura varchar(20));

Se realiza la insercin de datos en las tablas usando el mismo llamado


remoto:

insert into alumno select a.* from dblink('


dbname=colegio
port=32775
host=192.168.99.100
user=postgres
password=',
' select codigo,grado,asignatura from alumno') as
a(codigo bigint,
grado integer,
asignatura varchar(20));

insert into alumno1 select a.* from


dblink('
dbname=colegio
port=32775
host=192.168.99.100
user=postgres
password=',
' select codigo,nombre,apellido,edad
from alumno')
as a(codigo bigint,
nombre varchar(30),
apellido varchar(30),
edad integer
);

Ahora se ejecuta un join entre las tablas para ver los datos de la tabla
original:

Haciendo la comparacin con la tabla original:

Replicacin
Para iniciar con la replicacin, se debe ingresar a la carpeta de Archivos del
Programa, all buscar la carpeta PostgreSQL, acceder a dicha carpeta y buscar al
interior la carpeta data. Al ingresar a esta ltima carpeta, buscar el archivo .conf
llamado pg_hba y realizar las siguientes modificaciones en los archivos de ambos
equipos:

Luego de realizar los anteriores cambios, se procede a abrir el pgAdmin de


PostgreSql, se crea la base de datos maestra y se crean tres tablas con de la
siguiente manera:

Tabla Empleado

CREATE TABLE empleados


(
cedula integer NOT NULL,
nombres character varying(30) NOT
NULL,
apellidos character varying(30) NOT
NULL,
telefono integer NOT NULL,
CONSTRAINT empleados_pkey
PRIMARY KEY (cedula)

Tabla Empresa

CREATE TABLE empresa


(
nit integer NOT NULL,
nombre character varying(30) NOT NULL,
direccion character varying(30) NOT NULL,
CONSTRAINT empresa_pkey PRIMARY
KEY (nit)
)

Tabla Cargo

CREATE TABLE cargo


(
id integer NOT NULL,
nombre character varying(30) NOT NULL,
salario integer NOT NULL,
CONSTRAINT cargo_pkey PRIMARY KEY (id)
)

Despus de crear las tres (3) tablas en la base de datos maestra, se procede a
crear dos scripts para realizar la replicacin. Un script para el maestro y otro script
para el esclavo.
Para el caso del maestro, se debe crear el siguiente script en un archivo de texto
(txt):

cluster name = slony_empresa;

node 1 admin conninfo = 'dbname=empresa host=192.168.0.8 user=postgres password=


DuvanChavez';
node 2 admin conninfo = 'dbname=empresa host=192.168.0.4 user=postgres password=
duvanchavez';

init cluster ( id=1, comment = 'Nodo Maestro');

create set (id=1, origin=1, comment='Todas Mis Tablas');


set add table (set id=1, origin=1, id=1, fully qualified name = 'public.empleados',comment='mi tabla
empleado');
set add table (set id=1, origin=1, id=2, fully qualified name = 'public.cargo',comment='mi tabla
cargo');

store node (id=2, comment = 'Nodo Esclavo', EVENT NODE=1 );


store path (server = 1, client = 2, conninfo = 'dbname=empresa host=192.168.0.8 user=postgres
password= DuvanChavez');
store path (server = 2, client = 1, conninfo = 'dbname=empresa host=192.168.0.4 user=postgres
password= duvanchavez');

store listen (origin=1, provider = 1, receiver =2);


store listen (origin=2, provider = 2, receiver =1);

Se procede a guardar el anterior script en la carpeta bin de PostgreSql en la cual


se encuentra la BD Maestra:

En el caso del esclavo, se debe crear el siguiente script en un archivo de texto


(txt):
cluster name = slony_empresa;

node 1 admin conninfo = 'dbname=empresa host=192.168.0.8 user=postgres password=


DuvanChavez';
node 2 admin conninfo = 'dbname=empresa host=192.168.0.4 user=postgres password=
duvanchavez';

SUBSCRIBE SET(ID=1, PROVIDER = 1, FORWARD= yes );

Se guarda el anterior script en la carpeta bin de PostgreSql en la cual se


encuentra la BD Esclava:

Luego se debe ejecutar por medio de la consola del sistema cmd, el script Maestro
en la maquina o equipo en donde se encuentra implementada la BD
Maestra.

De igual forma se ejecuta el script Esclavo en la maquina o equipo donde se


encuentra implementada la BD Esclava.

Tras ejecutar ambos scripts satisfactoriamente, realizamos la insercin de varios


datos en la base de datos Maestra, para verificar que la rplica se efecte
sin errores:

Se verifica que efectivamente en la base de datos Esclava se realiz la rplica de


los datos anteriormente insertados:

Вам также может понравиться