Transparencia El concepto de transparencia de un sistema distribuido va ligado a la idea de que todo el sistema funcione de forma similar en todos los puntos de la red, independientemente de la posición del usuario. Queda como labor del sistema operativo el establecer los mecanismos que oculten la naturaleza distribuida del sistema y que permitan trabajar a los usuarios como si de un único equipo se tratara. En un sistema transparente, las diferentes copias de un archivo deben aparecer al usuario como un único archivo. Queda como labor del sistema operativo el controlar las copias, actualizarlas en caso de modificación y en general, la unicidad de los recursos y el control de la concurrencia. El que el sistema disponga de varios procesadores debe lograr un mayor rendimiento del sistema, pero el sistema operativo debe controlar que tanto los usuario como los programadores vean el núcleo del sistema distribuido como un único procesador. El paralelismo es otro punto clave que debe controlar el sistema operativo, que debe distribuir las tareas entre los distintos procesadores como en un sistema multiprocesador, pero con la dificultad añadida de que ésta tarea hay que realizarla a través de varios ordenadores. El termino Trasparencia esta definido como: "La ocultación de la separación entre el usuario y el programador de la aplicación, tal que el sistema es percibido como un todo y no como una colección de componentes independientes". Las implicaciones de la Trasparencia son de gran influencia en el diseño de los sistemas de software. ANSA [1987] identifica 8 formas de trasparencia: * Acceso Trasparente: permite acceder a archivos locales o remotos y a otros tipos de objetos usando las mismas instrucciones. * Localización Trasparente: permite accesar a un objeto determinado sin necesidad de conocer su localización. * Concurrencia Trasparente: permite a varios usuarios o programas de aplicaciones a operar concurrentemente o compartiendo datos sin una interface entre ellos. * Replicación Trasparente: permite múltiples instancias de archivos y otros datos usados e incrementa la veracidad y desempeño sin el conocimiento de las replicas por parte de los usuarios o por los programas de aplicación. * Trasparencia en Fallas: posibilita el ocultamiento de fallas, permitiendo a los usuarios y programas de aplicación completar sus tareas a pesar de fallas de componentes de hardware o de software. * Trasparencia en Migración: permite el movimiento de los objetos del sistema sin afectar la operación de los usuarios de los programas de aplicación. * Trasparencia en el Desempeño: permite al sistema ser reconfigurado para mejorar el desempeño al variar la carga, por ejemplo. * Escalabilidad Trasparente: permite al sistema y a las aplicaciones expandirse en forma escalar sin cambiar la estructura del sistema o los algoritmos de aplicación. En el tema de referente a Elementos de Diseño que se encuentra más adelante en esta obra, se tocará el tema de Trasparencia en una forma más amplia. Heterogéneos: Nos referimos a cuando el equipo elegido tanto en hardware como en software presentan problemas de compatibilidad y requiere de equipos especiales o software de colectividad para asegurar el funcionamiento del mismo. Heterogeneidad. La heterogeneidad se puede presentar a varios niveles: hardware, sistema de comunicaciones, sistema operativo o SMBD. Para el caso de SMBD heterogéneos ésta se puede presentar debido al modelo de datos, al lenguaje de consultas o a los algoritmos para manejo de transacciones. Autonomía. La autonomía se puede presentar a diferentes niveles: Autonomía de diseño. La habilidad de un componente del SMBD para decidir cuestiones relacionadas a su propio diseño. Autonomía de comunicación. La habilidad de un componente del SMBD para decidir como y cuando comunicarse con otros SMBD. Autonomía de ejecución. La habilidad de un componente del SMBD para ejecutar operaciones locales de la manera que él quiera. Figura 2.9. Arquitectura de un SMBDD homogéneo. Desde el punto de vista funcional y de organización de datos, los sistemas de datos distribuidos están divididos en dos clases separadas, basados en dos filosofía totalmente diferentes y diseñados para satisfacer necesidades diferentes: Sistemas de manejo de bases de datos distribuidos homogéneos Sistemas de manejo de bases de datos distribuidos heterogéneos Un SMBDD homogéneo tiene múltiples colecciones de datos; integra múltiples recursos de datos como se muestra en la Figura 2.9. Los sistemas homogéneos se parecen a un sistema centralizado, pero en lugar de almacenar todos los datos en un solo lugar, los datos se distribuyen en varios sitios comunicados por la red. No existen usuarios locales y todos ellos accesan la base de datos a través de una interfaz global. El esquema global es la unión de toda las descripciones de datos locales y las vistas de los usuarios se definen sobre el esquema global. Para manejar los aspectos de la distribución, se deben agregar dos niveles a la arquitectura estándar ANSI-SPARC, como se muestra en la Figura 2.10. El esquema de fragmentación describe la forma en que las relaciones globales se dividen entre las bases de datos locales. La Figura 2.11 presenta el ejemplo de una relación, R, la cual se divide en cinco fragmentos. El esquema de asignamiento especifica el lugar en el cual cada fragmento es almacenado. De aquí, los fragmentos pueden migrar de un sitio a otro en respuesta a cambios en los patrones de acceso. Figura 2.10. Arquitectura de los esquemas de un SMBDD homogéneo. 1.3 Autonomía en BDD Para lograr la independencia entre bases de datos componentes de un sistema distribuido, es necesario considerar los tipos de autonomía descritos por [Sheth y Larson 1990], los cuales se detallan a continuación: Autonomía de diseño.- La capacidad de que cada Base de Datos Componente (BDC) decida los aspectos concernientes con su diseño. Es decir, las personas involucradas son libres de decidir cualquier particularidad e incluso decidir que DBMS usar. Los aspectos a considerar en la autonomía de diseño son: El universo de datos relevante para el sistema La representación (modelo de datos, lenguaje de consultas) y el nombrado de los datos La conceptualización o interpretación semántica de los datos (heterogeneidad semántica) Restricciones usadas para administrar los datos La funcionalidad del sistema La asociación y compartición con otros sistemas y La implementación (p.e. registros y estructuras de archivos). Autonomía de comunicación.- La habilidad de que una BDC decida comunicarse o no con otro componente de una misma federación. Autonomía de ejecución.- Es la habilidad de una BDC para ejecutar operaciones locales sin la interferencia de operaciones externas, en el orden que la BDC lo decida. Autonomía de asociación.- Cada BDC decide cuanto y cuando puede compartir su funcionalidad y recursos con otros componentes, inclusive la capacidad de asociarse o retirarse de una o más federaciones.