miércoles, 12 de septiembre de 2018

2 DISEÑO DE LAS BDD

2.1 DEFINICIONES

Álgebra relacional

Es un conjunto de operaciones que describen paso a paso cómo computar una respuesta sobre las relaciones, tal y como éstas son definidas en el modelo relacional.
Denominada de tipo procedimental.
Describe el aspecto de la manipulación de datos. Estas operaciones se usan como una representación intermedia de una consulta a una base de datos y, debido a sus propiedades algebraicas, sirven para obtener una versión más optimizada y eficiente de dicha consulta.
Se van a explicar algunos operadores de álgebra relacional, que nos van a ser necesarios para entender las reglas de fragmentación.

JOIN
La sentencia join en SQL permite combinar registros de dos o más tablas en una base de datos relacional. Para hacer un join es necesario que exista un campo que relacione los datos de cada tabla.

SEMI-JOIN
También conocida como semi-combinación. Opera de la misma manera que un join, pero la relación resultante sólo tiene los atributos de la primera tabla.


Resultado de imagen para definiciones en bases de datos join


Bibliográfia: Universidad Carlos III de Madrid, Pagina 20, Diseño y Construccion de bases de datos distribuidas Heterogéneas sobre Oracle y SQL Server.

2.2 ALTERNATIVAS DE DISEÑO

En todo proceso de diseño hay dos aproximaciones básicas:

  • La ascendente o Top-Down.
  • La descendente o Bottom-Up.
El diseño ascendente se utiliza, cuando se crea un BDD a partir de varias BBDD locales existentes. Se parte de varios esquemas lógicos locales (ELL) con ubicaciones diferentes que se integran en un único esquema lógico global (ELG).
El diseño descendente parte de un ELG y construye varios ELL definidos a partir de esquemas de fragmentación, asignación y replicación que determinan la distribución de los datos en los distintos nodos de la red.


Resultado de imagen para alternativas de diseño de una base de datos distribuidas ascendente y descendente



Bibliografia: Universidad Carlos III de Madrid, Pagina 21, Diseño y Construccion de bases de datos distribuidas Heterogéneas sobre Oracle y SQL Server.

2.3. FRAGMENTACIÓN

La fragmentación es un conjunto de técnicas para dividir la BD en unidades lógicas, llamadas fragmentos, cuyo almacenamiento puede asignarse a los diversos sitios. Estas técnicas se utilizan durante el proceso de diseño de BDD. La información concerniente a la fragmentación de los datos se almacena en un catálogo global del sistema al que tiene acceso el software cliente cuando es necesario.
La fragmentación es un concepto que surge en los modelos que incluyen algún tipo de particionado y tiene implicaciones físicas y lógicas.
•      Fragmento lógico: Bloque de datos localizado en algún SGBDD que puede ser descrito (en términos relacionales) como el resultado de una proyección y/o una selección de la información contenida en la BD, de modo que resulten subconjuntos disjuntos de ella. Por tanto, una vez que la BD ha sido dividida en un conjunto de fragmentos, todos los datos aparecen en uno y sólo uno de estos fragmentos
•       Fragmento físico: Subconjunto de un fragmento lógico que se almacena completo en un nodo. Cada uno de los fragmentos físicos de un fragmento lógico se localizan en uno o más nodos dependiendo del modelo de distribución de los datos. 
El esquema de fragmentación es el conjunto de las distintas relaciones que se han obtenido del ELG y las condiciones empleadas para esta división expresado en algebra relacional. 
Existen distintas formas de fragmentar una relación:
 Fragmentación vertical
 Fragmentación horizontal
 Fragmentación mixta

