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. La forma
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
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.
Una
ventaja significativa de este esquema es que las consultas (SQL) también se
fragmentan por lo que su procesamiento es en paralelo y más eficiente, pero
también se sacrifica con casos especiales como usar JUNTAR o PRODUCTO, en
general casos que involucren varios fragmentos de la BDD.
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.
Criterios
para escoger la distribución
Localidad
de la data: la data debería ser colocada donde ésta se accede más seguido. El
diseñador debe analizar las aplicaciones y determinar cómo colocar la data de
tal forma que se optimicen los accesos a la data locales.
Fiabilidad
de la data: Almacenando varias copias de la data en lugares geográficamente
apartados se logra maximizar la probabilidad de que la data va a ser
recuperable en caso de que ocurra daño físico en cualquier sitio.
Disponibilidad
de la data: como en la fiabilidad, almacenar varias copias asegura que los usuarios
tengan a su disponibilidad los elementos de la data, aún si el nodo al que usualmente
acceden no está disponible o falla.
Capacidades
y costos de almacenamiento: a pesar de que los costos de almacenamiento no son
tan grandes como los de transmisión, los nodos pueden tener diferentes capacidades
de almacenamiento y procesamiento. Esto se debe analizar cuidadosamente para
determinar dónde poner la data. El costo de almacenamiento se disminuye
significativamente minimizando la cantidad de copias de la data.
Distribución
de la carga de procesamiento: una de las razones por la cual se escoge un
sistema de BDD es porque se desea poder distribuir la carga de procesamiento
para hacer este más eficiente.
Costo
de comunicación: el diseñador debe considerar también el costo de usar las comunicaciones
de la red para obtener data. Los costos de comunicación se minimizan cuando
cada sitio tiene su propia copia de la data, por otro lado cuando la data es actualizada
se debe actualizar en todos los nodos.
Uso
del sistema: debe tomarse en consideración cual será el tipo principal de uso
del sistema de BDD. Factores como la importancia en la disponibilidad de la
data, la velocidad de escritura y la capacidad de recuperación de daños físicos
deben tomarse en cuenta para escoger el esquema correcto.
No hay comentarios:
Publicar un comentario