You are on page 1of 56

DISEÑO DE UNA BASE DE

DATOS DISTRIBUIDA

L A F R A G M E N T A C I O N D E L A B D D
L O C A L I Z A C I O N D E L O S F R A G M E N T O S
P R O C E S A M I E N T O D I S T R U B U I D O D E C O N S U L T A S
M A N E J O D E T R A N S A C C I O N E S
C O N T R O L D E C O N C U R R E N C I A S

PRESENTA:
MIYOSHI ESPINOZA MARTINEZ
DISEÑO DE UNA BDD
2

INTRODUCCION

El problema de diseño de bases de datos distribuidos se


refiere, en general, a hacer decisiones acerca de la ubicación
de datos y programas a través de los diferentes sitios de una
red de computadoras.
La decisión de donde colocar a las aplicaciones tiene que ver
tanto con el software del SMBDD como con las aplicaciones
que se van a ejecutar sobre la base de datos.
3

El diseño de un sistema de base de datos distribuido implica la toma de


decisiones sobre la ubicación de los programas que accederán a la
base de datos y sobre los propios datos que constituyen esta última, a
lo largo de los diferentes puestos que configuren una red de
ordenadores.

La ubicación de los programas, a priori, no debería suponer un


excesivo problema dado que se puede tener una copia de ellos en
cada máquina de la red (de hecho, en este documento se asumirá que
así es). Sin embargo, cuál es la mejor opción para colocar los datos: en
una gran máquina que albergue a todos ellos, encargada de responder
a todas las peticiones del resto de las estaciones – sistema de base de
datos centralizado –, o podríamos pensar en repartir las relaciones, las
tablas, por toda la red.
FRAGMENTACION DE LA BDD
4

Las relaciones de una base de datos distribuida se


pueden dividir en varios fragmentos. Cada
fragmento se almacenara en una localidad diferente,
es decir el diseñador debe evaluar la propiedad de
que haya fragmentado en diferentes localidades.
5

La fragmentación es la forma en cómo se pueden extraer


los datos al ser consultados en un Ambiente distribuido,
se puede hacer una fragmentación de distintas tablas
pertenecientes a diversas Bases de Datos localizadas en
diversos servidores.
Existen tres tipos de fragmentación:

 Fragmentación horizontal.

 Fragmentación vertical.

 Fragmentación híbrida
6

Fragmentación horizontal
 Fragmentar significa tomar datos lógicamente de una tabla

para formar otro.


 La fragmentación horizontal se realiza sobre las tuplas de la

relación, cada fragmento que se toma será un subconjunto de


las tuplas de la relación.
7

 Una tabla T se divide en subconjuntos, T1, T2, ...Tn. Los


fragmentos se definen a través de una operación de
selección y su reconstrucción se realizará con una
operación de unión de los fragmentos componentes.

 Cada fragmento se sitúa en un nodo.


 Pueden existir fragmentos no disjuntos: combinación de
fragmentación y replicación.
8

Fragmentación horizontal: Ejemplo.

•Tabla Inicial de los alumnos de la UPM (T)


9
Fragmento de la EUI: σEscuela="EUI"(T)

Fragmento de la EUI: σEscuela="EUI"(T)


10

Existen dos variantes de la fragmentación horizontal;


la primaria derivada.

La fragmentación horizontal primaria de una relación se


desarrolla empleando los predicados definidos en esa relación.

La fragmentación horizontal derivada consiste en dividir en una

relación partiendo de los predicados definidos sobre alguna otra.


11

Información necesaria para la fragmentación horizontal

Esta información implica al esquema conceptual global. Es


importante señalar como las relaciones de las bases de datos se
conectan con otras.

Es una conexión de relaciones normalmente se denominan relación


propietaria, a aquella situada en la cola del enlace, mientras que se
llama relación miembro a la ubicada en la cabeza del vinculo.
12

La fragmentación vertical

Ha sido estudiada principalmente dentro del contexto de los sistemas de


