15 de febrero de 2011

1.5. Soporte del SQL

1.5.   Soporte del SQL


Las bases de datos distribuidas deben de tener la capacidad para poder ejecutar consultas en SQL de la misma manera que una base de datos centralizada, aunque se debe de tenr cuidadon con los nombres de las tablas, las bases e datos, etc

1.4. Problemas de los sistemas distribuidos

1.4.   Problemas de los sistemas distribuidos


El rendimiento puede ser peor para el procesamiento distribuido que para el procesamiento centralizado. Depende de la naturaleza de la carga de trabajo, la red, el DDBMS y las estrategias utilizadas de concurrencia y de falla, así como las ventajas del acceso local a los datos y de los procesadores múltiples, ya que éstos pueden ser abrumados por las tareas de coordinación y de control requeridas. Tal situación es probable cuando la carga de trabajo necesita un gran número de actualizaciones concurrentes sobre datos duplicados, y que deben estar muy distribuidos.
El procesamiento de base de datos distribuida puede resultar menos confiable que el procesamiento centralizado. De nuevo, depende de la confiabilidad de las computadoras de procesamiento, de la red, del DDBMS, de las transacciones y de las tasas de error en la carga de trabajo. Un sistema distribuido puede estar menos disponible que uno centralizado. Estas dos desventajas indican que un procesamiento distribuido no es ninguna panacea. A pesar de que tiene la promesa de un mejor rendimiento y de una mayor confiabilidad, tal promesa no está garantizada.
Otro problema a es su mayor complejidad, a menudo se traduce en altos gastos de construcción y mantenimiento. Ya que existen más componentes de hardware, hay más cantidad de cosas por aprender y más interfaces susceptibles de fallar. El control de concurrencia y recuperación de fallas puede convertirse en algo complicado y difícil de implementar, puede empujar a una mayor carga sobre programadores y personal de operaciones y quizá se requiera de personal más experimentado y más costoso.
El procesamiento de bases de datos distribuido es difícil de controlar. Una computadora centralizada reside en un entorno controlado, con personal de operaciones que supervisa muy de cerca, y las actividades de procesamiento pueden ser vigiladas, aunque a veces con dificultad. En un sistema distribuido, las computadoras de proceso, residen muchas veces en las áreas de trabajo de los usuarios. En ocasiones el acceso físico no está controlado, y los procedimientos operativos son demasiado suaves y efectuados por personas que tienen escasa apreciación o comprensión sobre su importancia. En sistemas centralizados, en caso de un desastre o catástrofe, la recuperación puede ser más difícil de sincronizar.
Procesamiento de Consultas
El problema más grande es que las redes de comunicación ( las de larga distancia en especial ) son lentas. El objetivo es reducir al mínimo el tráfico en la red y esto implica que el proceso mismo de optimización de consultas debe ser distribuido, además del proceso de ejecución de las consultas. Es decir un proceso representativo consistirá en un paso de optimización global, seguido de pasos de optimización local en cada unos de los sitios afectados.
Administración de Catálogo
En un sistema distribuido, el catálogo del sistema incluirá no solo la información usual acerca de las relaciones, índices, usuarios, sino también toda la información de control necesaria para que el sistema pueda ofrecer la independencia deseada con respecto a la localización, la fragmentación y la réplica.
  • Centralizado (" no depender de un sitio central")
  • Replicas completas (" falta de autonomía, toda la actualización debe ser propagada a cada sitio ")
  • Dividido ( muy costoso )
  • Combinación de 1 y 3 (" no depender de un sitio central "). 
