fragmentación vertical,horizontal y mixta postgress

12
Universidad de las fuerzas Armadas – ESPE Nombre: Esteban Caiza, Polo Paredes, Denis Santamaría Materia: Técnicas Avanzadas de Bases de Datos Fecha: 02 de julio del 2015 Tema: Fragmentación en PostgresSql FRAGMENTACIÓN VERTICAL Crearemos una base de datos con una tabla para llenarla de registros y realizar la fragmentación 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

Upload: daniel-caiza

Post on 04-Sep-2015

12 views

Category:

Documents


2 download

DESCRIPTION

fragmentacion realizada en PostGresSql

TRANSCRIPT

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