martes, 2 de diciembre de 2008

Clustres de Base De Datos Oracle

Índice de Contenido

1. - Que es un clusters de tablas? 2
1.1. - Ventajas de los Clusters 2
1.2. - Requisitos para crear un clusters 2
1.3. - Claves del Clusters o Clusters Keys 2
1.4. - Tipos de clusters 3
1.4.1.- Index Clusters 3
1.4.2.- Hash Clusters 3
1.5. - Ejemplo de creación de un clusters 4
1.5.1.- Creando el Cluster cpais 4
1.5.2.- Creando el Index Clusters 4
1.5.3.- Creando las tables que formaran parte del clusters 4
1.5.4.- Truncando el cluster cpais 6






















1. - Que es un clusters de tablas?
Es un objeto de base de datos que contiene una o mas tablas, las cuales tienen en común una o mas columnas, a estas columnas comunes se les denomina “CLUSTERS KEY” o clave del cluster. Un cluster permite que todas las filas de aquellas tablas cuyos valores de las columnas que le son comunes sean físicamente almacenadas juntas dentro de la base de datos, solo se debe hacer un clusters de aquellas tablas que con frecuencia hacemos joind en base a las columnas claves del cluster.

Un cluster puede tener un máximo de 32 tablas, no es recomendable hacer clusters de mas de 4 o 5 tablas, ya que esto empobrece el rendimiento en el acceso a las tablas.
1.1. - Ventajas de los Clusters

• Proveen un mayor control sobre el almacenamiento físico de las tablas en la base de datos.
• Reducen el tiempo de acceso a las tablas que conforman el cluster y el espacio necesario para almacenar dichas tablas.
• Un cluster de multiples tablas provee mejor rendimiento en los joind, pero desmejoran el rendimiento que aquellas tablas sobre las cuales hacemos un full scans, el rendimiento de las declaraciones INSERT o UPDATE que modifican los valores de las columnas claves del cluster.
• Un cluster no permite truncar de forma individual alguna de las tablas que conforman el cluster, es decir, para poder truncar una de las tablas que conforman el cluster, se debe truncar el cluster completo, lo cual significa borrar las filas de todas las tablas que conforman el cluster.
1.2. - Requisitos para crear un clusters
Para poder realizar la creación de un clusters de base de datos oracle, se deben tener los privilegios de “CREATE CLUSTER”, además de ello el usuario propietario del schema que va a contener el cluster debe tener espacio en el tablespace o tener el privilegio de “UNLIMITED TABLESPACE”.
1.3. - Claves del Clusters o Clusters Keys
Son una o mas columnas que son comunes a una o a varias tablas y que formaran parte la clave del clusters o CLUSTERS KEYS. Estas columnas deben ser del mismo tipo de datos y tamaño para todas las tablas que conformaran el clusters.
1.4. - Tipos de clusters
Un cluster puede ser del tipo “index cluster” o del tipo “hash cluster”
1.4.1.- Index Clusters
Estos se caracterizan por:
• Se Almacenan juntas todas aquellas filas que tienen el mismo valor de la clave del clusters o cluster key.
• Cada valor distinto del cluster key es almacenado una sola ves en cada bloque de datos, esto contribuye a reducir el espacio de almacenamiento requerido y mejora el rendimiento de muchas operaciones.
• Se requiere crear un índice sobre el cluster index, este índice es denominado “CLUSTER INDEX”.

• Un cluster index debe ser utilizado en cualquiera de los siguientes casos

1.- Cuando las consultas desarrolladas retornan filas que pertenecen a un rango de valores.

2.- Cuando se prevee o se estima que las tablas que conforman el cluster index crecerán de forma impredecible.
1.4.2.- Hash Clusters
Se caracteriza por:

• Se Almacenan juntas todas aquellas filas que tienen el mismo valor de la clave del clusters o cluster key.
• Un hash clusters debe ser utilizado cuando:

1.- Las consultas desarrolladas retornan filas basadas sobre una condición que involucra a todas las columnas del clusters key .

