ARQUITECTURA DE LAS BASE DE DATOS
Arquitectura centralizada
Los sistemas de bases de datos centralizados son aquellos que se ejecutan en un único sistema
informático sin interaccionar con ninguna otra computadora. Tales sistemas comprenden el rango desde los
sistemas de bases de datos monousuario ejecutándose en computadoras personales hasta los sistemas de
bases de datos de alto rendimiento ejecutándose en grandes sistemas.
Una computadora moderna de propósito general consiste en una o unas pocas CPU’s y un número
determinado de controladores para los dispositivos que se encuentren conectados a través de un bus común,
el cual proporciona acceso a la memoria compartida. Las CPU’s poseen memorias caché locales donde se
almacenan copias de ciertas partes de la memoria para acelerar el acceso a los datos. Cada controlador de
dispositivo se encarga de un tipo específico de dispositivos (por ejemplo, una unidad de disco, una tarjeta de
sonido o un monitor). La CPU y los controladores de dispositivo pueden ejecutarse concurrentemente,
compitiendo así por el acceso a la memoria.
Normalmente, los sistemas de bases de datos diseñados para funcionar sobre sistemas monousuario,
como las computadoras personales, no suelen proporcionar muchas de las facilidades que ofrecen los
sistemas multiusuario. En particular, no tienen control de concurrencia, que no es necesario cuando
solamente un usuario puede generar modificaciones. Las facilidades de recuperación en estos sistemas, o no
existen o son primitivas; por ejemplo, realizar una copia de seguridad de la base de datos antes de cualquier
modificación. La mayoría de estos sistemas no admiten SQL y proporcionan un lenguaje de consulta muy
simple, que en algunos casos es una variante de QBE (Query By Example).
Aunque hoy en día las computadoras de propósito general tienen varios procesadores, utilizan
paralelismo de grano grueso, disponiendo de unos pocos procesadores (normalmente dos o cuatro) que
comparten la misma memoria principal. Las bases de datos que se ejecutan en tales máquinas habitualmente
no intentan dividir una consulta simple entre los distintos procesadores, sino que ejecutan cada consulta en
un único procesador, posibilitando la concurrencia de varias consultas. Así, estos sistemas soportan una
mayor productividad, es decir, permiten ejecutar un mayor número de transacciones por segundo, a pesar de que cada transacción individualmente no se ejecuta más rápido.
Las bases de datos diseñadas para las máquinas monoprocesador ya disponen de multitarea,
permitiendo que varios procesos se ejecuten a la vez en el mismo procesador, usando tiempo compartido,
mientras que de cara al usuario parece que los procesos se están ejecutando en paralelo. De esta manera,
desde un punto de vista lógico, las máquinas paralelas de grano grueso parecen ser idénticas a las máquinas
monoprocesador, y pueden adaptarse fácilmente los sistemas de bases de datos diseñados para máquinas de tiempo compartido para que puedan ejecutarse sobre máquinas paralelas de grano grueso.
Por el contrario, las máquinas paralelas de grano fino tienen un gran número de procesadores y los
sistemas de bases de datos que se ejecutan sobre ellas intentan paralelizar las tareas simples (consultas, por
ejemplo) que solicitan los usuarios.
ARQUITECTURA CLIENTE/SERVIDOR
La computación cliente/servidor es la extensión lógica de la programación modular. El supuesto
principal de la programación modular es la división de un programa grande en pequeños programas
(llamados módulos), siendo más fáciles el desarrollo y la mantenibilidad (divide y vencerás).
Cualquier LAN (red de área local) puede ser considerada como un sistema cliente/servidor, desde el
momento en que el cliente solicita servicios como datos, ficheros o imprimir desde el servidor.
CARACTERÍSTICAS DE UN SISTEMA CLIENTE/SERVIDOR.
Un sistema cliente/servidor es aquel en el que uno o más clientes y uno o más servidores,
conjuntamente con un sistema operativo subyacente y un sistema de comunicación entre procesos, forma un
sistema compuesto que permite cómputo distribuido, análisis, y presentación de los datos. Si existen
múltiples servidores de procesamiento de base de datos, cada uno de ellos deberá procesar una base de datos 12
distinta, para que el sistema sea considerado un sistema cliente/servidor. Cuando dos servidores procesan la
misma base de datos, el sistema ya no se llama un sistema cliente/servidor, sino que se trata de un sistema de
base de datos distribuido.
Los clientes, a través de la red, pueden realizar consultas al servidor. El servidor tiene el control
sobre los datos; sin embargo los clientes pueden tener datos privados que residen en sus computadoras. Las
principales características de la arquitectura cliente/servidor son:
- El servidor presenta a todos sus clientes una interfaz única y bien definida.
- El cliente no necesita conocer la lógica del servidor, sólo su interfaz externa.
- El cliente no depende de la ubicación física del servidor, ni del tipo de equipo físico en el que se
encuentra, ni de su sistema operativo.
- Los cambios en el servidor implican pocos o ningún cambio en el cliente.
Como ejemplos de clientes pueden citarse interfaces de usuario para enviar comandos a un servidor,
APIs (Aplication Program Interface) para el desarrollo de aplicaciones distribuidas, herramientas en el
cliente para acceder a servidores remotos (por ejemplo, servidores de SQL) o aplicaciones que solicitan
acceso a servidores para algunos servicios.
Como ejemplos de servidores pueden citarse servidores de ventanas como X-windows, servidores de
archivos como NFS, servidores para el manejo de bases de datos (como los servidores de SQL), servidores de diseño y manufactura asistidos por computador, etc.
PARTES DE UN SISTEMA CLIENTE/SERVIDOR
Los principales componentes de un sistema cliente/servidor son:
- El núcleo (back-end o sección posterior). Es el SGBD propiamente (servidor).
- El interfaz (front-end o sección frontal). Aplicaciones que funcionan sobre el SGBD (cliente).
BASES DE DATOS DISTRIBUIDAS
Una de las principales tendencias de la informática a lo largo de los últimos años ha sido el pasar de
grandes computadoras centralizadas (que daban como resultado gigantescas bases de datos monolíticas en
los setenta y principios de los ochenta) a redes distribuidas de sistemas informáticos (con una mayor
descentralización y autonomía del procesamiento). Con la llegada de las minicomputadoras, las tareas de
procesamiento de datos, tales como el control de inventarios y el procesamiento de pedidos pasaron de
mainframes corporativas a sistemas departamentales más pequeños. El explosivo aumento de popularidad de las computadoras personales en los años ochenta llevó la potencia de las computadoras directamente a las mesas de los despachos de millones de personas.
Los usuarios acceden a la base de datos distribuida a través de aplicaciones. Estas aplicaciones se
pueden clasificar en aquellas que no requieren datos de otros computadores (aplicaciones locales) y aquellos
que requieren datos de otros computadores (aplicaciones globales). Un SGBDD tiene las siguientes
características:
- Una colección de datos compartidos y relacionados lógicamente.
- Los datos están divididos en fragmentos.
- Los fragmentos se pueden duplicar.
- Los fragmentos se colocan en varios emplazamientos (computadores).
- Dichos emplazamientos están conectados por una red.
- Los datos de cada emplazamiento están bajo el control de un SGBD.
- El SGBD en cada emplazamiento puede manejar aplicaciones locales autónomamente.
- Cada SGBD participa en al menos una aplicación global.
No es necesario que todos los emplazamientos en el sistema tengan su propia base de datos local,
como se muestra en la siguiente topología de un SGBDD:
Procesamiento distribuido.
Es importante hacer una distinción entre SGBD distribuido y procesamiento distribuido.
Procesamiento distribuido: Una base de datos centralizada que puede ser accedida a través de una red.
El punto clave de la definición de una base de datos distribuida es que el sistema está formado por datos
que están físicamente distribuidos a través de una red. Si los datos están centralizados, incluso aunque los
usuarios puedan acceder a los datos a través de la red, no se puede considerar como un sistema distribuido.
La topología de un sistema de procesamiento distribuido se muestra en la siguiente figura: 42
1.2. SGBD paralelo.
Debemos distinguir también entre SGBD distribuido y SGBD paralelo.
SGBD paralelo: Un SGBD que se ejecuta sobre múltiples procesadores y discos que han sido
diseñados para ejecutar operaciones en paralelo, cuando sea posible, con el propósito de mejorar el
rendimiento.
Los sistemas paralelos mejoran la velocidad de procesamiento y de E/S mediante la utilización de
UCP y discos en paralelo. La fuerza que ha impulsado a los sistemas paralelos de bases de datos ha sido la
demanda de aplicaciones que han de manejar bases de datos extremadamente grandes (del orden de
terabytes, esto es, 10
12
bytes) o que tienen que procesar un número enorme de transacciones por segundo
(del orden de miles de transacciones por segundo).
La ganancia de velocidad y la ampliabilidad son dos aspectos importantes en el estudio del
paralelismo. La ganancia de velocidad se refiere a la ejecución en menos tiempo de una tarea dada mediante
el incremento del grado del paralelismo. La ampliabilidad se refiere al manejo de transacciones más largas
mediante el incremento del grado de paralelismo. La ampliabilidad es normalmente el factor más importante
para medir la eficiencia de un sistema paralelo de bases de datos. El objetivo del paralelismo en los sistemas
de bases de datos suele ser asegurar que la ejecución del sistema continuará realizándose a una velocidad
aceptable, incluso en el caso de que aumente el tamaño de la base de datos o el número de transacciones. El
incremento de la capacidad del sistema mediante el incremento del paralelismo proporciona a una empresa
un modo de crecimiento más suave que el de reemplazar un sistema centralizado por una máquina más
rápida.
Existen algunos factores que trabajan en contra de la eficiencia del paralelismo y pueden atenuar
tanto la ganancia de velocidad como la ampliabilidad: 43
- Costes de inicio. El inicio de un único proceso lleva asociado un coste de inicio. En una
operación paralela compuesta por miles de procesos, el tiempo de inicio puede llegar a ser
mucho mayor que el tiempo real de procesamiento, lo que influye negativamente en la ganancia
de velocidad.
- Interferencia. Como los procesos que se ejecutan en un sistema paralelo acceden con frecuencia
a recursos compartidos, pueden sufrir un cierto retardo como consecuencia de la interferencia de
cada nuevo proceso en la competencia con los procesos existentes por el acceso a los recursos
más comunes, como el bus del sistema, los discos compartidos o incluso los bloqueos. Este
fenómeno afecta tanto a la ganancia de velocidad como a la ampliabilidad.
- Sesgo. Al dividir cada tarea en un cierto número de pasos paralelos se reduce el tamaño del paso
medio. Es más, el tiempo de servicio de la tarea completa vendrá determinado por el tiempo de
servicio del paso más lento. Normalmente es difícil dividir una tarea en partes exactamente
iguales, entonces se dice que la forma de distribución de los tamaños es sesgada. Por ejemplo, si
se divide una tarea de tamaño 100 en 10 partes y la división está sesgada, puede haber algunas
tareas de tamaño menor que 10 y otras de tamaño superior a 10; si el tamaño de una tarea fuera
20, la ganancia de velocidad que se obtendría al ejecutar las tareas en paralelo sólo valdría 5 en
vez de lo que cabría esperarse, 10.
Existen varios modelos de arquitecturas para las máquinas paralelas:
Memoria compartida. Todos los procesadores comparten una memoria común.
Disco compartido. Todos los procesadores comparten un disco común.
Sin compartimiento. Los procesadores no comparten ni memoria ni disco.
Jerárquico. Es un híbrido de las anteriores. 44
Memoria compartida
En una arquitectura de memoria compartida, los procesadores y los discos tienen acceso a una
memoria común, normalmente a través de un bus o de una red de interconexión. El beneficio de la memoria
compartida es la extremada eficiencia en cuanto a la comunicación entre procesadores (cualquier procesador
puede acceder a los datos de la memoria compartida sin necesidad de la intervención del software). Un
procesador puede enviar mensajes a otros procesadores utilizando escrituras en la memoria, de modo que la
velocidad de envío es mucho mayor (normalmente es inferior a un microsegundo) que la que se alcanza con
un mecanismo de comunicación. El inconveniente de las máquinas con memoria compartida es que la
arquitectura no puede ir más allá de 32 o 64 procesadores, porque el bus o la red de interconexión se
convertiría en un cuello de botella (ya que está compartido por todos los procesadores). Llega un momento
en el que no sirve de nada añadir más procesadores ya que éstos emplean la mayoría de su tiempo esperando
su turno para utilizar el bus y así poder acceder a la memoria. Las arquitecturas de memoria compartida
suelen dotar a cada procesador de una memoria caché muy grande para evitar las referencias a la memoria
compartida siempre que sea posible. No obstante, en la caché no podrán estar todos los datos y no podrá
evitarse el acceso a la memoria compartida. Por estas razones, las máquinas con memoria compartida no
pueden extenderse llegado un punto; las máquinas actuales con memoria compartida no pueden soportar más
de 64 procesadores.
Disco compartido
En el modelo de disco compartido, todos los procesadores pueden acceder directamente a todos los
discos a través de una red de interconexión, pero los procesadores tienen memorias privadas. Las
arquitecturas de disco compartido ofrecen dos ventajas respecto de las de memoria compartida. Primero, el
bus de la memoria deja de ser un cuello de botella, ya que cada procesador dispone de memoria propia.
Segundo, esta arquitectura ofrece una forma barata para proporcionar una cierta tolerancia ante fallos: si
falla un procesador (o su memoria), los de más procesadores pueden hacerse cargo de sus tareas, ya que la
base de datos reside en los discos, a los cuales tienen acceso todos los procesadores. La arquitectura de disco
compartido tiene aceptación en bastantes aplicaciones; los sistemas construidos siguiendo esta arquitectura
suelen denominarse agrupaciones (clusters).
El problema principal de los sistemas de discos compartidos es, de nuevo, la ampliabilidad. La
interconexión con el subsistema de discos es ahora el nuevo cuello de botella. Esto es especialmente grave
en situaciones en las que la base de datos realiza un gran número de acceso a los discos. Los sistemas de
discos compartidos pueden soportar un mayor número de procesadores, en comparación con los sistemas de
memoria compartida, pero la comunicación entre los procesadores es más lenta (hasta unos pocos
milisegundos, si se carece de un hardware de propósito especial para comunicaciones), ya que se realiza a
través de una red de interconexión.
Sin compartimiento
En un sistema sin compartimiento, cada nodo de la máquina consta de un procesador, memoria y
uno o más discos. Los procesadores de un nodo pueden comunicarse con un procesador de otro nodo
utilizando una red de interconexión de alta velocidad. Un nodo funciona como una red de interconexión de
alta velocidad. Un nodo funciona como el servidor de los datos almacenados en los discos que posee. El
modelo sin compartimiento salva el inconveniente de requerir que todas las operaciones de E/S vayan a
través de una única red de interconexión, ya que las referencias a los discos locales son servidas por los
discos locales de cada procesador; solamente van por la red las peticiones, los accesos a discos remotos y las
relaciones de resultados. Es más, habitualmente, las redes de interconexión para los sistemas sin
compartimiento se diseñan para ser ampliables, por lo que su capacidad de transmisión crece a medida que
se añaden nuevos nodos. Como consecuencia, las arquitecturas sin compartimiento son más ampliables y 45
pueden soportar con facilidad un gran número de procesadores. El principal inconveniente de los sistemas
sin compartimiento es el coste de comunicación y de acceso a discos remotos, coste que es mayor que el que
se produce en las arquitecturas de memoria o disco compartido, ya que el envío de datos provoca la
intervención del software en ambos extremos.
Jerárquica
La arquitectura jerárquica combina las características de las arquitecturas de memoria compartida,
de disco compartido y sin compartimiento. A alto nivel, el sistema está formado por nodos que están
conectados mediante una red de interconexión y que no comparten ni memoria ni discos. Así, el nivel más
alto es una arquitectura sin compartimiento. Cada nodo del sistema podría ser en realidad un sistema de
memoria compartida con algunos procesadores. Alternativamente, cada nodo podría ser un sistema de disco
compartido y cada uno de estos sistemas de disco compartido podría ser a su vez un sistema de memoria
compartida. De esta manera, un sistema podría construirse como una jerarquía con una arquitectura de
memoria compartida con pocos procesadores en la base, en lo más alto una arquitectura sin compartimiento
y quizá una arquitectura de disco compartido en el medio.
Las principales diferencias entre las bases de datos paralelas sin compartimientos y las bases de
datos distribuidas son las siguientes: las bases de datos distribuidas normalmente se encuentran en varios
lugares geográficos distintos, se administran de forma separada y poseen una interconexión más lenta. Otra
gran diferencia es que en un sistema distribuido se dan dos tipos de transacciones, las locales y las globales.
Una transacción local es aquella que accede a los datos del único emplazamiento en el cual se inició la
transacción. Por otra parte, una transacción global es aquella que o bien accede a los datos situados en un
emplazamiento diferente de aquel en el que se inició la transacción, o bien accede a datos de varios
emplazamientos distintos.
No hay comentarios:
Publicar un comentario