Razones para la fragmentación
Los esquemas de fragmentación se diseñan teniendo en cuenta el uso que se va a hacer de los datos que se almacenan en cada una de las sedes, construyendo relaciones más pequeñas y más adaptadas a las operaciones de recuperación y actualización que utilizan las aplicaciones, tratando así de aligerar las comunicaciones entre los nodos debido al alto coste que éstas tienen.
Las cuatro razones para la fragmentación son las siguientes:
 Es útil ya que las aplicaciones de BD suelen funcionar con vistas, y por ello se pueden utilizar distintas relaciones en distintos nodos para formar la unidad distribuida.
 Se consigue una mayor eficiencia dado que los datos suelen estar almacenados cerca del nodo que más utiliza dichos datos.
 Permite aumentar el grado de concurrencia porque la fragmentación de las relaciones permite que una transacción pueda dividirse en subconsultas que operan sobre estos fragmentos.
 Aporta una mayor seguridad, dado que los datos no utilizados por un nodo local no se almacenan en él y por lo tanto no están al alcance para personas sin autorización.

Si las aplicaciones tienen requisitos conflictivos que impiden la descomposición de la relación en fragmentos mutuamente exclusivos, estas aplicaciones cuyas vistas se definen en más de un fragmento pueden sufrir una degradación del rendimiento. 

El segundo problema está relacionado con el control semántico de los datos, especialmente para el control de integridad. Como resultado de la fragmentación, los atributos que participan en una dependencia pueden ser descompuestos en diferentes fragmentos que pueden ser asignados a diferentes sitios. En este caso, incluso la simple tarea de comprobar las dependencias daría lugar a la búsqueda de los datos en diferentes sitios.

Requisitos de información 
Uno de los aspectos del diseño de distribución es que contribuyen demasiados factores para conseguir un diseño óptimo. La organización lógica de la base de datos, la ubicación de las aplicaciones, las características de las solicitudes de acceso a la base de datos, y las propiedades de los sistemas informáticos en cada sitio tienen influencia sobre las decisiones de distribución. Esto hace que sea muy complicado para formular un problema de distribución.

La información necesaria para el diseño de la distribución puede dividirse en cuatro categorías: información de la base de datos, la aplicación de la información, información de la red de comunicación, y sistema informático

Reglas de fragmentación
Hay que tener en cuenta que la fragmentación podría afectar al rendimiento del SGBDD, especialmente cuando se utilizan distintos fragmentos ubicados en distintos nodos para construir una vista. También el control de la semántica de los datos puede ser más complicado por la fragmentación.
Para asegurar que la BD no sufrirá cambios semánticos durante la fragmentación de los datos, se definen las siguientes tres normas que determinen la calidad de la fragmentación de una relación :

Completitud: Sea R una relación descompuesta en fragmentos F(R) = {R1, R2,…, Rn}. Entonces cada atributo de la relación deberá encontrarse en al menos uno de los fragmentos Ri asegurando así que no hay pérdida de información.
Reconstrucción: si una relación R se descomponen en fragmentos de la forma R1, R2,.., Rn, debería ser posible definir un operador relacional ∇ tal que R = ∇ Ri para todo Ri є FR (Fragmentos de R).
El operador ∇ será diferente para cada forma de fragmentación; sin embargo es importante poder identificarlo. Esta regla asegura que las restricciones de integridad referencial están resguardadas.
Disyunción: si una relación R es fragmentada horizontalmente en R1, R2,…, Rn, y el dato di está en Rj y solo en Rj. Esta regla asegura que los fragmentos son disjuntos. Si se trata de una fragmentación vertical, sólo los atributos clave deben estar repetidos en todos los fragmentos, de modo que la propiedad disyunción se refiere únicamente a los restantes atributos

Fragmentación vertical
La fragmentación vertical divide la relación verticalmente en columnas, así cada fragmento mantiene ciertos atributos de la relación original [2].  La fragmentación se realiza mediante la operación PROYECCIÓN: ∏Li (R) donde i= 1...n y Ri es el conjunto de fragmentos en que se divide la relación original. Li es el criterio de fragmentación.
Para que la fragmentación vertical sea correcta los subconjuntos de atributos Li han de cumplir:
·         La unión de todos los Li contiene todos los atributos de la relación original.
·         La intersección de todos los Li consiste en la clave primaria de la relación original. Todos los Li tienen en común la clave primaria para poder reconstruir R mediante JOIN.