manejo de bases de datos centralizados como una herramienta de diseño, la
cual permite que las consultas de usuario traten con relaciones más pequeñas
haciendo, por tanto, un número menor de accesos a páginas.

Es inherentemente más complicada que particionamiento horizontal ya que


existe un gran número de alternativas para realizarla. Por lo tanto, se utilizan
heurísticas para hacer el particionamiento.
13

 Una tabla T se divide en subconjuntos, T1, T2, ...Tn. Los


fragmentos se definen a través de una operación de
proyección.

 Cada fragmento debe incluir la clave primaria de la tabla.


Su reconstrucción se realizará con una operación de join
de los fragmentos componentes.

 Cada fragmento se sitúa en un nodo.


 Pueden existir fragmentos no disjuntos: combinación de
fragmentación y replicación.
14

Fragmentación vertical: Ejemplo. Departamento infraestructura

ΠEscuela,Situación(R)

Datos Rectorado (R)

Departamento ordenación académica

ΠEscuela, Número_alumnos(R)
15

Información necesaria para la fragmentación vertical

Se refiere a las aplicaciones por tanto, este punto trata de especificar la


información de una aplicación que funciona sobre la base de datos,
podemos extraer teniendo en cuenta que la fragmentación vertical coloca
un fragmento de aquellos atributos a los que accede de forma
simultanea, necesitaremos alguna medida que defina con mas precisión
el concepto de simultaneidad.
Esta medida es la afinidad de los atributos que indican la relación
estrecha existente entre los atributos. No es muy realista esperar valores
por ello una forma para la cual obtengamos esos valores partiendo de
datos más básicos.
16

La fragmentación mixta o híbrida

En muchos casos la fragmentación vertical u horizontal del


esquema de la base de datos no será suficiente para satisfacer los
requisitos de las aplicaciones. Como ya se citó al comienzo de
este documento podemos combinar ambas, utilizando por ello la
denominada fragmentación mixta. Cuando al proceso de
fragmentación vertical le sigue una horizontal, es decir, se
fragmentan horizontalmente los fragmentos verticales resultantes,
se habla de la fragmentación mixta HV. En el caso contrario,
estaremos ante una fragmentación VH. Una característica común
a ambas es la generación de árboles que representan la estructura
de fragmentación.
17

Fragmentación híbrida: Ejemplo.

Secretaría
ΠDNI,Escuela,Escuela,Nombre,Beca(E)
Datos EUI (E)

ΠDNI,Escuela,Nombre,Notaingreso(E)

Jefatura
estudios
LOCALIZACION DE LOS FRAGMENTOS
18

Si el sistema es transparente en cuanto a repetición y


fragmentación, se ocultará al usuario gran parte del esquema de la
base de datos distribuida. Sin embargo, el componente de los
nombres que identifican a la localidad obliga al usuario a darse
cuenta del hecho de que cl sistema está distribuido.
La transparencia de localización se logra creando un conjunto de
seudónimos o alias para cada usuario. Así, el usuario puede
referirse a los datos usando nombres sencillos que el sistema
traduce a nombres completos.
Con el uso de seudónimos, no será necesario que el usuario
conozca la localización física de un dato. Además,el administrador
de la base de datos puede cambiar un dato de una localidad a otra
sin afectar a los usuarios.
PROCESAMIENTO DISTRIBUIDO DE CONSULTAS
19

Las consultas distribuidas detienen acceso a datos de varios orígenes


de datos heterogéneos. Estos orígenes de datos pueden estar
almacenados en el mismo equipo o en equipos diferentes.

Los usuarios de SQL SERVER pueden utilizar consultas distribuidas


para obtener acceso a lo siguiente:

Datos distribuidos almacenados en varias estancias de SQL SERVER.


Datos heterogéneos almacenados en varios orígenes de datos
relacionales y no relacionales a los que se obtienen acceso mediante un
proveedor OLE BD.
20

Se estudia el coste de las comunicaciones.

