Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY CAMPUS MONTERREY PROGRAMA DE GRADUADOS EN ELECTRÓNICA, COMPUTACIÓN, INFORMACIÓN Y COMUNICACIONES DISTRIBUCIÓN DE DATOS PARA BASES DE DATOS DISTRIBUIDAS, UNA ARQUITECTURA BASADA EN COMPONENTES DE SOFTWARE TESIS PRESENTADA COMO REQUISITO PARCIAL PARA OBTENER EL GRADO ACADEMICO DE: MAESTRÍA EN CIENCIAS EN TECNOLOGÍA INFORMÁTICA POR: FRANCISCO ÁLVAREZ CAVAZOS MONTERREY, NUEVO LEÓN, MÉXICO. MAYO 2003. INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY CAMPUS MONTERREY DIVISIÓN DE ELECTRÓNICA, COMPUTACIÓN, INFORMACIÓN Y COMUNICACIONES PROGRAMA DE GRADUADOS EN ELECTRÓNICA, COMPUTACIÓN, INFORMACIÓN Y COMUNICACIONES Los miembros del comité de tesis recomendamos que la presente tesis del Ing. Francisco Álvarez Cavazos sea aceptada como requisito parcial para obtener el grado académico de Maestro en Ciencias en Tecnología Informática. Comité de Tesis: _________________________________________ Juan Carlos Lavariega Jarquín, PhD. Asesor _________________________________________ Lorena Guadalupe Gómez Martínez, PhD. Sinodal _________________________________________ José Ignacio Icaza Acereto, PhD. Sinodal _________________________________________ David Alejandro Garza Salazar, PhD. Director del Programa de Graduados en Electrónica, Computación, Información y Comunicaciones. Mayo 2003 DISTRIBUCIÓN DE DATOS PARA BASES DE DATOS DISTRIBUIDAS, UNA ARQUITECTURA BASADA EN COMPONENTES DE SOFTWARE POR: FRANCISCO ÁLVAREZ CAVAZOS TESIS Presentada al Programa de Graduados en Electrónica, Computación, Información y Comunicaciones. Este trabajo es requisito parcial para obtener el grado de Maestro en Ciencias en Tecnología Informática INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY CAMPUS MONTERREY MAYO 2003 Dedicatoria A mi hermana Yvett y a mis hermanos Eduardo y Gerardo, por ser mis compañeros más cercanos en esta aventura de crecimiento espiritual; A mi madre por ser mi maestra en la caridad; A mi padre por enseñarme a buscar la verdad; y A ti Señor Jesús; Luz, Alegría y Caridad del mundo. iv Agradecimientos Agradezco a mi familia por la compañía, apoyo y atenciones que me dedicaron durante estos estudios de posgrado; A mis amigos Maximiliano Canché y Roger H. Castillo con quienes tuve la oportunidad de trabajar en el desarrollo de este proyecto. Gracias por brindarme su tiempo y amistad; A la Dra. Lorena Guadalupe Gómez Martínez y al Dr. José Ignacio Icaza Acereto por el interés y apoyo que dieron a este trabajo de tesis; Al Dr. Juan Carlos Lavariega Jarquín, asesor de esta tesis, por su valiosa ayuda y acertadas recomendaciones que me permitieron realizar una mejor investigación; y A todos aquéllos que fueron mis maestros y compañeros durante el curso de este posgrado. Sus enseñanzas hicieron posible el desarrollo de este trabajo. ¡Muchas gracias! v Resumen El procesamiento de datos distribuidos es una necesidad que hoy en día muchas empresas tratan de satisfacer. Sin embargo, con frecuencia las organizaciones tienen problemas para encontrar un producto de software que les proporcione la solución que requieren. Este hecho parecería estar fuera de lugar en un mundo donde la tecnología de redes se ha vuelto una constante. Sin embargo, a pesar de que ya se cuenta con la infraestructura tecnológica requerida para el proceso de información distribuida, existen varios factores que han obstaculizado el desarrollo de software capaz de satisfacer estas necesidades. Uno de estos factores es la complejidad inherente que presenta el acceso a la información distribuida. Esto ha provocado que la mayor parte de las aplicaciones de base de datos se enfoquen a proporcionar acceso distribuido a una base de datos centralizada. Este trabajo de tesis propone una arquitectura genérica basada en componentes de la distribución de datos de un sistema de bases de datos distribuidas. A partir de la arquitectura propuesta es posible construir software capaz de proporcionar acceso distribuido a la información contenida en un conjunto distribuido de bases de datos. La arquitectura propuesta ha sido validada mediante su implementación en software. El prototipo de software resultado de la implementación provee un esquema global conceptual de la información almacenada en una base de datos distribuida, con lo cual la información es accedida como si perteneciera a una sola base de datos. El presente trabajo de tesis describe la arquitectura propuesta a nivel sistema y a nivel componente. Además, proporciona una guía para la implementación de dicha arquitectura. Resultando en las siguientes aportaciones: • Una arquitectura basada en componentes de la distribución de datos de un sistema de bases de datos distribuidas; • La arquitectura de los componentes de software requeridos; • Observaciones de implementación de la arquitectura propuesta; y • Código fuente de esta implementación que puede ser reutilizado en otras aplicaciones. Otra aportación del presente trabajo de tesis es el hecho de que se retoman y actualizan conceptos de bases de datos distribuidas con frecuencia descartados por las aplicaciones de bases de datos actuales. vi Contenido Dedicatoria ............................................................................................................................ iv Agradecimientos..................................................................................................................... v Resumen ................................................................................................................................vi Contenido .............................................................................................................................vii Lista de Figuras ...................................................................................................................... x Lista de Tablas.....................................................................................................................xiii Capítulo 1. Introducción......................................................................................................... 1 1.1 Antecedentes................................................................................................................. 1 1.2 Objetivo del proyecto de tesis ...................................................................................... 1 1.2.1 Arquitectura del D-DBS ........................................................................................ 2 1.2.2 Componentes del D-DBS ...................................................................................... 3 1.2.3 Implementación ..................................................................................................... 3 1.3 Justificación.................................................................................................................. 4 1.4 Alcance del proyecto de tesis ....................................................................................... 4 1.5 Organización del documento de tesis ........................................................................... 4 Capítulo 2. Marco Teórico ..................................................................................................... 7 2.1 Introducción a la arquitectura de un D-DBS ................................................................ 7 2.2 Bases de datos distribuidas ........................................................................................... 7 2.2.1 Modelación de datos.............................................................................................. 9 2.2.2 Fragmentaciónde datos ....................................................................................... 10 2.3 Arquitecturas de software........................................................................................... 11 2.3.1 Modelos de una aplicación de base de datos ....................................................... 13 2.4 Componentes de software........................................................................................... 16 2.5 SQL............................................................................................................................. 18 2.6 UML ........................................................................................................................... 19 2.7 Software...................................................................................................................... 20 2.7.1 Características de los sistemas distribuidos......................................................... 21 2.7.2 Sistema operativo ................................................................................................ 21 2.7.3 Base de datos ....................................................................................................... 21 2.7.4 Plataforma de implementación ............................................................................ 22 2.8 Conclusión.................................................................................................................. 23 Capítulo 3. Arquitectura del D-DBS .................................................................................... 25 3.1 Importancia de la distribución de datos en un D-DBS ............................................... 25 3.2 Dimensiones de una arquitectura de referencia.......................................................... 26 3.3 Arquitectura estructural del D-DBS ........................................................................... 27 3.4 Arquitectura basada en datos del D-DBS................................................................... 29 3.5 Arquitectura basada en funciones del L-DBMS......................................................... 31 3.5.1 Un API de acceso a base de datos ....................................................................... 32 3.5.2 Funciones del API de acceso a base de datos...................................................... 32 3.5.3 Operaciones SIDU............................................................................................... 33 3.6 Arquitectura basada en componentes del D-DBMS................................................... 34 3.6.1 Secuencia de ejecución de una operación de datos (Data SIDU)........................ 36 3.6.2 Secuencia de ejecución de una operación de esquema (Schema SIDU) ............. 36 vii 3.6.3 GD/D-DB – Global directory/dictionary database .............................................. 37 3.6.3.1 GCS – Global conceptual schema ................................................................ 38 3.6.3.2 GLI – Global lock information..................................................................... 43 3.7 Conclusión.................................................................................................................. 48 Capítulo 4. Componentes del D-DBS .................................................................................. 49 4.1 API de acceso a base de datos .................................................................................... 49 4.1.1 Operaciones SIDU............................................................................................... 49 4.1.2 Data SIDU ........................................................................................................... 49 4.1.3 Schema SIDU ...................................................................................................... 54 4.1.4 Implementación de las operaciones SIDU........................................................... 62 4.1.5 Acceso a las operaciones SIDU........................................................................... 64 4.2 Un API remoto mediante el uso de proxies................................................................ 66 4.3 Componente L-DBMS................................................................................................ 71 4.4 Servidor L-DBMS ...................................................................................................... 72 4.5 Componentes del D-DBMS........................................................................................ 73 4.5.1 Componente GUI................................................................................................. 73 4.5.2 Componente GSC................................................................................................ 80 4.5.3 Componente GTM............................................................................................... 83 4.5.4 Componente GQD ............................................................................................... 89 4.5.5 Componente GD/D.............................................................................................. 93 4.6 Componente D-DBMS ............................................................................................... 99 4.7 Servidor D-DBMS.................................................................................................... 101 4.8 Cliente D-DBMS ...................................................................................................... 102 4.9 Implementación del D-DBS ..................................................................................... 104 4.10 Conclusión.............................................................................................................. 106 Capítulo 5. Implementación ............................................................................................... 107 5.1 Componentes del D-DBS ......................................................................................... 107 5.1.1 API de acceso a base de datos ........................................................................... 107 5.1.2 Un API remoto mediante el uso de proxies....................................................... 107 5.1.3 Componente L-DBMS....................................................................................... 110 5.1.4 Cliente L-DBMS ............................................................................................... 111 5.1.5 Paquete common del D-DBMS......................................................................... 112 5.1.6 Componente GUI............................................................................................... 119 5.1.7 Componente GSC.............................................................................................. 123 5.1.8 Componente GTM............................................................................................. 123 5.1.9 Componente GQD ............................................................................................. 126 5.1.10 Componente GD/D.......................................................................................... 132 5.1.11 Componente D-DBMS .................................................................................... 132 5.1.12 Cliente D-DBMS ............................................................................................. 133 5.2 Casos de prueba........................................................................................................ 134 5.3 Estadísticas de la implementación............................................................................ 135 5.4 Conclusión................................................................................................................ 137 Capítulo 6. Conclusiones.................................................................................................... 138 Apéndices ...........................................................................................................................140 A. Ventajas y desventajas de diferentes modelos arquitectónicos ................................. 140 B. SQL para crear el esquema del GD/D........................................................................ 141 C. Código fuente............................................................................................................. 143 viii C.1 dbapi ................................................................................................................. 143 C.2 L-DBMS .............................................................................................................. 188 C.3 GSC...................................................................................................................... 190 C.4 GTM..................................................................................................................... 194 C.5 GQD..................................................................................................................... 197 C.6 GD/D.................................................................................................................... 199 C.7 D-DBMS.............................................................................................................. 206 D. Ejemplos de operaciones SIDU................................................................................. 212 E. Operación Select Join................................................................................................. 214 F. Operaciones SIDU del D-DBS................................................................................... 218 G. Casos de prueba ......................................................................................................... 219 Referencias ......................................................................................................................... 235 Vita ..................................................................................................................................... 238 ix Lista de Figuras Figura 2.1: La idea del esquema global conceptual................................................................ 8 Figura 2.2: Fragmentación horizontal. ................................................................................. 10 Figura 2.3: Fragmentación vertical....................................................................................... 10 Figura 2.4: Fragmentación mixta. ........................................................................................ 11 Figura 2.5: El modelo de la aplicación de base de datos de dos capas................................. 13 Figura 2.6: El modelo de la aplicación de base de datos de N capas. .................................. 14 Figura 2.7: El mecanismo de fragmentación a manera de middleware................................ 14 Figura 2.8: El mecanismo de fragmentación de datos.......................................................... 15 Figura 3.1: Relación entre los problemas de diseño de un D-DBMS. ................................. 26 Figura 3.2: Arquitectura cliente–servidor de 3 capas del D-DBS. ....................................... 28 Figura 3.3: Arquitectura ANSI/SPARC. .............................................................................. 29 Figura 3.4: Arquitectura datalógica del D-DBS. .................................................................. 30 Figura 3.5: L-DBMS como un API de acceso a datos remotos............................................ 31 Figura 3.6: Arquitectura basada en componentes del D-DBS.............................................. 35 Figura 3.7: Definición de las tablas GD/D-GCS. ................................................................. 39 Figura 3.8: Modelo de datos del GD/D-GCS. ...................................................................... 40 Figura 3.9: Definición de las tablas GD/D-GLI. .................................................................. 44 Figura 3.10: Modelo de datos del GD/D-GLI. ..................................................................... 44 Figura 3.11: Matriz de compatibilidad de los tipos de bloqueo. .......................................... 46 Figura 4.1: Jerarquía de las operaciones Data SIDU............................................................ 50 Figura 4.2: Clase QueryResult. ...................................................................................... 51 Figura 4.3: Interfaz Select................................................................................................ 52 Figura 4.4: Interfaz Insert................................................................................................ 53 Figura 4.5: Interfaz Delete................................................................................................ 53 Figura 4.6: Interfaz Update................................................................................................ 54 Figura 4.7: Jerarquía de las operaciones Schema SIDU....................................................... 55 Figura 4.8: Interfaz DBMetaData. ..................................................................................... 55 Figura 4.9: Clase DBTable. ................................................................................................ 57 Figura 4.10: Clase DBColumn............................................................................................. 59 Figura 4.11: Interfaz CreateTable.................................................................................. 60 Figura 4.12: Interfaz AlterTable. ................................................................................... 61 Figura 4.13: Implementación de las operaciones Data SIDU. ............................................. 63 Figura 4.14: Implementación de las operaciones Schema SIDU. ........................................ 63 Figura 4.15: Implementación de la fábrica de operaciones SIDU........................................ 64 Figura 4.16: Interfaz DBConnection. .............................................................................. 65 Figura 4.17: Clase DBConnectionImplementation. ................................................ 66 Figura 4.18: Proxies de las operaciones Data SIDU. ........................................................... 67 Figura 4.19: Clase abstracta SQLOperationProxy........................................................ 68 Figura 4.20: Interfaz RemoteSQLOperation. ................................................................ 68 Figura 4.21: Implementación remota de las operaciones Data SIDU. ................................. 68 Figura 4.22: Clase abstracta SQLOperationImplementation. ................................. 69 Figura 4.23: Proxies de las operaciones Schema SIDU. ...................................................... 69 x Figura 4.24: Clase abstracta SQLSchemaOperationProxy. ........................................ 70 Figura 4.25: Interfaz RemoteSQLSchemaOperation................................................... 70 Figura 4.26: Implementación remota de las operaciones Schema SIDU. ............................ 70 Figura 4.27: Clase abstracta SQLSchemaOperationImplementation.................... 70 Figura 4.28: Implementación del L-DBMS.......................................................................... 72 Figura 4.29: Interfaz LDBMS. ............................................................................................... 72 Figura 4.30: Componente L-DBMS. .................................................................................... 72 Figura 4.31: Servidor L-DBMS............................................................................................ 73 Figura 4.32: Interfaz CreateTable (D-DBMS)............................................................... 75 Figura 4.33: Composición de la clase DBTable (D-DBMS).............................................. 76 Figura 4.34: Clase DBFragment........................................................................................77 Figura 4.35: Secuencia de ejecución de una operación Data SIDU. .................................... 78 Figura 4.36: Secuencia de ejecución de una operación Schema ID. .................................... 79 Figura 4.37: Componente GUI. ............................................................................................ 80 Figura 4.38: Implementación del componente GSC. ........................................................... 81 Figura 4.39: Clase GSC......................................................................................................... 82 Figura 4.40: Componente GSC. ........................................................................................... 83 Figura 4.41: Clase GTM......................................................................................................... 84 Figura 4.42: Composición de la clase LockObject.......................................................... 85 Figura 4.43: Clase LockObject........................................................................................ 86 Figura 4.44: Clase Restriction. .................................................................................... 88 Figura 4.45: Componente GTM. .......................................................................................... 89 Figura 4.46: Clase GQD......................................................................................................... 90 Figura 4.47: Composición de la clase GQDOperations. ................................................. 91 Figura 4.48: Clase GQDOperations................................................................................. 91 Figura 4.49: Clase OperationThread............................................................................ 92 Figura 4.50: Componente GQD. .......................................................................................... 92 Figura 4.51: Clase GDD......................................................................................................... 94 Figura 4.52: Composición de la clase GDD. ......................................................................... 96 Figura 4.53: Clase GDDTables. ......................................................................................... 96 Figura 4.54: Clase DBParameters. .................................................................................. 97 Figura 4.55: Componente GD/D. ......................................................................................... 98 Figura 4.56: Interfaz DBConnection del componente GUI............................................. 99 Figura 4.57: Implementación del D-DBMS. ...................................................................... 100 Figura 4.58: Interfaz DDBMS. ............................................................................................. 100 Figura 4.59: Componente D-DBMS................................................................................... 101 Figura 4.60: Servidor D-DBMS. ........................................................................................ 102 Figura 4.61: Cliente D-DBMS. .......................................................................................... 103 Figura 4.62: Implementación de la arquitectura basada en componentes del D-DBS. ...... 105 Figura 5.1: Proxy de la operación Select............................................................................ 109 Figura 5.2: Implementación de la operación Select. .......................................................... 109 Figura 5.3: Implementación del L-DBMS en RMI. ........................................................... 110 Figura 5.4: Clase Tuple.................................................................................................... 114 Figura 5.5: Clase Relation............................................................................................. 116 Figura 5.6: Clases derivadas de la operación Select........................................................... 121 xi Figura 5.7: Implementación del D-DBMS en RMI............................................................ 133 Figura 5.8: Tamaño relativo de los componentes del D-DBS............................................ 136 Figura 5.9: Tamaño relativo de los componentes del D-DBMS. ....................................... 136 xii Lista de Tablas Tabla 3.1: Campos de la tabla TABLES. ............................................................................. 40 Tabla 3.2: Campos de la tabla FIELDS................................................................................ 40 Tabla 3.3: Campos de la tabla CONSTRAINTS.................................................................. 40 Tabla 3.4: Campos de la tabla CONSTRAINT_FIELDS..................................................... 41 Tabla 3.5: Campos de la tabla FRAGMENTATION_KEYS............................................... 41 Tabla 3.6: Campos de la tabla FRAGMENTS. .................................................................... 41 Tabla 3.7: Campos de la tabla FRAGMENTATION_CRITERIA....................................... 41 Tabla 3.8: Campos de la tabla FRAGMENT_ALLOCATION............................................ 42 Tabla 3.9: Campos de la tabla LOCK_TABLES. ................................................................ 45 Tabla 3.10: Campos de la tabla LOCK_FIELDS. ................................................................ 45 Tabla 3.11: Campos de la tabla RESTRICTION_FIELDS.................................................. 45 Tabla 4.1: Ejemplos de las llamadas SQL de las operaciones Data SIDU........................... 50 Tabla 4.2: Ejemplos de las llamadas SQL de las operaciones Schema SIDU...................... 54 Tabla 5.1: Estadísticas LOC de la implementación del D-DBS......................................... 135 xiii Capítulo 1. Introducción Este capítulo es una introducción a este trabajo de tesis. A continuación se presentan los antecedentes, el objetivo y el alcance del proyecto de tesis. También se incluye una justificación del tema de tesis y una breve descripción del contenido de este documento. 1.1 Antecedentes El procesamiento de datos distribuidos es una necesidad que hoy en día muchas empresas tratan de satisfacer. Sin embargo, con frecuencia las organizaciones tienen problemas para encontrar un producto de software que les proporcione la solución que requieren. Este hecho parecería estar fuera de lugar en un mundo donde la tecnología de redes se ha vuelto una constante. A pesar de que ya se cuenta con la infraestructura tecnológica requerida para el proceso de información distribuida, existen varios factores que han obstaculizado el desarrollo de software capaz de satisfacer estas necesidades. Uno de estos factores es la complejidad inherente que presenta el acceso a la información distribuida. Esta complejidad se manifiesta en una serie de problemas que demandan una mayor investigación. Estos problemas son [Özsu & Valduriez, 1991; pp. 17-18]: 1. La necesidad de modelos de desempeño, metodologías y análisis de benchmark para un mejor entendimiento de los algoritmos y mecanismos de la tecnología de bases de datos distribuidas; 2. El procesamiento de consultas distribuidas; 3. Modelos transaccionales avanzados que reflejen el tipo de procesamiento requerido por las aplicaciones distribuidas; 4. Análisis de la replicación y su impacto en la arquitectura de un sistema de bases de datos distribuidas; 5. Estrategias de implementación de software D-DBMS que contemplen una mejor interfaz y comunicación con sistemas operativos distribuidos; 6. Metodologías teóricamente completas, correctas y aplicables para el diseño de bases de datos distribuidas; y 7. El conjunto de problemas implicado en la intercomunicación de sistemas autónomos de proceso de datos. Esta serie de problemas ha provocado que la mayor parte de las aplicaciones de base dedatos se enfoquen a proporcionar acceso distribuido a una base de datos centralizada como una alternativa relativamente más simple a la creación de un sistema de bases de datos distribuidas. 1.2 Objetivo del proyecto de tesis El objetivo de esta tesis es formular una arquitectura genérica basada en componentes de la distribución de datos de un sistema de bases de datos distribuidas. Con el fin de que a partir 1 dicha arquitectura sea posible construir software capaz de proporcionar acceso distribuido a la información contenida en un conjunto distribuido de bases de datos. La arquitectura propuesta se valida mediante su implementación en software. El prototipo de software resultado de la implementación provee un esquema global conceptual de la información almacenada en una base de datos distribuida, con lo cual la información es accedida como si perteneciera a una sola base de datos. El presente trabajo de tesis tiene por objetivo la descripción de la arquitectura propuesta a nivel sistema y a nivel componente. Adicionalmente, proporciona una guía para la implementación de la arquitectura. De tal forma, las aportaciones de esta tesis son: • Una arquitectura basada en componentes de la distribución de datos de un sistema de bases de datos distribuidas; • La arquitectura de los componentes de software requeridos; y • Observaciones de implementación de la arquitectura propuesta. Con estas aportaciones se contribuye a un mejor entendimiento de la complejidad inherente del acceso a información distribuida ya que en ellas se tratan algunos de los problemas asociados con esta complejidad (ver sección 1.1), en particular: • En las observaciones de implementación de la arquitectura propuesta se incluye el detalle de algoritmos empleados con sus respectivos análisis de complejidad (ver problema 1). • La arquitectura propuesta incluye un componente encargado de realizar las consultas distribuidas (ver problema 2). Este componente, llamado GQD, será descrito en los capítulos 3, 4 y 5. • Las observaciones de implementación de la arquitectura propuesta, incluidas en el capítulo 5, son una guía para la implementación de un D-DBS compuesto de un servidor D-DBMS, un conjunto de servidores L-DBMS y los clientes globales (ver problema 5) previamente descritos en los capítulos 3 y 4. • Se propone un modelo de datos para el diseño del esquema de una base de datos distribuida (ver problema 6) en las secciones 3.6.3.1 y 3.6.3.2. • Se incluye un modelo de comunicación de sistemas autónomos de proceso de datos (ver problema 7) que comprende el acceso remoto a un API de acceso a base de datos mediante objetos smart proxies [Wilson, 2000]. Este modelo de comunicación es descrito en los capítulos 3, 4 y 5. Es posible categorizar los objetivos específicos de este trabajo de tesis a partir de sus aportaciones generales, como se muestra a continuación. 1.2.1 Arquitectura del D-DBS Se propone una arquitectura basada en componentes como una alternativa a la arquitectura monolítica de un DBMS tradicional. Entendiendo por arquitectura monolítica a la de un 2 DBMS integrado cuyas partes se encuentran conectadas dependiendo unas de otras a tal grado que no es fácil hacerle modificaciones o extensiones al sistema [Geppert & Dittrich, 2000; pp. 7]. La arquitectura propuesta será descrita desde los siguientes puntos de vista: 1. Estructural; 2. Basado en datos; y 3. Basado en componentes. Los tres enfoques son utilizados para describir la arquitectura propuesta ya que cada uno de ellos hace énfasis en un aspecto diferente de la arquitectura y todos son requeridos para crear una definición completa de una arquitectura de referencia (sección 3.2). 1.2.2 Componentes del D-DBS En este trabajo de tesis se propone una arquitectura genérica basada en componentes de la distribución de datos de una base de datos distribuida y con ello se pretende comprobar que es posible describir sistemas de software similares por medio de arquitecturas genéricas incrementadas y completadas por componentes Para cumplir con este objetivo, los componentes propuestos deberán: 1. Ser funcionales; 2. Ser reutilizables; 3. Proveer una descripción clara de su propósito; y 4. Proveer una descripción clara de sus interfaces. El primer criterio, la funcionalidad de los componentes, permite validar la eficacia del diseño propuesto. Este trabajo de tesis realiza esta validación mediante casos de prueba realizados a un prototipo de software creado a partir de la arquitectura de referencia. Estos casos de prueba se incluyen en el apéndice G. El resto de los criterios son, por definición, metas del diseño de componentes de software. Al cumplir con estos criterios de diseño, se espera que un sistema basado en la arquitectura propuesta facilite la adición o reemplazo de sus componentes (sección 2.4). 1.2.3 Implementación La guía para la implementación de la arquitectura propuesta tiene los siguientes objetivos: • La implementación deberá ser confiable. Para esto, debe de contar con un mecanismo para el manejo de errores; • La implementación deberá ser representativa de los componentes propuestos; • La implementación procurará satisfacer los objetivos de un sistema distribuido; y • Un enfoque académico. El código fuente deberá ser simple, legible y estar comentado. 3 1.3 Justificación El presente trabajo de tesis se enfoca en la distribución de datos de una base de datos distribuida porque es excelente punto de partida para la creación de una arquitectura genérica de un sistema de bases de datos distribuidas debido a que la solución al problema de la distribución de datos tiene un papel central en el diseño de un D-DBMS [Özsu & Valduriez, 1999; pp. 20-24]. La arquitectura propuesta se define en base a componentes debido a que la creación de una arquitectura de un D-DBMS basado en componentes ha sido calificada como una tarea compleja que sin embargo puede dar lugar a nuevas maneras de implementar aplicaciones y servidores de base de datos además de estandarizar los sistemas de bases de datos distribuidas [Geppert & Dittrich, 2000; pp. 7]. La arquitectura propuesta reduce la complejidad de esta tarea al ser un ejemplo de arquitectura de D-DBMS basada en componentes creada con la finalidad de facilitar modificaciones o extensiones a la misma. 1.4 Alcance del proyecto de tesis El presente proyecto de tesis tiene el siguiente alcance: • La arquitectura propuesta considera exclusivamente a bases de datos con un modelo de datos relacional. • La arquitectura propuesta contempla un modelo de distribución de datos sin redundancia (modelo fragmentado). • El modelo fragmentado contemplado por la arquitectura propuesta comprende solamente criterios de fragmentación horizontal. • Se emplea el paradigma orientado a objetos para describir la arquitectura propuesta. • La arquitectura propuesta está definida en base a las operaciones SQL SELECT, INSERT, DELETE, UPDATE, CREATE TABLE y DROP TABLE. No se contempla al agrupamiento de estas operaciones en transacciones. • La arquitectura propuesta permite la concurrencia de las operaciones de datos (SELECT, INSERT, DELETE, UPDATE) pero limita la ejecución de las operaciones de esquema (CREATE TABLE, DROP TABLE) bajo un modo de usuario único. • La arquitectura no contempla las cláusulas de agrupamiento (GROUP BY, HAVING) de la operación SELECT. • La validez de la arquitectura propuesta se justifica mediante pruebas de concepto realizadas a una implementación prototipo del producto de esta investigación. 1.5 Organización del documento de tesis El resto del documento de tesis presenta la siguiente organización: En el capítulo 2, “Marco teórico,” se describen los conceptos teóricos utilizados en este trabajo de tesis. Entre estos conceptos se incluyen nociones de arquitecturas de software, 4 bases de datos distribuidas, fragmentación dedatos, componentes de software y su aplicación en una base de datos distribuida, modelos de aplicación de sistemas de bases de datos, SQL, UML y el software requerido por un sistema de bases de datos distribuidas. El capítulo 3, “Arquitectura del D-DBS,” propone una arquitectura genérica de la distribución de datos de un sistema de bases de datos distribuidas (D-DBS) basada en componentes, a nivel sistema. El capítulo 4, “Componentes del D-DBS,” describe la arquitectura propuesta en el capítulo 3 a nivel componente. Este capítulo incluye diagramas UML para la descripción de los componentes propuestos. El capítulo 5, “Implementación,” contiene observaciones de la implementación en software de la arquitectura propuesta. El contenido de este capítulo pretende facilitar el proceso de implementación de la arquitectura propuesta. El capítulo 6, “Conclusiones,” presenta las lecciones aprendidas durante el desarrollo de esta tesis, así como posibles líneas de trabajo futuro. Este documento de tesis se vale de términos técnicos en inglés con el fin de evitar la confusión que una traducción al español puede causar. Con este mismo propósito, en caso de proveer una traducción en español de un determinado término, está se dará al momento de citar al término original en inglés. En el documento se emplean los siguientes acrónimos: • DB: Base de datos (Database). Colección de datos almacenados según una determinada organización (sección 2.2). • DBMS: Sistema manejador de base de datos (Database Management System). Producto de software diseñado para ayudar en el mantenimiento y utilización de una base de datos (sección 2.2). • D-DB: Base de datos distribuida (Distributed Database, Distributed DB). Colección de bases de datos distribuidas a través de una red de computadoras interrelacionadas lógicamente (sección 2.2). • D-DBMS: Sistema manejador de base de datos distribuida (Distributed Database Management System, Distributed DBMS). Software que administra la base de datos distribuida y hace que su distribución sea transparente a los usuarios (sección 2.2). • D-DBS: Sistema de bases de datos distribuidas (Distributed Database System). Sistema cliente–servidor que permite que un cliente acceda a información almacenada en más de un servidor al mismo tiempo (sección 2.1). • GCS: Esquema global conceptual (Global Conceptual Schema) Representa una base de datos virtual cuyos datos se encuentran almacenados en distintas bases de datos (sección 2.2.1, sección 3.6). • GD/D: Directorio/diccionario de datos global (Global Directory/Dictionary) Componente de la arquitectura del D-DBMS propuesta. Almacena tanto al esquema 5 global conceptual (GCS) como a la información de los candados globales (GLI) (sección 3.6) en una base de datos. • GD/D-DB: Base de datos del directorio/diccionario de datos global (Global Directory/Dictionary Database). Ver acrónimo GD/D. • GLI: Información de los candados globales (Global Lock Information). Representa los parámetros de operación de las operaciones concurrentes en la base de datos distribuida (sección 3.6). • GQD: (Global Query Decomposer) Componente de la arquitectura del D-DBMS propuesta. Traduce las instrucciones globales en instrucciones locales utilizando la información del esquema global conceptual (GCS). Adicionalmente, se encarga de ensamblar los resultados de la ejecución de las operaciones locales y de formar una respuesta global (sección 3.6). • GSC: (Global Semantic Controller) Componente de la arquitectura del D-DBMS propuesta. Verifica la validez de la instrucción del usuario de acuerdo al esquema global conceptual (sección 3.6). • GTM: (Global Transaction Manager). Componente de la arquitectura del D-DBMS propuesta. Garantiza la sincronización de los accesos a la base de datos distribuida (sección 3.6). • GUI: (Global User Interface). Componente de la arquitectura del D-DBMS propuesta. Recibe los comandos del usuario y da formato a la respuesta que le es regresada (sección 3.6). • L-DB. Base de datos local (Local Database, Local DB). La base de datos de un nodo de la base de datos distribuida (sección 3.3). • L-DBMS: (Local Database Management System, Local DBMS). Componente que implementa un API de acceso a datos de una base de datos remota al punto de acceso (sección 4.3). Es parte de un nodo de la base de datos distribuida (sección 3.3). • SIDU: El acrónimo SIDU proviene de las iniciales de los nombres de las operaciones de datos: Select, Insert, Delete y Update. La sección 3.5.3 muestra como corresponde a las operaciones de datos (Data SIDU) y de esquema (Schema SIDU). 6 Capítulo 2. Marco Teórico Este capítulo presenta a los conceptos teóricos utilizados en este trabajo de tesis. Entre estos conceptos se incluyen nociones de arquitecturas de software, bases de datos distribuidas, fragmentación de datos, componentes de software y su aplicación en una base de datos distribuida, modelos de aplicación de sistemas de bases de datos, SQL, UML y el software requerido por un sistema de bases de datos distribuidas. 2.1 Introducción a la arquitectura de un D-DBS Cuando se desarrolla software para un problema basado en la información, la selección de la arquitectura a emplear está en función de la distribución que presentará la información, la cual depende a su vez de la naturaleza del problema y de la estrategia de solución a utilizar [Maciaszek, 2001; pp. 197]. Esta estrategia de solución implica la definición de procesos cliente, procesos servidor y procesos que se encargarán de enlazarlos (comúnmente denominados middleware). Se emplea el término cliente para nombrar a un proceso que realizará una petición a un proceso servidor. Recíprocamente, el término servidor denota a un proceso que atiende a las peticiones de los procesos cliente. La proximidad lógica y geográfica de los procesos cliente, servidor y del middleware es un factor determinante en la selección de la arquitectura a emplear. Lo más usual es que el proceso cliente y el proceso servidor sean ejecutados en diferentes computadoras, pero este no es necesariamente el caso. Es posible implementar un sistema cliente–servidor en una misma computadora. De tal forma, un sistema de bases de datos distribuidas (D-DBS) puede ser visualizado como un sistema cliente–servidor que permite que un cliente acceda a información almacenada en más de un servidor al mismo tiempo. La siguiente sección describe la composición de un sistema de bases de datos distribuidas. 2.2 Bases de datos distribuidas Una base de datos (DB) es una colección de datos almacenados según una determinada organización [Forta, 1999; pp. 2] mientras que una sistema manejador de bases de datos (DBMS) es un producto de software diseñado para ayudar en el mantenimiento y utilización de una base de datos [Bell & Grimson, 1992; pp. 14-15]. Un DBMS típicamente provee las siguientes funciones [Bell & Grimson, 1992; pp. 15-16]: 1. Mantenimiento de las estructuras físicas de datos (archivos, índices, etc.); 2. Lenguajes para la recuperación y actualización de la información (SQL, por ejemplo); 3. Facilidades para asegurar la integridad y seguridad de los datos; 4. Acceso concurrente a múltiples usuarios; 5. Medidas de respaldo y recuperación; 6. Facilidades para el mantenimiento de los meta-datos, por ejemplo mediante un diccionario de datos o un catálogo del sistema. 7 7. Independencia de datos, el aislamiento de los datos físicos de la forma en que son percibidos por los usuarios y los programadores de aplicaciones (vista lógica); y 8. Herramientas para el administrador del sistema de base de datos. Estas pueden incluir herramientas tanto para el diseño como para el monitoreo de la base de datos. Un sistema de bases de datos distribuidas (D-DBS) está compuesto de una base de datos distribuida (D-DB) y un sistema manejador de bases de datos distribuidas (D-DBMS). Una base de datos distribuidaes una colección de bases de datos distribuidas a través de una red de computadoras interrelacionadas lógicamente mientras que un sistema manejador de bases de datos distribuidas es el software que administra la base de datos distribuida y hace que su distribución sea transparente a los usuarios [Özsu & Valduriez, 1999; pp. 4]. El concepto de una base de datos distribuida implica un esquema global conceptual común a todos los usuarios de la misma. Este esquema permite recibir las peticiones de información que requieran los usuarios, localizar la información solicitada y devolverla a los usuarios. Como se puede apreciar en la figura 2.1, el esquema global conceptual crea la ilusión de la existencia de una sola base de datos a pesar de que la información se encuentra distribuida. A B Fb Esquema Global Conceptual C, D, E Fa ¿AB? ¿C? ¿F?¿DE? Figura 2.1: La idea del esquema global conceptual. Dependiendo de su implementación, un D-DBS puede presentar las siguientes ventajas [Ceri & Pelagatti, 1983; pp. 11-12]: 1. Beneficio organizacional y económico. Muchas empresas son de naturaleza distribuida y les resulta más conveniente poseer varias bases de datos pequeñas en distintas locaciones que una base de datos centralizada; 8 2. Crecimiento por incrementos. Es posible dotar a cada sitio de trabajo de la organización con su propia base de datos, misma que se convertirá en un nodo más de la base de datos distribuida de la organización. De este modo, la organización y el sistema crecen de forma simultánea; 3. Interconexión de bases de datos existentes. En el caso de que la organización tenga distintas implementaciones de datos, un sistema de bases de datos distribuidas es la alternativa requerida para aprovechar la información de la empresa en su totalidad; 4. Menores requerimientos de comunicación. La información puede distribuirse a través de los nodos de la base de datos distribuida de tal manera que esté geográficamente próxima a los sitios donde se requiere. Esto reduce el tráfico de información entre locaciones de la empresa distantes entre sí; 5. Consideraciones de desempeño. La naturaleza de la distribución de información y hardware que puede implicar una base de datos distribuida permite que cada nodo del sistema procese la información como más le convenga. En caso de requerir un alto grado de desempeño, puede asignar los recursos de hardware a un nodo del sistema en particular; y 6. Confiabilidad y disponibilidad. La distribución del sistema le confiere cierta resistencia a fallas. En el caso de una base de datos centralizada, una falla en la misma pondrá fin a la operación del sistema mientras que en una base de datos distribuida ocurrirá un fenómeno conocido como degradación, que significa que el sistema sigue operando, aunque no toda la información siga disponible. 2.2.1 Modelación de datos Se emplea el término modelación de datos para nombrar al proceso de abstraer de los problemas del mundo real las entidades involucradas y las relaciones existentes entre ellas [Sommerville, 2000]. De tal forma, el modelo de datos describe las relaciones entre los datos que forman una base de datos. A partir del modelo de datos, se crea el esquema de la base de datos. El esquema de la base de datos es la descripción de una colección particular de datos. En este trabajo de tesis, se propone una arquitectura a partir de la cual es posible construir software capaz de proveer un esquema global conceptual (GCS) que representa una base de datos virtual cuyos datos se encuentran almacenados en distintas bases de datos. Existen tres modelos de bases de datos que han sido usados tradicionalmente. Estos son: el jerárquico, el de redes y el relacional. Siendo el modelo relacional el de mayor importancia [Bell & Grimson, 1992; pp. 18-19]. Un DBMS soporta un solo modelo de datos y dado que el modelo de datos afecta las características del esquema global conceptual es necesario señalar que este trabajo de tesis considera exclusivamente a bases de datos con un modelo de datos relacional. El modelo de datos relacional representa los datos a manera de tablas bidimensionales, compuestas de renglones y columnas. Donde las tablas reciben el nombre de relación, los renglones el nombre de tuplas y las columnas el de atributos. Una colección de relaciones conforma una base de datos relacional [Bell & Grimson, 1992; pp. 19]. 9 2.2.2 Fragmentación de datos En un sistema de bases de datos distribuidas, los datos pueden ser distribuidos con o sin duplicación de datos. La duplicación, o redundancia, puede ser deseable para ciertas aplicaciones [Buretta, 1997; pp. 40-47] en las cuales la información es accedida desde distintos sitios. Como se describe en la sección 2.3, la arquitectura propuesta por este trabajo de tesis contempla un modelo estructural cliente–servidor donde la información de la base de datos distribuida es accedida por a través del servidor. Este hecho hace que la redundancia de datos sea innecesaria y por ello este trabajo de tesis se concentra en un modelo de distribución de datos sin redundancia. Un modelo de distribución de datos sin redundancia recibe el nombre de modelo fragmentado. En un modelo fragmentado, la distribución de los datos se logra mediante particiones horizontales y/o verticales. Cabe señalar que esta distribución de datos ocurre sin redundancia de datos con excepción de las llaves primarias de las relaciones en el caso de la fragmentación vertical. En el modelo relacional, la fragmentación horizontal divide a una tabla en grupos de renglones. Por lo general, el criterio de partición es el valor presente en una o más columnas de la relación (ver figura 2.2). A B C D 1 B1 C1 D1 1 B2 C2 D2 A B C D 1 B1 C1 D1 1 B2 C2 D2 2 B3 C3 D3 2 B4 C4 D4 A B C D 2 B3 C3 D3 2 B4 C4 D4 Si A = 1, Sitio N Si A = 2, Sitio M Mecanismo de Fragmentación Sitio N Sitio M Figura 2.2: Fragmentación horizontal. La fragmentación vertical implica dividir una tabla en grupos de columnas. Por lo general, los requerimientos del esquema global conceptual dictados por la naturaleza de los datos de una relación y el uso que será dado a los mismos, constituyen el criterio de división (ver figura 2.3). A B A1 B1 A2 B2 A3 B3 A4 B4 A B C D A1 B1 C1 D1 A2 B2 C2 D2 C D A3 B3 C3 D3 C1 D1 A4 B4 C4 D4 C2 D2 C3 D3 C4 D4 Si A o B, Sitio N Si C o D, Sitio M Mecanismo de Fragmentación Sitio N Sitio M Figura 2.3: Fragmentación vertical. 10 En el caso de tener un esquema global conceptual donde se presenten ambos tipos de fragmentación, se dice que tenemos fragmentación mixta (ver figura 2.4). A B A1 B1 A2 B2 A B Sitio A3 B3 V1 H1 N A4 B4 V1 H2 M V2 H1 O V2 H2 P A B C D A1 B1 C1 D1 C D A2 B2 C2 D2 C1 D1 A3 B3 C3 D3 C2 D2 A4 B4 C4 D4 C D C3 D3 C4 D4 Fragmento H1 H2 V1 V2 Mecanismo de Fragmentación Sitio M Sitio O Sitio N Sitio P Figura 2.4: Fragmentación mixta. Las figuras 2.2, 2.3 y 2.4 postulan un mecanismo de fragmentación hipotético capaz de relacionar un esquema global conceptual con una colección de bases distribuidas. La arquitectura propuesta en este trabajo de tesis corresponde a un mecanismo de fragmentación aumentado al nivel de un D-DBMS. Cabe señalar que el grado de complejidad de este mecanismo de fragmentación aumenta de acuerdo al tipo de fragmentación que es capaz de administrar, lo cual resulta en una arquitectura de software más compleja a su vez. Este trabajo de tesis se limita a la arquitectura de un mecanismo de fragmentación capaz de administrar la fragmentación horizontal debido a que este tipo de fragmentación depende fuertemente de la información almacenada, en contraste con la arquitectura vertical o híbrida que depende en mayor o menor grado del esquema de la base de datos. Este hecho hace que la fragmentación horizontal sea relevante desde el punto de vista datalógico, siendo este el enfoque sugerido por el Database ArchitectureFramework Task Group [1986, citado por Özsu & Valduriez, 1999; pp. 76-77] como la mejor guía para los esfuerzos de estandarización de sistemas DBMS ya que otorga un papel central al recurso de la información. 2.3 Arquitecturas de software El software puede descomponerse en tres niveles de diseño: arquitectura, código y ejecutable. De estos niveles, el de arquitectura es el menos estudiado [Shaw & Garlan, 1996; pp. 4]. 11 El nivel de arquitectura es una asociación general de las capacidades del sistema dimensionado en subsistemas, módulos y control de proceso [Sommerville, 2000]. Sin embargo, este nivel de diseño no ha sido entendido a profundidad por la ingeniería de software, lo cual ha ocasionado que esté representado por términos informales y diagramación inconsistente [Shaw & Garlan, 1996; pp. 4]. Como lo indica la definición precedente, el proceso de diseño arquitectónico puede dimensionarse en [Sommerville, 2000]: • Arquitectura estructural. Descompone al sistema en sub-sistemas e identifica la comunicación que tiene lugar entre ellos; • Arquitectura del control. Establece un modelo de control de las relaciones entre las diferentes partes del sistema; y • Arquitectura modular. Descompone a los sub-sistemas en módulos. Un sub-sistema es un sistema por derecho propio y su operación es independiente a la proporcionada por los demás sub-sistemas mientras que un módulo es un componente del sistema que provee servicios a otros componentes, pero que normalmente no puede ser considerado un sistema independiente [Sommerville, 2000]. El resto del documento de tesis, capítulos 3, 4 y 5, profundiza en las características de los módulos o componentes de un sistema D-DBS haciendo énfasis en el problema del diseño de la distribución de datos. El producto del proceso de diseño arquitectónico es una descripción o modelo de la arquitectura del software. Como este proceso puede ser dimensionado y dividido de la forma mencionada anteriormente, tiene como producto a varios modelos que representarán cada uno a una perspectiva diferente de una misma arquitectura de software [Sommerville, 2000]. Una breve clasificación de los diversos modelos arquitectónicos, con sus ventajas y desventajas, se incluye en el apéndice A de este trabajo de tesis. En forma general, la arquitectura propuesta en este trabajo de tesis incluye: • Un modelo estructural cliente–servidor de 3 capas con un solo servidor; • Un modelo de control centralizado en el servidor; y • Un modelo modular orientado a objetos. Desde la perspectiva estructural ha sido seleccionado un modelo cliente–servidor de 3 capas con un solo servidor dado que permite hacer un uso eficiente de los sistemas de red y hace que la tarea de distribución de la información sea sencilla [Sommerville, 2000], ambas características deseables en un sistema de bases de datos distribuidas. El modelo de control centralizado en el servidor se seleccionó con el fin de simplificar el código de una aplicación cliente de un D-DBMS implementado a partir de esta arquitectura. Finalmente, el modelo modular orientado a objetos ha sido seleccionado con el propósito de definir claramente las interfaces entre los módulos o componentes del sistema. 12 El capítulo 3 describe la arquitectura propuesta a nivel sistema, mientras que el capítulo 4 la describe a nivel componente. 2.3.1 Modelos de una aplicación de base de datos Existen 2 modelos de aplicación de base de datos ampliamente difundidos: el modelo de dos capas y el modelo de N capas [Birnam, 2001; pp. 3-14]. En el modelo de dos capas, las aplicaciones clientes se comunican con el proceso servidor de base de datos utilizando un protocolo particular de la implementación de la base de datos. Prácticamente toda la lógica de la aplicación reside en el cliente. Este modelo presenta una arquitectura demasiado rígida para el propósito de este trabajo de tesis, pues se dependería totalmente de las características de comunicación remota del protocolo de acceso de la base de datos empleada (ver figura 2.5). Servidor de Base de Datos Protocolo de la base de datos Aplicaciones Cliente Figura 2.5: El modelo de la aplicación de base de datos de dos capas. [Birnam, 2001; fig. 1-1, pp. 4] En el modelo de N capas, los clientes se comunican con una capa intermedia (middleware), por medio de un protocolo definido por la implementación e independiente de la base de datos. Esta capa intermedia es la que se encarga de mantener la conexión con la base de datos utilizando el protocolo de acceso de la base de datos (ver figura 2.6). 13 Capa Intermedia: Lógica de Negocios, Validación de Datos, Consolidación de Datos Protocolo de la base de datos Aplicaciones Cliente: Lógica de la Aplicación, Validación de Campos Servidor de Base de Datos: Stored Procedures, Triggers, Integridad Referencial Figura 2.6: El modelo de la aplicación de base de datos de N capas. [Birnam, 2001; fig. 1-2, pp. 7] Como lo implica el nombre de este modelo, pueden existir tantas capas intermedias como sea necesario. Las capas intermedias pueden servir de intermediario entre los clientes y una o más bases de datos Esta característica proporciona la flexibilidad requerida por este trabajo de tesis, pues la capa intermedia es capaz de alojar al mecanismo de fragmentación que dará lugar a la base de datos distribuida al proveer un esquema global conceptual entre los clientes y uno o más servidores de bases de datos (ver figura 2.7). Capa Intermedia: Esquema Global Conceptual, Mecanismo de Fragmentación Servidor de Base de Datos Servidor de Base de Datos Servidor de Base de Datos Protocolo de la base de datos Aplicaciones Cliente Figura 2.7: El mecanismo de fragmentación a manera de middleware. Como se ha mencionado anteriormente, el modelo de aplicación correspondiente a la arquitectura producto de este trabajo de tesis es el modelo de aplicación de base de datos de 3 capas, donde el mecanismo de fragmentación se aloja en la capa intermedia, es decir, es un middleware (ver figura 2.7). 14 La función del mecanismo de fragmentación, mostrada en la figura 2.8, consiste en: 1. Recibir peticiones de los clientes globales; 2. Traducir las peticiones de los clientes globales en términos que las bases de datos distribuidas puedan entender; 3. Recibir una respuesta de las bases de datos distribuidas; 4. Procesar la información producto del paso anterior, uniendo y ordenando las respuestas recibidas según sea necesario; y 5. Proporcionar a cada cliente el resultado que solicitó. El mecanismo de fragmentación considerado en este trabajo de tesis, contempla que los clientes globales pueden efectuar tanto operaciones orientadas a los datos, como operaciones orientadas al esquema de la base de datos. Estas operaciones son descritas en los capítulos 3, 4 y 5. Por medio de la capa intermedia, los clientes globales podrán realizar operaciones sobre un esquema global conceptual, producto de la relación creada entre el mecanismo de fragmentación y las bases de datos (ver figura 2.8). A B C D A B A1 B1 C1 D1 A1 B1 A2 B2 C2 D2 A2 B2 A3 B3 C3 D3 A4 B4 C4 D4 A B A3 B3 A4 B4 C D C1 D1 A C2 D2 A1 A2 A3 A4 C D C3 D3 Sitio C4 D4 V1 H1 N V1 H2 M V2 H1 O V2 H2 P Fragmento V1 V2 H1 H2 Capa Intermedia: Esquema Global Conceptual (EGC), Mecanismo de Fragmentación Mecanismo de Fragmentación: "Ligas de Base de Datos" Base de Datos, Sitio P Base de Datos, Sitio O Base de Datos, Sitio M Base de Datos, Sitio N Esquema Global Conceptual ¿A? Figura 2.8: El mecanismo de fragmentación de datos. 15 La figura 2.8 muestra como un cliente solicita al mecanismo de fragmentación la información de la columna A. La columna A es parte de una relación fragmentada aunque este hecho es transparente al cliente. El mecanismo de fragmentación consulta un mapa de la localización de los datos para poder recuperar la informaciónsolicitada de las bases de datos involucradas. Una vez que el mecanismo de fragmentación obtiene la información de las bases de datos, la integra para producir una respuesta global. En el ejemplo mostrado en la figura 2.8 esta respuesta global es la información de la columna A. Como puede apreciarse en la figura 2.8, el mecanismo de fragmentación de datos ilustrado posee una base de datos que contiene un mapa de la localización de los datos. Al proceso de acceder información distribuida por medio de direcciones almacenadas en un directorio global se le conoce con el término de “ligas de base de datos.” En la arquitectura propuesta por este trabajo de tesis se contempla la existencia de una base de datos auxiliar donde se almacena tanto la localización de los datos como información de las operaciones concurrentes para garantizar la integridad de los datos distribuidos. Esta base de datos y sus funciones se describen en los capítulos 3, 4 y 5 de este trabajo de tesis. 2.4 Componentes de software Es posible definir la arquitectura de un sistema específico como una colección de componentes junto con una descripción de la interacción entre dichos componentes [Shaw & Garlan, 1996; pp. 20]. Un componente de software es un artefacto de software que modela e implementa un conjunto coherente y bien definido de funciones. Un componente se compone de una interfaz y una implementación [Geppert & Dittrich, 2000; pp. 11] creados con el propósito de ser reutilizables [Jacobson et al., 1997; pp. 85]. La interfaz del componente representa el punto lógico de conexión entre el componente y el sistema. La interfaz debe de ocultar los detalles de implementación del componente y al mismo tiempo proporcionar información necesaria sobre sus características al resto del sistema [Molina, 2000; pp. 4]. Un componente es comparable con una caja negra, lo cual significa que los clientes pueden usarlos adecuadamente sin conocer su implementación a través de su interfaz. Es deseable que la interfaz y la implementación existan por separado para que puedan existir múltiples implementaciones para una interfaz y que las implementaciones puedan ser intercambiadas [Geppert & Dittrich, 2000; pp. 11]. Un componente es diseñando, empacado y documentado para ser reutilizable. Esto trae como consecuencia que el componente sea cohesivo y tenga una interfaz pública relativamente estable. El potencial de reutilización depende del alcance del componente, que puede ser muy general (reutilizable en mucho tipos de sistemas de aplicación) o limitado (específico para cierta área de negocios) [Jacobson et al., 1997; pp. 85]. Para que un componente tenga un alto potencial de reutilización se procura evitar la existencia de una gran cantidad de relaciones con otros componentes [Geppert & Dittrich, 2000; pp. 11] por lo que una buena parte del proceso de diseño de componentes debe de considerar como minimizar dichas relaciones y como dividir a un modelo en componentes reutilizables del 16 tamaño y estructura correctas [Jacobson et al., 1997; pp. 85]. Como parte de este trabajo de tesis, las relaciones entre los componentes de la arquitectura propuesta son identificadas en el capítulo 4 y se incluyen estadísticas referentes al tamaño de los mismos en el capítulo 5. Un componente no es útil por su propia cuenta, sino que es reutilizado conjuntamente con otros componentes formando así un sistema basado en componentes [Jacobson et al., 1997; pp. 86]. Este principio es conocido como reutilización por composición y los sistemas así construidos pueden ser modificados o expandidos mediante el reemplazo o la adición de nuevos componentes. Se espera que un sistema basado en componentes facilite la adición o reemplazo de los componentes sin la necesidad de recompilar (o incluso apagar) el sistema [Geppert & Dittrich, 2000; pp. 11]. Es posible describir sistemas de software similares por medio de arquitecturas genéricas incrementadas y completadas por componentes. Siendo para esto necesario que la arquitectura genérica subyacente esté definida en términos de componentes y conexiones de tal forma que sea posible añadirle componentes de forma significativa y consistente [Geppert & Dittrich, 2000; pp. 11]. En este trabajo de tesis se propone una arquitectura genérica basada en componentes de la distribución de datos de una base de datos distribuida. El paradigma orientado a objetos tiene muchas características que simplifican el desarrollo de buenos componentes, como lo son la encapsulación y el polimorfismo. Pero también posee elementos que, usados descuidadamente, pueden obstaculizar la meta de un desarrollo basado en componentes. Uno de esos mecanismos es la herencia. La herencia crea una fuerte dependencia entre una clase y su superclase, o un tipo y su supertipo. Lo que dificulta el mantenimiento de los componentes [Jacobson et al., 1997; pp. 86]. Con el fin de que el diseño de componentes no sea adversamente afectado por la fuerte dependencia creada por la herencia en los sistemas o modelos orientados a objetos, es común que los componentes posean un mayor nivel de granularidad que una clase u objeto. Un componente bien diseñado soporta un conjunto coherente de tareas mientras que los objetos y las clases típicamente comprenden solamente una fracción de dicho conjunto. Esto no significa que los conceptos de componente y objeto sean mutuamente excluyentes, más bien los componentes elevan la orientación a objetos a un nivel más alto de abstracción y granularidad. De hecho, los componentes con frecuencia son arreglos de objetos [Geppert & Dittrich, 2000; pp. 11]. En este trabajo de tesis se utilizará el paradigma orientado a objetos con el fin de aprovechar las características de encapsulación y polimorfismo facilitando así la creación de componentes y el diseño de los mismos tendrá un nivel de abstracción más elevando que el nivel clase-objeto para minimizar la fuerte dependencia creada por el mecanismo de la herencia con el propósito de crear componentes altamente reutilizables. La arquitectura basada en componentes propuesta por este trabajo de tesis pretender ser una alternativa a una arquitectura de D-DBMS monolítica. Entendiendo por arquitectura monolítica a la presentada en un sistema de software integrado cuyas partes se encuentran 17 conectadas dependiendo unas de otras a tal grado que no es fácil hacerle modificaciones o extensiones al sistema [Geppert & Dittrich, 2000; pp. 7]. Es de especial interés para este trabajo de tesis proponer una arquitectura basada en componentes dado que un DBMS monolítico podría presentar las siguientes desventajas [Castillo, 2002; pp. 8]: • El DBMS podría llegar a ser tan grande y complejo que no podría ser mantenido a un costo razonable; • Los usuarios tendrían que pagar un alto precio para adicionar funcionalidad, aún si ellos no requieren de la totalidad de las funciones del DBMS; y • Un proveedor de DBMS podría no tener la experiencia para realizar tales extensiones y podría no tener los recursos para comprometer todas las extensiones en un período de tiempo razonable. Una aportación de este trabajo de tesis es presentar una posible solución a una tarea considerada compleja por los autores Geppert y Dittrich. Estos autores afirman que dividir la funcionalidad de un DBMS en partes independientes (componentes) es un problema complicado porque es necesario encontrar un balance adecuado entre la granularidad de los servicios y el número de relaciones entre servicios. De forma similar, determinar interfaces adecuadas entre los servicios también es una tarea compleja [Geppert & Dittrich, 2000; pp. 7]. A pesar de esta complejidad, los mismos autores proponen que las arquitecturas de DBMS basadas en componentes darán lugar a formas completamente nuevas de implementar aplicaciones y servidores de bases de datos. Lo cual reportará las siguientes ventajas: • Las aplicaciones y los servidoresde bases de datos podrán elegir al proveedor de servicio óptimo para sus necesidades y no dependerán de un DBMS monolítico de gran tamaño; y • En el caso de los tener servicios estandarizados, sería posible un escenario en el cual se mezclen servicios de diferentes proveedores. De acuerdo a Geppert y Dittrich, estas ventajas podrán ser alcanzadas sólo si estos servicios (las aplicaciones y los servidores de bases de datos) y sus implementaciones son descritos y construidos a partir de componentes de software. 2.5 SQL SQL (acrónimo para Structured Query Language) es un lenguaje diseñado específicamente para la comunicación con bases de datos. Su objetivo es proporcionar una forma eficiente para leer y escribir datos en una base de datos. El estándar SQL se rige por el comité de estándares ANSI y con frecuencia es llamado ANSI SQL [Forta, 1999; pp. 5-6]. SQL tiene las siguientes ventajas [Forta, 1999; pp. 6]: • No es un lenguaje propietario utilizado por una determinada base de datos comercial. Prácticamente todas las bases de datos soportan SQL; 18 • SQL es fácil de aprender. Los estatutos están compuestos de palabras descriptivas en inglés; y • SQL es un lenguaje poderoso. A pesar de la aparente simplicidad de SQL es posible realizar complejas y sofisticadas operaciones de base de datos mediante el uso de sus elementos de lenguaje. Con el propósito de una funcionalidad extra al usuario o simplificar alguna operación específica, muchas bases de datos comerciales han extendido su soporte de SQL añadiendo estatutos o instrucciones al lenguaje. Desafortunadamente estas extensiones, con frecuencia muy útiles, tienden a ser específicas a un determinado DBMS y raramente son soportadas por más de vendedor [Forta, 1999; pp. 6]. Un testimonio del éxito de SQL es el hecho de que la mayor parte de la programación de base de datos es realizada por medio de estatutos SQL embebidos en el código de las aplicaciones. Sin embargo, a pesar de que esta técnica es conveniente y ampliamente difundida, con frecuencia promueve un problema de mantenimiento de código a medida que el esquema de la base de datos crece o cambia con el tiempo. Además, pueden llegar a existir diferentes versiones de SQL en varias partes del código o, lo que es peor, diferentes estatutos de SQL que producen el mismo resultado. Estos problemas se vuelven más difíciles de administrar a medida que crece el alcance de la aplicación y rápidamente se vuelven intratables si existen múltiples aplicaciones que usan el mismo esquema de la base de datos [Birnam, 2001; pp. 15-16]. Este problema está particularmente presente en las llamadas básicas DML (Data Manipulation Language) correspondientes a los estatutos SQL INSERT, DELETE y UPDATE o en las llamadas DQL (Data Query Language) correspondientes al estatuto SQL SELECT [Birnam, 2001; pp. 16]. Una solución al problema del SQL embebido es la construcción de un API (Application Program Interface) de base de datos [Birnam, 2001; pp. 16]. Un API es una colección de métodos de acceso a un programa, módulo o componente de software, de tal manera que la funcionalidad de este software pueda ser utilizada a partir de otro software independiente. La forma en que se accede a la funcionalidad del API es mediante llamadas a sus métodos de acceso [Molina, 2000; pp. 7]. Con el fin de minimizar el problema del SQL embebido, se incluye un API de acceso a base de datos como parte de la arquitectura propuesta basada en componentes. Este API se describe en los capítulos 3, 4 y 5. 2.6 UML UML (Unified Modeling Language) es un lenguaje visual de propósito general para especificar, visualizar, construir y documentar los artefactos de un sistema de software. Es el lenguaje estándar de modelación del Object Management Group (OMG) desde 1997 y desde entonces ha sido desarrollado y ampliamente aceptado por la industria de la tecnología informática [Maciaszek, 2001; pp. 8]. UML es independiente de un determinado proceso de desarrollo del software. Sin embargo, un proceso que adopta UML debe de soportar el paradigma orientado a objetos para la producción de software. UML no es adecuado para el antiguo paradigma de programación 19 estructurada resultante del uso de lenguajes de programación orientada a procedimientos, como lo es COBOL [Maciaszek, 2001; pp. 8]. UML también es independiente de las tecnologías de implementación (siempre y cuando estas sean orientadas a objetos). Lo cual hace que UML sea algo deficiente para soportar la fase de diseño detallado del ciclo de desarrollo del software. Sin embargo, esta misma característica hace que UML sea resistente a cambios frecuentes en las plataformas de implementación [Maciaszek, 2001; pp. 8]. Las construcciones de lenguaje de UML permiten la modelación de la estructura estática y el comportamiento dinámico de un sistema. Un sistema se modela como un conjunto cooperativo de objetos (módulos de software) que reaccionan a eventos externos para realizar tareas en beneficio a sus clientes (usuarios). Los modelos individuales enfatizan algunos aspectos del sistema e ignoran aspectos que son enfatizados en otros modelos. Conjuntamente, todos los modelos proporcionan una descripción completa del sistema [Maciaszek, 2001; pp. 8-9]. Los modelos UML pueden clasificarse en tres grupos [Maciaszek, 2001; pp. 9]: • Modelos de estado (describen estructuras estáticas); • Modelos de comportamiento (describen las colaboraciones entre objetos); y • Modelos de cambio de estado (describen los estados válidos para el sistema). Este trabajo de tesis hará uso de UML para describir la arquitectura propuesta por las siguientes razones: • El que UML sea resistente a cambios frecuentes en las plataformas de implementación lo convierte en un lenguaje adecuado para describir una arquitectura genérica de software; • UML está construido en base al paradigma orientado a objetos por lo cual simplifica la descripción de los componentes de la arquitectura propuesta; y • UML es capaz de describir la estructura estática (arquitectura) y el comportamiento dinámico de un sistema como un conjunto cooperativo de objetos. Los capítulos 4 y 5 utilizan modelos UML de estado y de comportamiento para describir los componentes de la arquitectura propuesta. 2.7 Software Este trabajo de tesis comprende una implementación en software de la arquitectura propuesta. El software utilizado en la implementación fue seleccionado tomando en cuenta las características de un sistema distribuido, como se describe a continuación. 20 2.7.1 Características de los sistemas distribuidos Los sistemas distribuidos, de los cuales las bases de datos distribuidas con un ejemplo, exhiben las siguientes características [Buretta, 1997; pp. 30]: • Componentes remotos. Los componentes del sistema están distribuidos geográficamente; • Concurrencia. Cualquier número de componentes pueden ejecutarse en paralelo. • Aislamiento de fallas. Cualquier componente puede fallar independientemente de los demás; • Mezcla heterogénea de tecnologías. El entorno usualmente contiene una mezcla de tecnologías que cambia lentamente con el tiempo; • Movilidad de los componentes. Los recursos, nodos de proceso y los usuarios son físicamente móviles; • Naturaleza asíncrona de los eventos. No puede asumirse que ocurren cambios relacionados en un instante determinado de tiempo; y • Carencia de un estado global. El estado global de un sistema distribuido no puede determinarse con precisión. 2.7.2 Sistema operativo En un sistema de bases de datos distribuidas donde existen componentes remotos, una mezcla heterogénea de tecnologías y componentes móviles, es deseable que la implementación pueda ejecutarse en cualquier hardware y bajo cualquier sistema operativo. Una manera de lograr esto es mediante el uso de una máquina virtual. Con una máquina virtual es posible crear software independiente de
Compartir