Suponiendo que en el campus de Getafe hubiera un nodo de la BD y otro nodo se ubicara en el campus de Leganés, y que por ejemplo el tratamiento y consulta de los datos personales se hiciera en el primer campus y el concerniente a los datos académicos se hiciera en el segundo, podría ser interesante realizar una fragmentación vertical en la que por un lado estuvieran: - los datos personales con los campos “Nombre”, “Apellidos” y “Edad” (L1). - y otra de datos académicos con los campos “Campus”, “Titulación” y “Cursos” (L2).
Así, se podría almacenar una subrelación (fragmento) en el campus de Getafe y otra en el campus de Leganés, quedando cada subrelación de la siguiente manera:



Fragmentación horizontal
La fragmentación horizontal divide la relación en subconjuntos de tuplas, cada uno de ellos con un significado lógico.
La fragmentación se realiza mediante la operación SELECCIÓN: σ Ci (R)  Existen dos tipos de fragmentación horizontal: primaria y derivada. En la Ilustración 3 se puede observar un esquema de la fragmentación horizontal y en Ejemplo 2 un caso de fragmentación horizontal de una tabla. - Primaria, es una selección de la relación original.  La fragmentación se realiza mediante la operación Ri = σPi (R) donde Pi es un predicado sobre uno o más atributos de R y es la condición empleada para seleccionar el contenido de los fragmentos.  
- Derivada, es una selección en función de predicados definidos sobre atributos de otras relaciones o fragmentos; esto se debe a que la relación R a fragmentar depende de la relación Q. Además, R hace referencia a Q mediante una clave
ajena. La fragmentación se realiza mediante la operación Ri = RQi donde Qi corresponde al conjunto de fragmentos en los que se ha dividido la relación Q.

La semicombinacion ( ) se hace por el atributo que relacionan estas dos tablas.

 Para que la fragmentación horizontal sea correcta se tiene que cumplir que:  La unión de todos los Ri sea la relación original (R).   La intersección de todos los Ri sea vacía. La relación original se recupera mediante UNION de los fragmentos. 

Podría ser interesante realizar una fragmentación horizontal por el campo “Campus” y almacenar cada fragmento en cada uno de los campus, suponiendo que en estos hubiera un nodo de la BD, quedando cada subrelación de la siguiente manera: 
ALUMNOS_LEG: Fragmento correspondiente a alumnos del campus de Leganés (R1 = σ (CAMPUS  = Leganés)) 


Fragmentación mixta o híbrida
La fragmentación mixta es la mezcla de fragmentación horizontal y vertical. Hay dos tipos de fragmentación mixta
·         Fragmentación VH Es una fragmentación vertical seguida de una fragmentación horizontal, sobre cada uno de los fragmentos verticales.
Ejemplo 3 fragmentación vertical-horizontal
 En la siguiente relación ALUMNOS (R)


Podría ser interesante realizar una fragmentación vertical en la que se particionaran - los datos personales con los campos “Nombre”, “Apellidos” y “Edad” (FV1) - los datos académicos con los campos “Campus”, “Titulación” y “Cursos” (FV2) Seguida de una fragmentación horizontal por el campo “Campus”. 
De este modo se obtendrían los siguientes fragmentos….  Datos personales (FV1) del Campus Leganés (FV1H1), Campus Getafe (FV1H2) y Campus Colmenarejo (FV1H3)  y datos académicos  (FV2) del Campus Leganés (FV2H1), Campus Getafe (FV2H2) y Campus Colmenarejo (FV2H3).

  • ·         Fragmentación HV Es una fragmentación horizontal seguida de una fragmentaciónvertical, sobre cada uno de los fragmentos horizontales.