Objetivo:la reducción de la cantidad de


datos transferidos.
Optimización mediante operación de
semijoin.
21

Ejemplo de consulta distribuida

Nodo1:EMPLEADO
Nombre Apellido COD Dir Sexo Suelo Fecha nac. Depto.

10.000 tuplas. Cada tupla tiene 100 bytes de longitud.


El campo COD tiene 9 bytes de longitud.
El campo Dpto tiene 4 bytes de longitud.
El campo Nombre tiene 15 bytes de longitud.
El campo Apellido tiene 15 bytes de longitud.

Tamaño de la relación: 100 * 10.000 = 106 bytes


22

Ejemplo de consulta distribuida



NODO2:DEPARTAMENTO

NombreDpto NDpto Responsable Edificio

100 tuplas.
Cada tuplatiene 35 bytes de longitud.
El campo NombreDptotiene 10 bytes de longitud.
El campo NDptotiene 4 bytes de longitud.
El campo Responsable tiene 9 bytes de longitud.

Tamaño de la relación: 35 * 100 = 3500 bytes


23

Estrategias de procesamiento de consultas


distribuidas

El procesamiento de consultas tiene varias etapas a seguir


para resolver una consulta SQL, las características del modelo
relacional permiten que cada motor de base de datos elija su
propia representación que, comúnmente, resulta ser el álgebra
relacional.
24

En un sistema distribuido es preciso tener en cuenta


otros factores como son:

El costo de transmisión de datos en la red.


Repetición y fragmentación.
Procesamiento de intersección simple.
25

Árboles de consultas

 Parsing y traducción de la
consulta.

 Optimización.

 Generación de código.

 Ejecución de la consulta.
26

Transformaciones equivalentes

Cuando una base de datos se encuentra en múltiples servidores y


distribuye a un número determinado de nodos tenemos:

El servidor recibe una petición de un nodo.


El servidor es atacado por el acceso concurrente a la base de datos
cargada localmente.
El servidor muestra un resultado y le da un hilo a cada una de las
maquinas nodo de la red local.
27

Métodos de ejecución del Join

Existen diferentes algoritmos que pueden obtener transformaciones eficientes en el


procesamiento de consultas.
 Join en bucles (ciclos) anidados

 Join en bucles anidados por bloques

 Join por mezcla

 Join por asociación.

 Join por asociación híbrida

 Join Complejos

 Outer Join (Join externos)


28

Join en bucles (ciclos) anidados

Si z = r s, r recibirá el nombre de relación externa y s se llamará relación interna,


el algoritmo de bucles anidados se puede presentar como sigue:

Para cada tupla tr en s si (tr,ts) si satisface la condición, entonces añadir tr * ts al


resultado Donde tr * ts será la concatenación de las tuplas tr y ts. Como para cada
registro de r se tiene que realizar una exploración completa de ts, y suponiendo el
peor caso, en el cual la memoria intermedia sólo puede concatenar un bloque de
cada relación, entonces el número de bloques a acceder es de sr bn b.
29

Join en bucles anidados por bloques

Una variante del algoritmo anterior puede lograr un ahorro en el acceso a


bloques, si se procesan las relaciones por bloques en vez de por tuplas.
Para cada bloque Br dar a igual para cada bloque Bs de s, para cada tupla
tr en Br.

La diferencia principal en costos de este algoritmo con el anterior es que en


el peor de los casos cada bloque de la relación interna s se lee una vez por
cada bloque de dr y no por cada tupla de la relación externa.
30

Join por mezcla

Este algoritmo se puede utilizar para calcular si un Join natural es óptimo en la


búsqueda o consulta. Para tales efectos, ambas relaciones deben estar ordenadas
para los atributos en común es decir se asocia un puntero a cada relación, al
principio estos punteros apuntan al inicio de cada una de las relaciones.

Según avance el algoritmo el puntero se mueve a través de la relación. De este