Propagación de Actualizaciones
El problema básico con la réplica de datos, es la necesidad de propagar cualquier modificación de un objeto lógico dado a todas las copias almacenadas de ese objeto. Un problema que surge es que algún sitio donde se mantiene una copia del objeto puede NO estar disponible, y fracasaría; la modificación si cualquiera de las copias no esta disponible.
Para tratar este problema se habla de " una copia primaria " y funciona así :
· Una de las copias del objeto se designa como copia primaria, y las otras serán secundarias.
· Las copias primarias de los distintos objetos están en sitios diferentes.
· Las operaciones de actualización se consideran completas después de que se ha modificado la copia primaria.
. El sitio donde se encuentra esa copia se encarga entonces de propagar la actualización a las copias secundarias.
Recuperación
Basado en el protocolo de compromiso de dos fases. El compromiso de dos fases es obligatorio en cualquier ambiente en el cual una sola transacción puede interactuar con varios manejadores de recursos autónomos, pero tiene especial importancia en un sistema distribuido porque los manejadores de recursos en cuestión ( o sea los DBMS locales ) operan en sitios distintos y por tanto son muy autónomos. En particular, son vulnerables a fallas dependientes. Surgen los siguientes puntos :
  1. El objetivo de "no dependencia de un sitio central" dicta que la función de coordinador no debe asignarse a un sitio específico de la red, sino que deben realizarla diferentes sitios para diferentes transacciones. Por lo regular se encarga de ella el sitio en el cual se inicia la transacción en cuestión.
  2. El proceso de compromiso en dos fases requiere una comunicación entre el coordinador y todos los sitios participantes, lo cual implica más mensajes y mayor costo extra.
  3. Si el sitio Y actúa como participante en un proceso de compromiso en dos fases coordinado por el sitio X, el sitio Y deberá hacer lo ordenado pro el sitio X ( compromiso o retroceso, según se aplique ), lo cual implica otra pérdida de autonomía local.
  4. En condiciones ideales, nos gustaría que el proceso de compromiso en dos fases funcionara aun en caso de presentarse fallas de sitios o de la red en cualquier punto. Idealmente, el proceso debería ser capaz de soportar cualquier tipo concebible de falla. Por desgracia es fácil ver que este problema es en esencia imposible de resolver; es decir, no existe un protocolo finito que garantice el compromiso al unísono de una transacción exitosa por parte de todos los agentes, o el retroceso al unísono de una transacción no exitosa en caso de fallas arbitrarias.

Concurrencia
Este concepto tiene que ver con la definición de un agente. El manejo de transacciones tiene dos aspectos principales, el control de recuperación y el control de concurrencia. En un sistema distribuido, una sola transacción puede implicar la ejecución de código en varios sitios ( puede implicar actualizaciones en varios sitios ), entonces se dice que una transacción esta compuesta por varios agentes, donde un agente es el proceso ejecutado en nombre de una transacción dada en determinado sitio. Y el sistema necesita saber cuando dos agentes son parte de la misma transacción.

1.3. Sistema cliente / servidor

1.3.   Sistema cliente / servidor


Cliente-servidor


