Bases de datos distribuidas

Son la que almacenan datos que pertenecen lógicamente a un sólo sistema, pero se encuentra físicamente esparcido en varios “sitios” de la red. Un sistema de base de datos distribuidos se compone de un conjunto de sitios, conectados entre sí mediante algún tipo de red de comunicaciones, en el cual:

•  Cada sitio es un sistema de base de datos en sí mismo.

•  Los sitios trabajan en conjunto si es necesario con el fin de que un usuario de cualquier sitio pueda obtener acceso a los datos de cualquier punto de la red tal como si todos los datos estuvieran almacenados en el sitio propio del usuario.

**Historia**

 La necesidad de almacenar datos de forma masiva dio paso a la creación de los sistemas de bases de datos.

La base de datos distribuidas originalmente almacenan la información de manera centralizada, pero con el paso del tiempo las necesidades aumentaron y esto produjo ciertos inconvenientes que no era posible solucionarlos o volverlos eficientes de la forma centralizada. Estos problemas impulsaron la creación de almacenamiento distribuido, los cuales hoy en día proveen características indispensables en el manejo de información; es decir, la combinación de las redes de comunicación y las bases de datos.

***Ambientes de bases de datos distribuidas***

 Las BDD pueden ser:

* Homogéneas: Todos los sitios tienen el mismo SGBD, son conscientes de la existencia de los demás sitios y cooperan en el procesamiento de las solicitudes. Los sitios locales mantienen un mismo esquema y SGBD.

* Heterogéneas: Cada sitio puede tener un SGBD distinto así como esquemas diferentes. Puede que algunos sitios no conozcan a otros. Puede que solo ofrezcan facilidades limitadas para la cooperación en el procesamiento de transacciones.

***Sistema de Gestión de Base de Datos Distribuida***

Un sistema de gestión de bases de datos distribuidas (SGBDD) es un Sistema de Gestión de bases de datos que gestiona la BD distribuida

***Funcionalidades de un SGBDD***

* Accede a sitios remotos y transmite consultas y datos a través de varios sitios mediante *una red* de comunicación.
* Almacena el esquema de distribución y replicación de los datos en el catalogo del sistema.
* Establece las estrategias de ejecución de las consultas y las transacciones que acceden a los datos en más de un sitio.
* Decide sobre cual copia de los datos replicados acceder.
* Mantiene la consistencia de las copias de los datos replicados.
* Realiza la recuperación ante los fallos.

**Componentes de un sistema gestor distribuido**

**Hardware**

El hardware que compone una base de datos distribuida se reduce a servidores y la red.

**Software**

*Sistema manejador de base de datos distribuida (DDBMS):* Este sistema está formado por las transacciones y los administradores de la base de datos distribuidos. Un DDBMS implica un conjunto de programas que operan en diversas computadoras, estos programas pueden ser subsistemas de un único DDBMS de un fabricante o podría consistir de una colección de programas de diferentes fuentes.

*Administrador de transacciones distribuidas (DTM):* Este es un programa que recibe las solicitudes de procesamiento de los programas de consulta o transacciones y las traduce en acciones para los administradores de la base de datos. Los DTM se encargan de coordinar y controlar estas acciones. Este DTM puede ser propietario o desarrollado en casa.

El manejador de transacciones es el encargado de definir la estructura de las transacciones, mantener la consistencia en la base de datos cuando se ejecuta una transacción o se cancela la ejecución de una, mantener protocolos de fiabilidad, implementar algoritmos para el control de la concurrencia y sincronizar las transacciones que se ejecutan simultáneamente.

El manejador recibe solicitudes de procesamiento de transacciones y las traduce en acciones para el calendarizador.

La operación COMMIT señala el término exitoso de la transacción: le dice al manejador de transacciones que se ha finalizado con éxito una unidad lógica de trabajo, que la base de datos esta (o debería estar) de nuevo en un estado consistente, y que se pueden hacer permanentes todas las modificaciones efectuadas por esa unidad de trabajo.

La operación ROLLBACK, en cambio, señala el término no exitoso de la transacción: le dice al manejador de transacciones que algo salió mal, que la base de datos podría estar en un estado inconsistente y que todas las modificaciones efectuadas hasta el momento por la unidad lógica de trabajo deben retroceder o anularse.

*Sistema manejador de base de datos (DBMS):*Es un programa que procesa cierta porción de la base de datos distribuida. Se encarga de recuperar y actualizar datos del usuario y generales de acuerdo con los comandos recibidos de los DTM.

*Nodo*: Un nodo es una computadora que ejecuta un DTM o un DBM o ambos. Un nodo de transacción ejecuta un DTM y un nodo de base de datos ejecuta un DBM.

**Distribución de los datos**

Una de las decisiones más importantes que el diseñador de bases de datos distribuidas debe tomar es el posicionamiento de la data en el sistema y el esquema bajo el cuál lo desea hacer. Para esto existen cuatro alternativas principales: centralizada, replicada, fragmentada, e híbrida.

**Centralizada**