En la relación ALUMNOS podría ser interesante realizar una fragmentación vertical por el campo “Campus”   Campus de Leganés (FH1) Campus de Getafe (FH2) Campus de Colmenarejo (FH3)
Seguida de una fragmentación vertical (V1) en la que por un lado estuvieran  - los datos personales con los campos “Nombre”, “Apellidos” y “Edad”  (campus de Leganés FH1V1, campus Getafe FH2V1 y  campus Colmenarejo FH3V1) - y otra (V2) de datos académicos con los campos “Campus”, “Titulación” y “Cursos” (campus de Leganés FH1V2, campus Getafe FH2V2 y  campus Colmenarejo FH3V2).


bibliografia: Laura Martínez Martín. (2010). Alternativas de replicación. En Diseño y construción de base de datos distribuidas(21-28). México: Santillas.

2.3.1 ASIGNACIÓN DE FRAGMENTOS

Cada fragmento (o cada copia de un fragmento) se debe asignar a un sitio determinado en el sistema distribuido. Este proceso se denomina distribución de los datos. La elección de la sede y el grado de replicación depende de los objetivos de rendimiento y disponibilidad para el sistema y de los tipos de frecuencias de transacciones introducidas en cada sitio. Por ejemplo, si se requiere una alta disponibilidad, y si las transacciones se pueden introducir en cualquier sitio y si la mayoría de ellas son de obtención de datos, entonces una BD completamente replicada será una buena opción. Sin embargo, si por lo regular ciertas transacciones que tienen acceso a partes específicas de la BD se introducen en un solo sitio, se podría asignar el conjunto de fragmentos correspondiente exclusivamente a ese sitio. Los datos que se utilizan en múltiples sitios se pueden replicar en esos sitios. Si se efectúan muchas actualizaciones, puede ser conveniente limitar la replicación. Encontrar una solución óptima, o siquiera buena, para el reparto de datos distribuidos es un problema de optimización muy complejo.



bibliografia: Laura Martínez Martín. (2010). Alternativas de replicación. En Diseño y construción de base de datos distribuidas(28). México: Santillas.

2.3.2 ALTERNATIVAS DE REPLICACIÓN

La replicación de datos se refiere al almacenamiento de copias de datos en múltiples sitios conectados mediante una red de ordenadores. Pueden guardarse copias fragmentadas en varios sitios para satisfacer requerimientos de información específicos. Como la existencia de copias de fragmentos puede mejorar la disponibilidad de los datos y el tiempo de respuesta, estas copias reducen los costes de comunicación y de consultas totales.
Supóngase que la tabla A está dividida en dos fragmentos A1 y A2. Dentro de una base de datos distribuida replicada, es posible el escenario de la ilustración 6 en el que el fragmento A1 se guarda en los sitios S1 y S2, mientras que el A2 se guarda en los sitios S2 y S3



Los datos replicados se someten a la regla de consistencia mutua. La regla de consistencia mutua requiere que todas las copias de fragmentos de datos sean idénticas. Por consiguiente, para mantener la consistencia de los datos entre las réplicas, el SGBDD debe garantizar que se realice una actualización de la base de datos en todos los sitios donde existan réplicas.

Suponiendo que la base de datos está fragmentada correctamente, hay que decidir la asignación de los fragmentos a diversos sitios en la red. Cuando se asignan los datos, o bien se pueden replicar o mantenerse una sola copia de los mismos. Las razones para la replicación son la disponibilidad, fiabilidad y la eficiencia de consultas de sólo lectura. Si hay múltiples copias de un elemento de datos, hay una buena probabilidad de que alguna copia esté accesible en algún lugar, incluso cuando se producen fallos en el sistema. Por otra parte, las consultas de sólo lectura que acceden a los mismos elementos de datos pueden ser ejecutados en paralelo desde la salida de copias en múltiples sitios. 

Por otra parte, la ejecución de las transacciones de actualización causa problemas ya que el sistema tiene que garantizar que todas las copias de los datos se actualizan correctamente. De ahí que la decisión con respecto a la replicación dependa de la relación existente entre consultas de sólo lectura y consultas de actualización. Esta decisión afecta a casi todos los algoritmos de SGBDD y las funciones de control. 