Esta arquitectura consiste básicamente en un programa cliente que realiza peticiones a otro programa -el servidor- que le da respuesta. Aunque esta idea se puede aplicar a programas que se ejecutan sobre una sola computadora es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras.
En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema.
La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa. Los tipos específicos de servidores incluyen los servidores web, los servidores de archivo, los servidores del correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma.
Una disposición muy común son los sistemas multicapa en los que el servidor se descompone en diferentes programas que pueden ser ejecutados por diferentes computadoras aumentando así el grado de distribución del sistema.
La arquitectura cliente-servidor sustituye a la arquitectura monolítica en la que no hay distribución, tanto a nivel físico como a nivel lógico.
Características
Características de un cliente
En la arquitectura C/S el remitente de una solicitud es conocido como cliente. Sus características son:
    • Es quien inicia solicitudes o peticiones, tienen por tanto un papel activo en la comunicación (dispositivo maestro o amo).
    • Espera y recibe las respuestas del servidor.
    • Por lo general, puede conectarse a varios servidores a la vez.
    • Normalmente interactúa directamente con los usuarios finales mediante una interfaz gráfica de usuario.
    Características de un servidor
    En los sistemas C/S el receptor de la solicitud enviada por cliente se conoce como servidor. Sus características son:
    • Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempeñan entonces un papel pasivo en la comunicación (dispositivo esclavo).
    • Tras la recepción de una solicitud, la procesan y luego envían la respuesta al cliente.
    • Por lo general, aceptan conexiones desde un gran número de clientes (en ciertos casos el número máximo de peticiones puede estar limitado).
    • No es frecuente que interactúen directamente con los usuarios finales.
    Ventajas
    • Centralización del control: los accesos, recursos y la integridad de los datos son controlados por el servidor de forma que un programa cliente defectuoso o no autorizado no pueda dañar el sistema. Esta centralización también facilita la tarea de poner al día datos u otros recursos (mejor que en las redes P2P).
    • Escalabilidad: se puede aumentar la capacidad de clientes y servidores por separado. Cualquier elemento puede ser aumentado (o mejorado) en cualquier momento, o se pueden añadir nuevos nodos a la red (clientes y/o servidores).
    • Fácil mantenimiento: al estar distribuidas las funciones y responsabilidades entre varios ordenadores independientes, es posible reemplazar, reparar, actualizar, o incluso trasladar un servidor, mientras que sus clientes no se verán afectados por ese cambio (o se afectarán mínimamente). Esta independencia de los cambios también se conoce como encapsulación.
    • Existen tecnologías, suficientemente desarrolladas, diseñadas para el paradigma de C/S que aseguran la seguridad en las transacciones, la amigabilidad del interfaz, y la facilidad de empleo.
    Desventajas
    • La congestión del tráfico ha sido siempre un problema en el paradigma de C/S. Cuando una gran cantidad de clientes envían peticiones simultaneas al mismo servidor, puede ser que cause muchos problemas para éste (a mayor número de clientes, más problemas para el servidor). Al contrario, en las redes P2P como cada nodo en la red hace también de servidor, cuanto más nodos hay, mejor es el ancho de banda que se tiene.
    • El paradigma de C/S clásico no tiene la robustez de una red P2P. Cuando un servidor está caído, las peticiones de los clientes no pueden ser satisfechas. En la mayor parte de redes P2P, los recursos están generalmente distribuidos en varios nodos de la red. Aunque algunos salgan o abandonen la descarga; otros pueden todavía acabar de descargar consiguiendo datos del resto de los nodos en la red.
    • El software y el hardware de un servidor son generalmente muy determinantes. Un hardware regular de un ordenador personal puede no poder servir a cierta cantidad de clientes. Normalmente se necesita software y hardware específico, sobre todo en el lado del servidor, para satisfacer el trabajo. Por supuesto, esto aumentará el coste.
    • El cliente no dispone de los recursos que puedan existir en el servidor. Por ejemplo, si la aplicación es una Web, no podemos escribir en el disco duro del cliente o imprimir directamente sobre las impresoras sin sacar antes la ventana previa de impresión de los navegadores.

     


    Funcionamiento del sistema cliente/servidor

    Un sistema cliente/servidor funciona tal como se detalla en el siguiente diagrama:
    El cliente envía una solicitud al servidor mediante su dirección IP y el puerto, que está reservado para un servicio en particular que se ejecuta en el servidor.
    • El servidor recibe la solicitud y responde con la dirección IP del equipo cliente y su puerto

    1.2. Los doce objetivos de una base de datos distribuidas

    1.2.   Los doce objetivos de una base de datos distribuidas


    Son condiciones que debe cumplir todo Sistema de Bases de Datos Distribuido: Desde el punto de vista del usuario, un sistema distribuido debe ser idéntico a un sistema no distribuido
    1. AUTONOMÍA LOCAL
    Los sitios de un SD deben ser autónomos en el mayor grado posible.
    • Datos locales son propiedad local y se gestiona localmente
    • Las operaciones locales siguen siendo puramente locales
    • Todas las operaciones en un nodo concreto son controladas por el mismo nodo
    Cada lugar o nodo debe contener:
    • Propietario local.
    • Administración local.
    • Responsabilidad local.
    • Integración local.
    • epresentación local.
    2. NO DEPENDENCIA DE UN NODO CENTRAL
    Todos los sitios deben ser tratados como iguales, no debe haber servidores centralizados para servicios como:
    • Gestión de transacciones
    • Detección de interbloqueos
    • Optimización de consultas
    No debe existir un único sitio porque ocasionaría:
    • Cuello de botella.
    • Vulnerabilidad.
    3. OPERACIÓN CONTINUA
    El Sistema Distribuidao debe aumentar:
    • Confiabilidad
    • Fiabilidad (probabilidad de  que esté listo en un periodo largo de tiempo).
    No se debe efectuar una detección planificada para:
    • Añadir o eliminar un nodo del sistemas
    • La creación y borrado de fragmentos dinámicamente en uno o más nodos
    • Actualización de versiones.
    4. INDEPENDENCIA DE LA UBICACION
    Para el usuario la localización física de los  datos debe ser transparente.
    Es equivalente a la transparencia de ubicación, el usuario puede acceder a la BD desde cualquier nodo.
    Se podrá acceder a todos los datos  como si estuvieran almacenados en el nodo del usuario
    5. INDEPENDENCIA DE LA FRAGMENTACION
    Los usuarios no necesitan conocer los fragmentos físicos en que está dividida cada  colección lógica de datos
    Los usuarios podrán acceder a los datos sin que tenga que saber como estén fragmentados
    Cada lugar tiene los datos que usa con mayor frecuencia.
    El usuario no debe notar la fragmentación.
    6. INDEPENDENCIA DE REPLICACION
    Los usuarios no necesitan  tener en cuenta si los datos tienen réplicas o no.
    La réplica proporciona:
    • VENTAJAS:
      • Mayor Prestación: los datos son locales.
      • Mayor disponibilidad: los datos son accesibles siempre.
    • DESVENTAJAS
      • Hay que propagar las actualizaciones.
    La creación y destrucción de réplicas debe hacerse transparente al usuario.
    7. PROCESAMIENTO DE CONSULTAS DISTRIBUIDAS
    El sistema debe de ser capaz de procesar consultas que hagan referencia a datos situados a mas de un nodo
    8. PROCESAMIENTO DE TRANSACCIONES DISTRIBUIDAS
    El sistema debe garantizar que las transacciones tanto globales como locales se adapten a las reglas ACID de las transacciones
    ACID
    Atomicidad.- todas las acciones de la transacción se realizan o ninguna de ellas se lleva a cabo. La atomicidad requiere que si una transacción se interrumpe por una falla, sus resultados parciales deben ser deshechos.
    Consistencia.- una transacción es un programa correcto que lleva la base de datos de un estado consistente a otro con la misma característica. Debido a esto, las transacciones no violan las restricciones de integridad de una base de datos.
    9. INDEPENDENCIA DEL HARDWARE
    Debe ser posible ejecutar el SGBDD en una diversidad de plataformas
    10. INDEPENDENCIA DEL SOFTWARE.
    Debe ser posible ejecutar el SGBDD en una diversidad de sistemas operativos
    11. INDEPENDENCIA DE LA RED
    Debe ser posible ejecutar el SGBDD en una diversidad de redes de comunicaciones distintas
    12. INDEPENDENCIA DE LA BASE DE DATOS
    Admitir la heterogeneidad (todos los nodos pueden estar ejecutando diferentes SGBD, los cuales no tienen por qué estar basados en un mismo modelo de datos subyacente, el sistema puede estar compuesto por diferentes SGDB relacionales, en red, jerárquicos u orientados a objetos)

    1.1 Ventajas de las Bases de datos distribuidas .

    1.1 Ventajas de las Bases de datos distribuidas .


     Entre las ventajas más ilustrativas de las BDDs está su flexibilidad, soporte para el manejo de tipos de datos complejos. Por ejemplo, en una base de datos convencional, si una empresa adquiere varios clientes por referencia de clientes servicio, pero la base de datos existente, que mantiene la información de clientes y sus compras, no tiene un campo para registrar quién proporcionó la referencia, de qué manera fue dicho contacto, o si debe compensarse con una comisión, sería necesario reestructurar la base de datos para añadir este tipo de modificaciones. Por el contrario, en una BDOO, el usuario puede añadir una "subclase" de la clase de clientes para manejar las modificaciones que representan los clientes por referencia.
    La subclase heredará todos los atributos, características de la definición original, además se especializará en especificar los nuevos campos que se requieren así como los métodos para manipular solamente estos campos. Naturalmente se generan los espacios para almacenar la información adicional de los nuevos campos. Esto presenta la ventaja adicional que una BDOO puede ajustarse a usar siempre el espacio de los campos que son necesarios, eliminando espacio desperdiciado en registros con campos que nunca usan.
    La segunda ventaja de una BDOO, es que manipula datos complejos en forma rápida y ágilmente. La estructura de la base de datos está dada por referencias (o apuntadores lógicos) entre objetos. No se requieren búsquedas en tablas o uniones para crear relaciones. Esta capacidad resulta atractiva en aplicaciones de la ingeniería, donde las relaciones entre componentes dependen de factores diversos. Por ejemplo, considérese una aplicación en el diseño de vehículos automotores. El fabricante que quiere determinar una lista de partes necesarias para un auto, para un modelo particular requiere de diferentes decisiones subsecuentes para elaborarla, Si el modelo es automático o estándar, se necesita de un chasis particular como de la caja de velocidades correspondientes.

    Escoger un tipo de motor obliga a decidir sobre otras partes requeridas, todo esto hasta el nivel de componentes y piezas individuales. Armar esta lista de componentes resulta más ágil en una BDOO que en una base de datos relacional. En un modelo relacional las tablas deben ser barridas, buscadas cada vez que se indica una condición, resultando, posiblemente, en miles de direccionamientos.

    Unidad 1

    1 .Fundamentos de las bases de datos distribuidas

    • 1.1.  Ventajas de las bases de datos distribuidas contra las bases de datos centralizadas

    • 1.2.   Los doce objetivos de una base de datos distribuidas

    • 1.3.   Sistema cliente / servidor+

    • 1.4.   Problemas de los sistemas distribuidos

    • 1.5.   Soporte del SQL

    Presentacion de la materia

    • Objetivo general de la asignatura:
      • Adquirir las técnicas para el diseño, manejo, administración y mantenimiento de las bases de datos distribuidas.

    • Aportacion al perfil del egresado
      • Maneja de bases de datos de manera distribuida para poder inplementarlas en un sistema distribuido