Es muy similar al modelo de Cliente/Servidor en el sentido que la BDD está centralizada en un lugar y los usuarios están distribuidos. Este modelo solo brinda la ventaja de tener el procesamiento distribuido ya que en sentido de disponibilidad y fiabilidad de los datos no se gana nada.

**Replicadas**

El esquema de BDD de replicación consiste en que cada nodo debe tener su copia completa de la base de datos. Es fácil ver que este esquema tiene un alto costo en el almacenamiento de la información. Debido a que la actualización de los datos debe ser realizada en todas las copias, también tiene un alto costo de escritura, pero todo esto vale la pena si tenemos un sistema en el que se va a escribir pocas veces y leer muchas, y dónde la disponibilidad y fiabilidad de los datos sea de máxima importancia.

**Particionadas o fragmentadas**

Este modelo consiste en que solo hay una copia de cada elemento, pero la información está distribuida a través de los nodos. En cada nodo se aloja uno o más fragmentos disjuntos de la base de datos. Como los fragmentos no se replican esto disminuye el costo de almacenamiento, pero también sacrifica la disponibilidad y fiabilidad de los datos. Algo que se debe tomar en cuenta cuando se desea implementar este modelo es la granularidad de la fragmentación. La fragmentación se puede realizar también de tres formas:

Horizontal: Los fragmentos son subconjuntos de una tabla (análogo a un restringir)

Vertical: Los fragmentos son subconjuntos de los atributos con sus valores (análogo a un proyectar)

Mixto: Se almacenan fragmentos producto de restringir y proyectar una tabla.

Para que una fragmentación sea correcta esta debe cumplir con las siguientes reglas:

* Debe ser Completa: Si una relación R se fragmenta en R1,R2, … , Rn, cada elemento de la data de R debe estar en algún Ri.
* Debe ser Reconstruible: Debe ser posible definir una operación relacional que a partir de los fragmentos obtenga la relación.
* Los fragmentos deben ser Disjuntos: Si la fragmentación es horizontal entonces si un elemento e está en Ri este elemento no puede estar en ningún Rk (para k distinto a i). En el caso de fragmentación vertical es necesario que se repitan las llaves primarias y esta condición solo se debe cumplir para el conjunto de atributos que no son llave primaria.

**Híbrida**

Este esquema simplemente representa la combinación del esquema de partición y replicación. Se particiona la relación y a la vez los fragmentos están selectivamente replicados a través del sistema de BDD.

**Tipos de arquitecturas/implementaciones**

En un sistema de bases de datos distribuidas, existen varios factores que deben tomar en consideración que definen la arquitectura del sistema:

* Distribución: Los componentes del sistema están localizados en la misma computadora o no.
* Heterogeneidad: Un sistema es heterogéneo cuando existen en él componentes que se ejecutan en diversos sistemas operativos, de diferentes fuentes, etc.
* Autonomía: Se puede presentar en diferentes niveles, los cuales se describen a continuación:

1. Autonomía de diseño: Habilidad de un componente del sistema para decidir cuestiones relacionadas a su propio diseño.
2. Autonomía de comunicación: Habilidad de un componente del sistema para decidir como y cuando comunicarse con otros SGBD (Sistema Gestor de Bases de Datos).
3. Autonomía de ejecución: Habilidad de un componente del sistema para ejecutar operaciones locales como quiera.

**Ventajas**

* Refleja una estructura organizacional – los fragmentos de la base de datos se ubican en los departamentos a los que tienen relación.
* Autonomía local – un departamento puede controlar los datos que le pertenecen.
* Disponibilidad – un fallo en una parte del sistema solo afectará a un fragmento, en lugar de a toda la base de datos.
* Rendimiento – los datos generalmente se ubican cerca del sitio con mayor demanda, también los sistemas trabajan en paralelo, lo cual permite balancear la carga en los servidores.
* Economía – es más barato crear una red de muchas computadoras pequeñas, que tener una sola computadora muy poderosa.
* Modularidad – se pueden modificar, agregar o quitar sistemas de la base de datos distribuida sin afectar a los demás sistemas (módulos).

**Desventajas**

* Complejidad – Se debe asegurar que la base de datos sea transparente, se debe lidiar con varios sistemas diferentes que pueden presentar dificultades únicas. El diseño de la base de datos se tiene que trabajar tomando en cuenta su naturaleza distribuida, por lo cual no podemos pensar en hacer joins que afecten varios sistemas.
* Economía – la complejidad y la infraestructura necesaria implica que se necesitará una mayor mano de obra.
* Seguridad – se debe trabajar en la seguridad de la infraestructura así como cada uno de los sistemas.
* Integridad – Se vuelve difícil mantener la integridad, aplicar las reglas de integridad a través de la red puede ser muy caro en términos de transmisión de datos.
* Falta de experiencia – las bases de datos distribuidas son un campo relativamente nuevo y poco común por lo cual no existe mucho personal con experiencia o conocimientos adecuados.
* Carencia de estándares – aún no existen herramientas o metodologías que ayuden a los usuarios a convertir un DBMS centralizado en un DBMS distribuido