modo se leen en memoria un grupo de tuplas de una relación con el mismo valor
en los atributos de las relaciones.
31

Join por asociación.

Al igual que el algoritmo de join por mezcla, el algoritmo de join por asociación se puede
utilizar para un Join natural o un equi-join. Este algoritmo utiliza una función de asociación h
para dividir las tuplas de ambas relaciones. La idea fundamental es dividir las tuplas de cada
relación en conjuntos con el mismo valor de la función de asociación en los atributos de join.

El número de bloques ocupados por las particiones podría ser ligeramente mayor que.
Debido a que los bloques no están completamente llenos. El acceso a estos bloques puede
añadir un gasto adicional de 2·max a lo sumo, ya que cada una de las particiones podría
tener un bloque parcialmente ocupado que se tiene que leer y escribir de nuevo.
32

Join por asociación híbrida

El algoritmo de Join por asociación híbrida realiza otra optimización; es útil


cuando el tamaño de la memoria es relativamente grande pero aún así, no
cabe toda la relación s en memoria. Dado que el algoritmo de Join por
asociación necesita max +1 bloques de memoria para dividir ambas
relaciones se puede utilizar el resto de la memoria (M – max – 1 bloques)
para guardar en la memoria intermedia la primera partición de la relación s,
esto es, así no es necesaria leerla ni escribirla nuevamente y se puede
construir un índice asociativo.
33

Join Complejos

Los Join en bucle anidado y en bucle anidado por bloques son útiles siempre, sin
embargo, las otras técnicas de Join son más eficientes que estas, pero sólo se
pueden utilizar en condiciones particulares tales como Join natural o equi-Join. Se
pueden implementar Join con condiciones más complejas tales como conjunción
o disyunción Dado un Join de las forma se pueden aplicar una o más de las
técnicas de Join descritas anteriormente en cada condición individual, el resultado
total consiste en las tuplas del resultado intermedio que satisfacen el resto de las
condiciones. Estas condiciones se pueden ir comprobado según se generen las
tuplas. La implementación de la disyunción es homóloga a la conjunción.
34

Outer Join (Join externos)

Un outer Join es una extensión del operador Join que se utiliza a menudo
para trabajar con la información que falta.

Optimización de consultas

El objetivo del procesamiento de consultas en un ambiente distribuido es


transformar una consulta sobre una base de datos distribuida en una
especificación de alto nivel a una estrategia de ejecución eficiente expresada
en un lenguaje de bajo nivel sobre bases de datos locales.
35

El problema de optimización de consultas es


minimizar una función de costo tal que función de
costo total = costo de I/O + costo de CPU + costo
de comunicación.
36

Optimización global de consultas

Optimización global es una consulta algebraica optimizada con

operación de comunicación incluida sobre los fragmentos.

Un aspecto importante de la optimización de consultas es el

ordenamiento de juntas, dado que algunas permutaciones de juntas


dentro de la consulta pueden conducir a un mejoramiento de varios
órdenes de magnitud.
37

Optimización local de consultas

El trabajo de la última capa se efectúa en todos los nodos con


fragmentos involucrados en la consulta. Cada consulta que se ejecuta en
un nodo, llamada consulta local, es optimizada usando el esquema local
del nodo. Hasta este momento, se eligen los algoritmos para realizar las
operaciones relacionales. La optimización local utiliza los algoritmos de
sistemas centralizados.
MANEJO DE TRANSACCIONES
38

Transacciones

Es un conjunto de acciones llevadas a cabo por un usuario o un programa


de aplicación, que acceden o cambian el contenido de la base de datos.

Es relativamente simple, aun que su manejo es mas complicado sobre


todo cuando hablamos de un ambiente distribuido. La cantidad de
transacciones que se ejecutan en una base de datos distribuida delimita el
proceso y la transacción así, como la velocidad de los datos .
39

Conceptos básicos:

Atomicidad.- Asegura que todos los efectos de la transacción en la B.D. o bien