Una base de datos no replicada (comúnmente se llama base de datos particionada) contiene fragmentos que se asignan a los diferentes sitios, y sólo hay una copia de cada fragmento en la red. En el caso de realizarse replicación, la base de datos puede ubicarse en su totalidad en cada lugar (base de datos totalmente replicada), o los fragmentos pueden distribuirse en los nodos de tal manera que las copias de un fragmento puedan residir en varios emplazamientos (base de datos parcialmente replicada). En este último caso el número de copias de un fragmento puede suponer un aumento de coste para el algoritmo de asignación.  

En la Tabla 1 se comparan estas alternativas con respecto a varias funciones de los SGBD distribuidos.
Aunque la replicación tiene algunos beneficios, también exige más complejidad de procesamiento del SGBDD, porque cada copia de datos debe ser mantenida por el sistema. Para ilustrar la complejidad de un SGBDD, se deben considerar los procesos que el SGBDD debe realizar a la hora de gestionar la base de datos:
• Si la base de datos está fragmentada, el SGBDD debe decidir qué copia acceder. • Una operación de lectura selecciona la copia más cercana para satisfacer la transacción. Una operación de escritura requiere que todas las copias se seleccionen y actualicen para satisfacer la regla de consistencia mutua.
• El procesador de transacciones envía una solicitud de datos a cada procesador de datos para su ejecución.
• El procesador de datos recibe y ejecuta cada solicitud y envía los datos de vuelta al procesador de transacciones.
• El procesador de transacciones construye las respuestas del procesador de datos.


El problema se complica más cuando se consideran factores adicionales tales como la topología de red y los protocolos de comunicación.





BIBLIOGRAFIA: DISEÑO DE BASE DE DATOS DISTRIBUIDA, AQUINO BOLIVIA - 2005.

2.4 CONTROL SEMÁNTICO DE LOS DATOS

La integridad semántica de los datos se refiere a las características del SGBD y los procesos que se pueden utilizar para asegurar la exactitud y la viabilidad del contenido de los datos de una BD. La integridad semántica de los datos se refiere a la consistencia de los datos en sí.
En general, se utilizan las funciones del SGBD para apoyar la integridad de los datos que por lo general ofrece la mejor solución. Es más fácil descubrir y mantener una regla de integridad semántica utilizando las funciones del SGBD que revisando el código del programa. Hay que tener en cuenta que el código puede estar en diferentes lenguajes en un entorno heterogéneo. Además, habrá que distinguir los datos obsoletos de los activos.

BIBLIOGRAFIA:Laura Martínez Martín. (2010). Alternativas de replicación. En Diseño y construción de base de datos distribuidas(28-30). México: Santillas.

2.5 PROCESAMIENTOS DE CONSULTAS

El éxito creciente de la tecnología de bases de datos relacionales en el procesamiento de datos de debe, en parte, a la disponibilidad de lenguajes no procedurales los cuales pueden mejorar significativamente el desarrollo de aplicaciones y la productividad del usuario final. Los lenguajes de bases de datos relacionales permiten la expresión de consultas complejas en una forma concisa y simple. Particularmente, para construir la respuesta a una consulta, el usuario no tiene que especificar de manera precisa el procedimiento que se debe seguir. Este procedimiento es llevado a cabo por un módulo del DBMS llamado el procesador de consultas (Query Processor).

El procesamiento de consultas es de suma importancia en bases de datos centralizadas. Sin embargo, en BDD éste adquiere una relevancia mayor. El objetivo es convertir transacciones de usuario en instrucciones para manipulación de datos. No obstante, el orden en que se realizan las transacciones afecta grandemente la velocidad de respuesta del sistema. Así, el procesamiento de consultas presenta un problema de optimización en el cual se determina el orden en el cual se hace la menor cantidad de operaciones. En BDD se tiene que considerar el procesamiento local de una consulta junto con el costo de transmisión de información al lugar en donde se solicitó la consulta.

Arquitectura del procesamiento de consultas

Metodología del procesamiento de consultas

Bibliográfica: Diseño de bases de datos distribuidas pag. 56-70, Aquino Bolivia-2005