Date post: | 04-Sep-2015 |
Category: |
Documents |
Upload: | daniel-caiza |
View: | 13 times |
Download: | 2 times |
Universidad de las fuerzas Armadas ESPE
Nombre: Esteban Caiza, Polo Paredes, Denis Santamara
Materia: Tcnicas Avanzadas de Bases de Datos
Fecha: 02 de julio del 2015
Tema: Fragmentacin en PostgresSql
FRAGMENTACIN VERTICAL
Crearemos una base de datos con una tabla para llenarla de registros y realizar la fragmentacin vertical, llamamos a la tabla fakenames.
CREATE TABLE fakenames(
number int NOT NULL PRIMARY KEY,
surname varchar(23) NOT NULL,
givenname varchar(20) NOT NULL,
nationalid varchar(20) NOT NULL,
westernunionmtcn char(10) NOT NULL,
moneygrammtcn char(8) NOT NULL,
streetaddress varchar(100) NOT NULL,
telephonenumber varchar(20) NOT NULL,
emailaddress varchar(100) NOT NULL,
birthday varchar(10) NOT NULL,
gender varchar(6) NOT NULL
);
Creacion de tablas y Reglas
para este ejemplo usaremos funciones las cuales PostgresSql no facilita ,para ello crearemos dos fragmentos el primero llamado FragmentoA que se almacenara en una tabla y contiene los datos de number,surname,givenname,nationalid y westerunionmtcn
el otro Fragmento ser llamado FragmentoB que contrendra los datos restantes.
FRAGMENTO A
FRAGMENTO B
PostgresSQL permite la creacin de reglas y gracias a ellas logramos realizar mas fcilmente la fragmentacin , en este caso cuando ingresemos datos lo mismos iran a la tabla de fragcion que le corresponda
Como se ve se crearon las tablas y las reglas antes mencionadas en las capturas de pantalla
Comprobacin
Ingresaremos 200 datos para verificar las reglas de fragmentacin.
Como se puede ver para el fragmentoA se insertaron los datos que colocamos en la regla
De igual manera para el fragmento B
Entonces con esto queda comprobado que los la tabla fakenames quedo fragmentada de forma vertical en dos fragmentos A y B
FRAGMENTACION VERTICAL
Creamos las tablas correspondientes a la columna que elegimos , en este caso Sexo que seria para masculino y femenino
CREATE TABLE Clientes_Masculinos(
CHECK (gender='male' or gender='Male')
)INHERITS("fakenames");
CREATE TABLE Clientes_Femeninos(
CHECK (gender='female' or gender='Female')
)INHERITS("fakenames");
CREATE OR REPLACE RULE clientes_m_part AS
ON INSERT TO "fakenames" WHERE (gender='male' or gender='Male') DO INSTEAD
INSERT INTO Clientes_Masculinos VALUES(NEW.number,NEW.surname,NEW.givenname,NEW.nationalid,NEW.westernunionmtcn,NEW.moneygrammtcn,NEW.streetaddress,NEW.telephonenumber,NEW.emailaddress,NEW.birthday,NEW.gender);
CREATE OR REPLACE RULE clientes_f_part AS
ON INSERT TO "fakenames" WHERE (gender='female' or gender='Female') DO INSTEAD
INSERT INTO Clientes_Femeninos VALUES(NEW.number,NEW.surname,NEW.givenname,NEW.nationalid,NEW.westernunionmtcn,NEW.moneygrammtcn,NEW.streetaddress,NEW.telephonenumber,NEW.emailaddress,NEW.birthday,NEW.gender);
Comprobacion
Ingresamos datos, en este caso 200 y la table principal tendra 200 y sus fragmentos tendran lo que les corresponda
Fakenames
Para Masculinos
Para femeninos
Como se ve entre las dos tablas clientes_femeninos y clientes_masculinos dan un total de 200 que es lo que contiene la tabla Fakenames, asi queda comprobado el fragcionamiento.
Se crean las reglas para el almacenamiento
FRAGMENTACION MIXTA
Consiste en una fragmentacin entre horizontal y vertical.
Para este ejemplo realizaremos una fragmentacin de nombre y apellido de las personas con sexo femenino en una tabla llamada Mixta.
CREATE TABLE mixta (
number int NOT NULL,
surname varchar(23) NOT NULL,
givenname varchar(20) NOT NULL,
gender varchar(6) NOT NULL
);
CREATE OR REPLACE RULE mixta_rule AS
ON INSERT TO "fakenames" WHERE (gender='female' or gender='Female') DO INSTEAD
INSERT INTO mixta VALUES(NEW.number,NEW.surname,NEW.givenname,NEW.gender);
Comprobacion
Para Realizar la comprobacin hacemos un select y tambin contaremos las filas
Biografia y links
http://www.postgresql.org/docs/9.1/static/sql-createfunction.html
http://repositorio.utn.edu.ec/bitstream/123456789/522/4/04%20ISC%20151%20CAPITULO%20II.pdf