ninguno de ellos.
Consistencia.- Si la B.D. es consistente inicialmente la ejecución de la transacción
deja la B.D. en su estado consistente.
Aislamiento.- asegura que la ejecución concurrente de transacciones estas estén
aisladas unas de otras, de tal manera que cada una tiene la intención de que ninguna
se ejecuta concurrentemente.
Durabilidad.- Una vez que una transacción se ha comprometido las actualizaciones
hechas para la transacción, no se pierden incluso si hay un fallo en el sistema.
40

Estructura de transacciones

La estructura de una transacción usualmente viene dada según el


modelo de la transacción, estas pueden ser planas (simples) o anidadas.

Transacciones planas.- Consisten de una secuencia de operaciones


primitivas encerradas entre las palabras clave begin y end.
41

 Transacciones anidadas.- Consiste en tener


transacciones que pueden ser de otras transacciones,
están incluidas dentro de otras de un nivel superior que se
les conoce como subtransacciones.
42

Ejecución de transacciones centralizada y distribuida

Consiste en una serie de modificaciones (transacciones) aun determinado

recurso del sistema (por ejemplo una base de datos) y en donde se define
un punto de inicio (Begin Tran) y un punto de terminación que define un
bloque entre el conjunto de operaciones que son realizadas.

Dentro de este proceso en bloque los demás usuarios no pueden modificar

nada hasta que no se presente un estado estable de los datos, esto


ocasiona inconsistencia temporal y conflictos.
43

 Ejecutar transacciones serializadas.- Es un sistema que


permite el procesamiento de transacciones en forma
secuencial o serializado y consiste en asignarle una
secuencia a cada transacción, este proceso reduce el
rendimiento del sistema.

 Ejecutar transacciones calendarizadas.- Es un sistema


que permite el proceso de transacciones asignándole
tiempos de procesamiento el cual permite incrementar el
rendimiento del sistema ya que se ejecuta un máximo de
proceso en forma concurrente y no a través de una serie.
CONTROL DE CONCURRENCIAS
44

El control de concurrencia trata con los problemas de aislamiento y


consistencia del procesamiento de transacciones.

El control de concurrencia distribuido de una DDBMS asegura que la


consistencia de la base de datos se mantiene en un ambiente distribuido
multiusuario.

Si las transacciones son internamente consistentes, la manera más simple


de lograr este objetivo es ejecutar cada transacción sola, una después de
otra.
45

Serialización de transacciones

Una canderilizacion ischedulel también llamado una historia se define un


conjunto de transacciones I= {T1,T2, TN} y especifican orden entrelazada
de la ejecución de las operaciones de las transacciones. La
canderilizacion puede ser especificada como una orden parcial sobre T.
46

Algoritmos de control de concurrencia

El criterio de clasificación más común de los algoritmos de control de concurrencia es el


tipo de primitiva de sincronización.

Esto resulta en dos clases:

Aquellos algoritmos que están basados en acceso mutuamente exclusivo a datos


compartidos (candados o bloqueos).

Aquellos que intentar ordenar la ejecución de las transacciones de acuerdo a un


conjunto de reglas (protocolos).
47

Basados en bloqueo

Existen diversos enfoques para complementar el gestor de bloqueos.

Gestión único de bloqueo.- El sistema conserva un único de bloqueos


que reside en un único emplazamiento a modo de todas las solicitudes de
bloqueo y desbloqueos se realizan sobre el. Cada transacción solicita a
esta localidad los bloqueos que necesita y luego, en caso de lectura. La
misma se realiza sobre cualquier copia, si es una escritura se debe resolver
sobre todas las copias.
48

Basados en estampas de tiempo

Los algoritmos basados en estampas de tiempo no pretenden mantener la


seriabilidad por exclusión mutua. En lugar de eso, ellos seleccionan un orden
de serialización a prioridad y ejecutan las transacciones, de acuerdo a ellas.
Para establecer este ordenamiento, el administrador de transacciones le asigna
a cada transacción T1 una estampa de tiempo única t1 (T1) cuando ésta inicia.

Una estampa de tiempo es un identificador simple que sirve para identificar


cada transacción de manera única.
49

Pruebas de validación optimistas

El protocolo mas reciente propuesta es el denominado optimista (OPT)


el cual acentúa la pertenencia general del sistema reduciendo el
bloqueo proveniente de aquellas transacciones que están preparadas
para terminar pero que aun no lo hicieron.

OPT comparte las mismas suposiciones que por este, las transacciones
tendieran a cometer si alcanzan el estado de parcialmente competidas.
50

Disciplinas del Interbloqueo: prevención, detección,


eliminación y recuperación

Interbloqueo.- Un esquema para resolver el interbloque en su detención.


Prevención.- Las técnicas de interbloqueo utilizan el concepto de marca
de tiempo de transacción existen dos esquemas que evitan el interbloqueo.
Recuperación.- El objetivo de esta parte de la asignación es conocer y
entender las distintas fallas que pueden ocurrir en un BMS y como es
posible restaurar el sistema después de dichas fallas este tema se llama
recuperación de fallas.
51

Detención.- Existen diversos algoritmos para ello en la detención de


ciclos en el grafo de esperas, entre ellos:

Algoritmo 1.- Comprueba la existencia de ciclos mediante la


eliminación de nodos terminales.

Algoritmo 2.- Comprueba posibles ciclos desde la ultima


transacción bloqueada y marcando los nodos por lo que pasa. Si
pasa dos veces por el mismo nodo a detectado un ciclo.
52

Confiabilidad

La confiabilidad se refiere a la consistencia de los resultados.

Un sistema de manejo de base de datos confiables aquel que puede


continuar procesando las solicitudes de usuario aun cuando el sistema
sobre el que opera no es confiable en otras palabras, aun cuando los
componentes de un sistema distribuido fallen un DDMBS confiable debe
seguir ejecutándose las solicitudes de usuario sin violar la consistencia de
la base de datos.
53

Protocolos REDO/UNDO

La operación redo utiliza la información del registro de la base de datos y realiza


de nuevo las acciones que pueden haber sido realizadas antes de la falla, la
operación redo genera nueva imagen.

Por otra parte, es posible que el administrador del buffer haya realizado la escritura
en la base de datos volátil correspondiente debe de incluir datos suficientes para
permitir deshacer ciertas actualizaciones en el nuevo estado de la base de datos y
regresarla al estado anterior a esta operación se le conoce como UNDO.
54

Puntos de verificación (checkpoints)

Cuando ocurre una falta en el sistema es necesario consultar la bitácora


para determinar cuales son las transacciones que necesitan para volver
hacerse cuando no necesiten hacerse.

Estos puntos de verificación nos ayudan para reducir el gasto de tiempo


consultando la bitácora. El punto de verificación en un registro que se
genera en la bitácora para concluir en todo lo que se encuentra antes de
ese punto esta correcto y verificado.
55

Protocolo 2PC de confiabilidad distribuida

Es un protocolo que consume un gran volumen de tiempo en la ejecución


de una transferencia durante el procesamiento normal se puede eliminar
accesos a disco o el numero de mensajes en el proceso de la transacción
la pertenencia 2pc podría ser mejorada.

El 2pc es conocido también como el protocolo “que no resume nada” para


que trata todas las transacciones de la misma forma sin importar si las
mismas cometen o abortan.
REFERENCIAS ELECTRÓNICAS
56

 http://sacbeob.8m.com/tutoriales/bddistribuidas/index.htm
 http://www.cs.cinvestav.mx/SC/prof_personal/adiaz/Disdb/
Cap_1.html
 http://www.ingenieria.unam.mx/paginas/Carreras/planes20
10/Computacion/Bases_de_datos/bases_de_datos_distribu
idas.pdf
 http://www.slideshare.net/natalialuva/diseo-de-bases-de-
datos-distribuidas

You might also like