UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS
Bases de Datos Distribuidas Renato Urvina Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Conocer las tcnicas para integrar o distribuir bases de datos utilizando los esquemas de replicacin, tipos de fragmentacin, tcnicas de localizacin y asignacin de fragmentos y la correcta actualizacin de las bases de datos distribuidas, adems manejar sistemas de bases de datos mltiples. OBJETIVO Bases de Datos Distribuidas Bases de Datos Distribuidas Estructuras de las bases de datos distribuidas Las 12 reglas de un sistema de bases distribuidas Consideraciones al distribuir la bases de datos INTRODUCCIN A LAS BDD Diseo de bases de datos distribuidas Estrategia de diseo ascendente Integracin de bases de datos Estrategia de diseo descendente DISEO DE BDD Tipos de Fragmentacin Implementacin de la fragmentacin en SGBD FRAGMENTACIN Tipos de Replicacin Implementacin de la Replicacin en SGBD REPLICACIN UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Bases de Datos Distribuidas Bases de Datos Distribuidas Asignacin Localizacin Procesamiento distribuido de consultas Manejo de transacciones Control de concurrencia TRATAMIENTO DE LA INFORMACIN EN BDD Bases Mltiples Replicacin Oracle SQL Server Implementacin BASES DE DATOS HETEROGENEAS Implementacin de un proyecto de BDD Elaboracin de artculo final PROYECTO FINAL UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Bases de Datos Distribuidas Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Diseo de bases de datos distribuidas Estrategia de diseo ascendente Integracin de bases de datos Estrategia de diseo descendente DISEO DE BASES DE DATOS DISTRIBUIDAS Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Diseo de Bases de Datos Distribuidas Diseo de bases de datos distribuidas INTRODUCCIN El diseo de un sistema de base de datos distribuido implica la toma de decisiones sobre la ubicacin de los programas que accedern a la base de datos y sobre los propios datos que constituyen esta ltima, a lo largo de los diferentes puestos que configuren una red de ordenadores. Tradicionalmente se ha clasificado la organizacin de los sistemas de bases de datos distribuidos sobre tres dimensiones: el nivel de comparticin, las caractersticas de acceso a los datos y el nivel de conocimiento de esas caractersticas de acceso Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Diseo de Bases de Datos Distribuidas Diseo de bases de datos distribuidas INTRODUCCIN A la hora de abordar el diseo de una base de datos distribuida podremos optar principalmente por dos tipos de estrategias: la estrategia ascendente y la estrategia descendente. Hay que decidir en qu nodos deben residir los datos y las aplicaciones que trabajan con los datos Si existen ya las bases de datos, hay que integrarlas para obtener el esquema global Si no existen, hay que definir el esquema conceptual global y fragmentar y asignar a los nodos Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Diseo de Bases de Datos Distribuidas Estrategias de Diseo de BDD ESTRATEGIA DE DISEO ASCENDENTE (bottom-up) Esta estrategia suele ser utilizada para integrar varias bases de datos existentes. Se parte de los esquemas conceptuales locales y se trabaja para llegar a conseguir el esquema conceptual global. Despus se pasa al diseo de distribucin. BD1 BD2 BD3 Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Diseo de Bases de Datos Distribuidas Estrategias de Diseo de BDD ESTRATEGIA DE DISEO ASCENDENTE (bottom-up) INTEGRACIN Una vez diseado el modelo de distribucin se decide los componentes de integracin: SGBDs locales y SGBD global Mtodos de conexin de red Tablas principales y Vistas materializadas Tablas fragmentadas Replicaciones BD1 BD2 BD3 Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Diseo de Bases de Datos Distribuidas Estrategias de Diseo de BDD ESTRATEGIA DE DISEO DESCENDENTE (top-down) Este enfoque es ms apropiado para aplicaciones nuevas y para sistemas homogneos. Inicia en el anlisis de requerimientos para definir el diseo conceptual y las vistas de usuario. A partir de ellas se define un esquema conceptual global y los esquemas externos necesarios. Se prosigue con el diseo de la fragmentacin de la base de datos, y de aqu se contina con la localizacin de los fragmentos en los sitios, creando las imgenes fsicas. Esta aproximacin se completa ejecutando, en cada sitio, "el diseo fsico" de los datos, que se localizan en ste. Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Diseo de Bases de Datos Distribuidas Estrategias de Diseo de BDD ESTRATEGIA DE DISEO DESCENDENTE (top-down) Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Tipos de Fragmentacin Implementacin de la fragmentacin en SGBD Prctica Tipos de Fragmentacin Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Tipos de Fragmentacin Fragmentacin El contenido de una tabla puede separase en varios fragmentos que contendrn suficiente informacin como para poder reconstruir la tabla original en caso que sea necesario. Cada fragmento se encontrar en un nodo diferente. La fragmentacin puede ser Horizontal o Vertical y se puede aplicar sucesiva y alternativamente sobre la misma tabla. Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Tipos de Fragmentacin Fragmentacin El diseo de una base de datos distribuida, cualquiera sea el enfoque que se siga, debe responder satisfactoriamente las siguientes preguntas: Por qu hacer una fragmentacin de datos? Cmo realizar la fragmentacin? Qu tanto se debe fragmentar Cmo probar la validez de una fragmentacin? Cmo realizar el asignamientode fragmentos? Cmo considerar los requerimientos de la informacin? Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Tipos de Fragmentacin Fragmentacin Fragmentacin Horizontal: los fragmentos son subconjuntos de una tabla y se definen a travs de una operacin de seleccin. La tabla original se reconstruye en base a una operacin de unin de los fragmentos componentes. Fragmentacin Vertical: los fragmentos son subconjuntos de los atributos con sus valores. Para poder recomponer la tabla original, cada fragmento debe incluir la clave primaria de la tabla. Fragmentacin Mixta o hbrida: Mezcla las fragmentaciones horizontal y vertical Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Fragmentacin Horizontal Fragmentacin Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Fragmentacin Fragmentacin Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Fragmentacin Horizontal - Lista Fragmentacin Particionado List Este tipo de particionado permite determinar el particionado segn una lista de valores definidos sobre el valor de una columna especifica. CREATE TABLE sales_list (salesman_id NUMBER(5), salesman_name VARCHAR2(30), sales_state VARCHAR2(20), sales_amount NUMBER(10), sales_date DATE) PARTITION BY LIST(sales_state) ( PARTITION sales_west VALUES('California', 'Hawaii'), PARTITION sales_east VALUES ('New York', 'Virginia', 'Florida'), PARTITION sales_central VALUES('Texas', 'Illinois') PARTITION sales_other VALUES(DEFAULT) ); Este particionado tiene algunas limitaciones, como que no soporta mltiples columnas en la clave de particionado, los valores literales deben ser nicos en la lista, permitiendo el uso del valor NULL. El valor DEFAULT sirve para definir la particin donde irn el resto de registros que no cumplen ninguna condicin de las diferentes particiones. Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Fragmentacin Horizontal - Rango Fragmentacin Particionado Range Requiere que los registros estn identificados por un partition key, el que determina la particin a la cual pertenecer el registro. CREATE TABLE sales ( prod_id NUMBER(6) , cust_id NUMBER, time_id DATE, channel_id CHAR(1), promo_id NUMBER(6) , quantity_soldNUMBER(3), amount_sold NUMBER(10,2) ) PARTITION BY RANGE (time_id) ( PARTITION sales_q1_2006 VALUES LESS THAN (TO_DATE('01- APR-2006','dd-MON-yyyy')) TABLESPACE tsa , PARTITION sales_q2_2006 VALUES LESS THAN (TO_DATE('01- JUL-2006','dd-MON-yyyy')) TABLESPACE tsb); Este tipo de particionamiento esta mejor situado cuando se tiene datos que tienen rango lgicos y que pueden ser distribuidos por este. Ej. Mes del Ao o un valor numrico. Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Fragmentacin Horizontal Rango (2) Fragmentacin Particionado Range Requiere que los registros estn identificados por un partitionkey, el que determina la particin a la cual pertenecer el registro. CREATE TABLE sales ( prod_id NUMBER(6) , cust_id NUMBER, time_id DATE, channel_id CHAR(1), promo_id NUMBER(6) , quantity_sold NUMBER(3), amount_sold NUMBER(10,2) ) PARTITION BY RANGE (time_id) ( PARTITION sales_q1_2006 VALUES LESS THAN (TO_DATE('01- APR-2006','dd-MON-yyyy')) TABLESPACE tsa , PARTITION sales_q2_2006 VALUES LESS THAN (TO_DATE('01-JUL- 2006','dd-MON-yyyy')) TABLESPACE tsb , PARTITION sales_q3_2006 VALUES LESS THAN (TO_DATE('01-OCT- 2006','dd-MON-yyyy')) TABLESPACE tsc , PARTITION sales_q4_2006 VALUES LESS THAN (TO_DATE('01-JAN- 2007','dd-MON-yyyy')) TABLESPACE tsd ); Este tipo de particionamiento esta mejor situado cuando se tiene datos que tienen rango lgicos y que pueden ser distribuidos por este. Ej. Mes del Ao o un valor numrico. Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Fragmentacin Horizontal Rango (3) Fragmentacin CREATE TABLE employees ( id INT NOT NULL, fname VARCHAR(50) NOT NULL, lname VARCHAR(50) NOT NULL, hired DATE NOT NULL ) PARTITION BY RANGE( YEAR(hired) ) ( PARTITION p1 VALUES LESS THAN (1991), PARTITION p2 VALUES LESS THAN (1996), PARTITION p3 VALUES LESS THAN (2001), PARTITION p4 VALUES LESS THAN (2005) ); ALTER TABLE employees ADD PARTITION ( PARTITION p5 VALUES LESS THAN (2010), PARTITION p6 VALUES LESS THAN MAXVALUE ); Este tipo de particionamiento esta mejor situado cuando se tiene datos que tienen rango lgicos y que pueden ser distribuidos por este. Ej. Mes del Ao o un valor numrico. Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Fragmentacin Horizontal - Hash Fragmentacin Particionado Hash La funcin hash devuelve un valor automtico que determina a que particin ir el registro. Es una forma automtica de balancear el particionado. Hay varias formas de construir este particionado. En el ejemplo siguiente vemos una definicin sin indicar los nombres de las particiones (solo el nmero de particiones): CREATE TABLE dept (deptno NUMBER, deptname VARCHAR(32)) PARTITION BY HASH(deptno) PARTITIONS 16; Es una opcin til cuando: Cuando el mtodo de acceso a los datos y la distribucin de los datos es desconocida. Cuando las consultas realizan exploraciones secuenciales y se tenga poca informacin de los datos almacenados Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Fragmentacin Horizontal - Hash Fragmentacin Es una opcin til cuando: Cuando el mtodo de acceso a los datos y la distribucin de los datos es desconocida. Cuando las consultas realizan exploraciones secuenciales y se tenga poca informacin de los datos almacenados Particionado Hash (2) Igualmente, se pueden indicar los nombres de cada particion individual o los tablespaces donde se localizaran cada una de ellas: CREATE TABLE dept (deptno NUMBER, deptname VARCHAR(32)) STORAGE (INITIAL 10K) PARTITION BY HASH(deptno) (PARTITION p1 TABLESPACE ts1, PARTITION p2 TABLESPACE ts2, PARTITION p3 TABLESPACE ts1, PARTITION p4 TABLESPACE ts3); Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Fragmentacin Horizontal - Ejercicio Fragmentacin 1. Crear 2 tablas con la siguiente estructura *La tabla particionada, con una particin hash de 10 2. Llenar con 1 milln de registros y tomar los tiempos requeridos en cada caso 3. Realizar un update a toda la tabla sumando 10 al campo llave, y tomar los tiempos requeridos en cada caso 4. Realizar un vaciado de la tabla, y tomar los tiempos requeridos en cada caso. Tabla Particionada LLAVE LONG DATO VARCHAR(10) Tabla Normal LLAVE LONG DATO VARCHAR(10) Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Fragmentacin Horizontal - Ejercicio Fragmentacin Registrar los tiempos en una tabla. Registros Insert (seg) Update (seg) Delete (seg) Tabla Normal 1 milln Tabla Particionada 1 milln Bases de Datos Distribuidas UNIVERSIDAD TCNICA DE AMBATO MAESTRIA EN GESTIN DE BASE DE DATOS Fragmentacin Horizontal Ejercicio 2 Fragmentacin Realizar el mismo ejercicio en los siguientes SGBD: MySQL, SQL Server, Firebird Realizar un cuadro estadstico con los tiempos registrados 1 milln registros Realizar el ejercicio con 5 y 10 millones de registros Elaborar un Informe con los resultados y sus conclusiones respectivas. (al menos 4 conclusiones personales) SGBD Insercin Modificacin Borrado Oracle 10 8 5 MySQL 11 7 6 Ms - SQL 12 12 8 Firebird 9 8 7 0 2 4 6 8 10 12 14 Oracle MySQL Ms - SQL Firebird 1 Milln registros Insercin Modificacin Borrado