2.- Las tablas que conforman el cluster son estáticas o cuando podemos estimar el numero máximo de filas y el monto máximo de espacio requerido por el cluster.
1.5. - Ejemplo de creación de un clusters
Vamos a crear un cluster de las tablas de país, estado, ciudad, para ello, crearemos un cluster denominado “CPAIS”, la columna común a las tres tablas será el atributo “id_pais”, por consiguiente esta columna será el clusters key o clave del cluster.
1.5.1.- Creando el Cluster cpais

CREATE CLUSTER cpais
( id_pais NUMBER(2) );
1.5.2.- Creando el Index Clusters
CREATE INDEX idxc_id_pais ON CLUSTER cpais;
1.5.3.- Creando las tables que formaran parte del clusters

CREATE TABLE TPAIS
(
id_pais NUMBER(2) NOT NULL,
desc_pais VARCHAR2(60 BYTE) NOT NULL,
abrev_pais VARCHAR2(10 BYTE) NOT NULL,
ctel_pais NUMBER(2) NOT NULL
)
CLUSTER cpais(id_pais);

COMMENT ON TABLE TPAIS IS 'TABLA DE PAISES DEL MUNDO ';

COMMENT ON COLUMN TPAIS.id_pais IS ' Codigo del pais';

COMMENT ON COLUMN TPAIS.desc_pais IS 'Descripcion del pais';

COMMENT ON COLUMN TPAIS.abrev_pais IS 'Abreviatura del pais';

COMMENT ON COLUMN TPAIS.ctel_pais IS 'Codigo telefonico del pais';

CREATE UNIQUE INDEX pk_tpais ON TPAIS
(id_pais) ;

CREATE TABLE TESTADO
(
id_pais NUMBER(2) NOT NULL,
id_estado NUMBER(3) NOT NULL,
desc_estado VARCHAR2(60 BYTE) NOT NULL,
abrev_estado VARCHAR2(10 BYTE) NOT NULL
)CLUSTER cpais(id_pais);

CREATE UNIQUE INDEX pk_estado ON TESTADO
(id_pais, id_estado);

CREATE TABLE TCIUDAD
(
id_pais NUMBER(2) NOT NULL,
id_estado NUMBER(3) NOT NULL,
id_ciudad NUMBER(4) NOT NULL,
desc_ciudad VARCHAR2(60 BYTE) NOT NULL,
abrev_ciudad VARCHAR2(10 BYTE) NOT NULL
)CLUSTER cpais(id_pais);

CREATE UNIQUE INDEX pk_ciudad ON TCIUDAD
(id_pais, id_estado, id_ciudad);

ALTER TABLE TPAIS ADD (
CONSTRAINT chk_abrev_pais
CHECK (abrev_pais=UPPER(abrev_pais)),
CONSTRAINT chk_desc_pais
CHECK (desc_pais=UPPER(desc_pais)),
CONSTRAINT pk_tpais
PRIMARY KEY
(id_pais));

ALTER TABLE TESTADO ADD (
CONSTRAINT chk_abrev_estado
CHECK (abrev_estado=UPPER(abrev_estado)),
CONSTRAINT chk_desc_estado
CHECK (desc_estado=UPPER(desc_estado)),
CONSTRAINT pk_estado
PRIMARY KEY
(id_pais, id_estado));

ALTER TABLE TCIUDAD ADD (
CONSTRAINT chk_abrev_ciudad
CHECK (abrev_ciudad=UPPER(abrev_ciudad) ),
CONSTRAINT chk_desc_ciudad
CHECK (desc_ciudad=UPPER(desc_ciudad) ),
CONSTRAINT pk_ciudad
PRIMARY KEY
(id_pais, id_estado, id_ciudad));

ALTER TABLE TESTADO ADD (
CONSTRAINT fk_tpais_testado
FOREIGN KEY (id_pais)
REFERENCES TPAIS (id_pais));

ALTER TABLE TCIUDAD ADD (
CONSTRAINT fk_testado_tciudad
FOREIGN KEY (id_pais, id_estado)
REFERENCES TESTADO (id_pais,id_estado));
1.5.4.- Truncando el cluster cpais
TRUNCATE CLUSTER cpais;

No hay comentarios: