viernes, 16 de noviembre de 2012

ases de Datos Distribuidas: soluciones homogéneas y heterogéneas, integradas, federadas o multibase


SISTEMAS DISTRIBUIDOS
En un sistema distribuido de bases de datos se almacena la base de datos en varias computadoras. Varios medios de comunicación, como las redes de alta velocidad o las líneas telefónicas, son los que pueden poner en contacto las distintas computadoras de un sistema distribuido. No comparten ni memoria ni discos. Las computadoras de un sistema distribuido pueden variar en tamaño y función pudiendo abarcar desde las estaciones de trabajo a los grandes sistemas.
Dependiendo del contexto en el que se mencionen existen diferentes nombres para referirse a las computadoras que forman parte de un sistema distribuido, tales como sitios o nodos. Para enfatizar la distribución física de estos sistemas se usa principalmente el término sitio. 
Las principales diferencias entre las bases de datos paralelas sin compartimientos y las bases de datos distribuidas son que 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 sitio 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 sitio diferente de aquel en el que se inició la transacción, o bien accede a datos de varios sitios distintos.


Soluciones Homogéneas.-
En los sistemas de bases de datos distribuidas homogéneas, todos los sitios emplean el mismo software de gestión de bases de datos,  y conocen los demás sitios de tal forma que puedan cooperar en el procesamiento de las solicitudes de los usuarios.

Soluciones Heterogéneas.-
En las bases de datos distribuidas heterogéneas puede que los diferentes sitios utilicen esquemas y software de gestión de sistemas de bases de datos diferentes. Puede que algunos sitios no tengan información de la existencia del resto y que solo proporcionen facilidades limitadas para la cooperación en el procesamiento de las transacciones de los usuarios.

Soluciones Integradas.-
Son aquellas que prefieren las pequeñas o medianas empresas debido a que tienen un costo menor y es de fácil manejo.

Soluciones Federadas.-
Permite que administrar entidades interdependientes entre compañías. De esta forma, los usuarios de EShop´s podrán acceder a varias áreas de la base de datos con sus datos de ingreso al sistema.


Arquitectura Cliente/Servidor


Como las computadoras personales son ahora más rápidas, más potentes y más baratas, los sistemas se han ido distanciando de la arquitectura centralizada. Los terminales conectados a un sistema central han sido suplantados por computadoras personales. De igual forma, la interfaz de usuario, que solía estar gestionada directamente por el sistema central, está pasando a ser gestionada, cada vez más, por las computadoras personales. Como consecuencia, los sistemas centralizados actúan hoy como sistemas servidores que satisfacen las peticiones generadas por los sistemas clientes. En la siguiente figura se representa la estructura general de un sistema cliente-servidor.


Cuando los clientes utilizan bases de datos SQL Server locales, una copia del motor de bases de datos de SQL Server se ejecuta en el cliente y administra todas las bases de datos de SQL Server de dicho cliente. Las aplicaciones conectan con el motor de la base de datos casi de la misma forma en que se conectan a través de la red con un motor de base de datos que se ejecuta en un servidor remoto.
SQL Server se encarga de administrar bases de datos relacionales basadas en la arquitectura Cliente / Servidor (RDBMS: Relational Database Management System).
SQL Server utiliza la arquitectura Cliente / Servidor para coordinar el trabajo entre el equipo cliente y el equipo servidor; dependiendo del tipo de aplicación que se quiera programar la repartición de la carga de trabajo entre el cliente y el servidor.
El equipo cliente se suele encargar de la parte lógica y de mostrar la información al usuario que realiza una petición.
El equipo servidor SQL Server, se encarga de administrar la base de datos, de gestionar los recursos del servidor (CPU, memoria, etc) y por supuesto de resolver y devolver el resultado de la petición realizada por el cliente.
El sistema RDBMS se encarga de:
Crear una estrategia de copias de seguridad
Crear planes de mantenimiento para el buen funcionamiento de la base de datos (Chequeo de todos los objetos que componen una 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. Por otro lado, los sistemas cliente-servidor tienen su funcionalidad dividida entre el sistema servidor y múltiples sistemas clientes.
Sistemas centralizados:
Una computadora moderna de propósito general consiste en una o unas pocas unidades centrales de procesamiento y un número determinado de controladores para los dispositivos que se encuentran conectados a través de un bus común, el cual proporciona acceso a la memoria compartida unidades centrales de procesamiento) poseen memorias caché locales donde se almacenan copias de ciertas partes de la memoria para acelerar el acceso a los datos. Se distinguen dos formas de utilizar las computadoras: sistemas monousuario o multiusuario.

En la primera categoría están las computadoras personales y las estaciones de trabajo.
Un sistema monousuario típico es una unidad de sobremesa utilizada por una única persona que dispone de una sola UCP, de uno o dos discos fijos y que trabaja con un sistema operativo que sólo permite un único usuario. Por el contrario, un sistema multiusuario típico tiene más discos y más memoria, puede disponer de varias UCP y trabaja con un sistema operativo multiusuario. Se encarga de dar servicio a un gran número de usuarios que están conectados al sistema a través de terminales.
      Arquitectura:

El CPU y los controladores de dispositivos que pueden ejecutarse concurrentemente, compitiendo así por el acceso a la memoria. La memoria caché reduce la disputa por el acceso a la memoria, ya que el CPU necesita acceder a la memoria, compartida un número de veces menor.
Se distinguen dos formas de utilizar las computadoras: como sistemas monousuario o multiusuario. En la primera categoría están las computadoras personales y las estaciones de trabajo. Un sistema monousuario típico es una unidad de sobremesa utilizada por una única persona que dispone de una sola CPU, de uno o dos discos fijos y que trabaja con un solo sistema operativo que
Solo permite un único usuario. Por el contrario, un sistema multiusuario típico tiene más discos y más memoria, puede disponer de varias CPU y trabaja con un sistema operativo multiusuario.





Recuperación de la BD


Una computadora, al igual que cualquier otro dispositivo eléctrico o mecánico, está sujeta a fallos. Éstos se producen por diferentes motivos como: fallos de disco, cortes de corriente, errores en el software, un incendio en la habitación de la computadora o incluso sabotaje. En cada uno de estos casos puede perderse información. Por tanto, el sistema de bases de datos debe realizar con anticipación acciones que garanticen que las propiedades de atomicidad y durabilidad de las transacciones, se preservan a pesar de tales fallos. Una parte integral de un sistema de bases de datos es un esquema de recuperación, el cual es responsable de la restauración de la base de datos al estado consistente previo al fallo. El esquema de recuperación también debe proporcionar alta disponibilidad; esto es, debe minimizar el tiempo durante el que la base de datos no se puede usar después de un fallo.
Causas de la pérdida de datos:
Daños en el software del dispositivo de almacenamiento (disco duro, SAN o RAID)
Daños en el sistema de archivos: controlado por el sistema operativo, el sistema de archivos almacena y organiza los archivos de los usuarios y el sistema
Daños en los archivos: la pérdida de datos se puede producir en el propio archivo.

ESTRUCTURA DEL ALMACENAMIENTO


Los diferentes elementos que componen una base de datos pueden ser almacenados y accedidos con diferentes medios de almacenamiento. Para entender cómo se pueden garantizar las propiedades de atomicidad y durabilidad de una transacción, se deben comprender mejor estos medios de almacenamiento y sus métodos de acceso.


Los medios de almacenamiento se pueden distinguir según su velocidad relativa, capacidad, y resistencia a fallos, y se pueden clasificar como almacenamiento volátil o no volátil y estable.


Almacenamiento volátil. La información que reside en almacenamiento volátil no suele sobrevivir a las caídas del sistema. La memoria principal y la memoria caché son ejemplos de este almacenamiento. El acceso al almacenamiento volátil es muy rápido, tanto por la propia velocidad de acceso a la memoria, como porque es posible acceder directamente a cualquier elemento de datos.


• Almacenamiento no volátil. La información que reside en almacenamiento no volátil sobrevive a las caídas del sistema. Los discos y las cintas magnéticas son ejemplos de este almacenamiento. Los discos se utilizan para almacenamiento en conexión, mientras que las cintas se usan para almacenamiento permanente. Ambos, sin embargo, pueden fallar (por ejemplo, colisión de la cabeza lectora), lo que puede conducir a una pérdida de información.


• Almacenamiento estable. La información que reside en almacenamiento estable nunca se pierde (bueno, nunca diga nunca jamás, porque teóricamente el nunca no puede garantizarse; por ejemplo, es posible, aunque extremadamente improbable, que un agujero negro se trague a la Tierra y ¡destruya para siempre todos los datos!). A pesar de que el almacenamiento estable es teóricamente imposible de conseguir, puede obtenerse una buena aproximación usando técnicas que hagan que la pérdida de información sea una posibilidad muy remota.



RECUPERACIÓN BASADA EN EL REGISTRO HISTÓRICO


La estructura más ampliamente utilizada para guardar las modificaciones de una base de datos es el registro histórico. El registro histórico es una secuencia de registros que mantiene un registro de todas las actividades de actualización de la base de datos. Existen varios tipos
de registros del registro histórico. Un registro de actualización del registro histórico describe una única escritura en la base de datos y tiene los siguientes campos:

• El identificador de la transacción es un identificador único de la transacción que realiza la operación escribir.

• El identificador del elemento de datos es un identificador único del elemento de datos que se escribe. Normalmente suele coincidir con la ubicación del elemento de datos en el disco.

• El valor anterior es el valor que tenía el elemento de datos antes de la escritura.

• El valor nuevo es el valor que tendrá el elemento de datos después de la escritura.



PAGINACIÓN EN LA SOMBRA


La paginación en la sombra es una técnica de recuperación alternativa a las basadas en registro histórico. Bajo ciertas circunstancias la paginación en la sombra puede requerir menos accesos al disco que los métodos basados en registro histórico que se presentaron anteriormente. No obstante, como se verá, existen algunos inconvenientes en el enfoque de la paginación en la sombra. Por ejemplo, es difícil extender la paginación en la sombra para permitir que varias transacciones puedan ejecutarse concurrentemente.


Igual que antes, la base de datos se divide en un número determinado de bloques de longitud fija a los que se denominará páginas. Debido a que se va a utilizar un esquema de paginación para la gestión de la memoria, se ha tomado prestado de los sistemas operativos el término página. Supóngase que hay n páginas numeradas desde 1 hasta n (en la práctica, n puede ser del orden de cientos de miles). No es necesario almacenar en disco estas páginas en un orden determinado (como se vio en el Capítulo 11 hay muchas razones por las que esto es así). Sin embargo, dado un cierto i, debe existir una manera de localizar la página i-ésima de la base de datos.


TRANSACCIONES CONCURRENTES Y RECUPERACIÓN


Hasta ahora se ha tratado la recuperación en un entorno en el que se ejecutaba una sola transacción en cada instante. Ahora se verá cómo modificar y extender el esquema de recuperación basado en registro histórico para permitir la ejecución concurrente de varias transacciones.

El sistema sigue teniendo una única memoria intermedia de disco y un único registro histórico
independientemente del número de transacciones concurrentes. Todas las transacciones comparten los bloques de la memoria intermedia. Se permiten actualizaciones inmediatas y que un bloque de la memoria intermedia tenga elementos de datos que hayan sido modificados por una o más transacciones.


TÉCNICAS AVANZADAS DE RECUPERACIÓN


Se han desarrollado técnicas avanzadas de recuperación para soportar técnicas de bloqueo de alta concurrencia, como las utilizadas para el control de concurrencia con árboles B+. Estas técnicas se basan en el registro deshacer lógico y siguen el principio de repetir la historia. En la recuperación de un fallo del sistema se realiza una fase rehacer utilizando el registro histórico seguida de una fase deshacer sobre el registro histórico para retroceder las transacciones incompletas.


SISTEMAS REMOTOS DE COPIAS DE SEGURIDAD


Los sistemas remotos de copia de seguridad proporcionan un alto nivel de disponibilidad, permitiendo que continúe el procesamiento de transacciones incluso si se destruye el sitio primario por fuego, inundación o terremoto.




Seguridad de la BD


Los datos guardados en la base de datos deben estar protegidos contra los accesos no autorizados, de la destrucción o alteración malintencionadas además de la introducción accidental de inconsistencias que evitan las restricciones de integridad. A continuación, se examina el modo en que se pueden utilizar mal los datos o hacerlos inconsistentes de manera intencionada. Se presentan luego mecanismos para protegerse de dichas incidencias.

La seguridad se logra utilizando básicamente dos mecanismos:


-Vistas: Permite que se limite la visión del usuario a ciertas columnas o filas de determinadas tablas.


-El sistema de privilegios: el cual el administrador puede conceder o revocar privilegios sobre los objetos de la base de datos a los distintos usuarios.


La definición de estos derechos, no es competencia del administrador, es más parte de  las políticas  de  la  empresa,  él  es  un  ejecutor   auditor  de  las  mismas. Los DBMS tienen los mecanismos que le permiten al administrador implementar estas seguridades, usando principalmente ordenes SQL.


Otros dos mecanismos para la protección del acceso no autorizado, que también debe ser tenido en cuenta, son:


-La criptografía: que consiste en cifrar los datos para hacerlos ilegibles mediante algoritmos altamente sofisticados de tal manera que sólo los usuarios autorizados puedan descifrarlos. Para encriptar o cifrar los datos, entonces, se necesita de un algoritmo deencriptamiento y de otro para el desencriptamiento.


-El control de la inferencia: consiste en impedir que un usuario pueda deducir información, sin tener autorización, a partir de los datos a los que  tiene acceso.


A  continuación  se  detallarán  los  mecanismos  de  seguridad  mediante  vistas  y privilegios.




Del mismo modo que una cámara solo captura una parte del escenario, una vista es una presentación restringida de los datos en una base de datos. Una vista es una orden de consulta dedatos almacenada que selecciona datos guardados en tablas. 

Autorizaciones

Los usuarios pueden tener varios tipos de autorización para diferentes partes de la base de datos. Entre ellas
están las siguientes:

• La autorización de lectura permite la lectura de los datos, pero no su modificación.
• La autorización de inserción permite la inserción de datos nuevos, pero no la modificación de los existentes.
• La autorización de actualización permite la modificación de los datos, pero no su borrado.
• La autorización de borrado permite el borrado de los datos.

Los usuarios pueden recibir todos los tipos de autorización, ninguno de ellos o una combinación determinada
de los mismos. Además de estas formas de autorización para el acceso a los datos, los usuarios pueden recibir autorización para modificar el esquema de la base de datos:

• La autorización de índices permite la creación y borrado de índices.
• La autorización de recursos permite la creación de relaciones nuevas.
• La autorización de alteración permite el añadido o el borrado de atributos de las relaciones.
• La autorización de eliminación permite el borrado de relaciones.

Las autorizaciones de eliminación y de borrado se diferencian en que la autorización de borrado sólo permite el borrado de tuplas. Si un usuario borra todas las tuplas de una relación, la relación sigue existiendo, pero está vacía. Si se elimina una relación, deja de existir. La capacidad de crear  nuevas relaciones queda regulada mediante la autorización de recursos. El usuario con la autorización de recursos que crea una relación nueva recibe automáticamente todos los privilegios sobre la misma.



Concesión de privilegios

El usuario al que se le ha concedido alguna forma de autorización puede ser autorizado a transmitir esa autorización a otros usuarios. Sin embargo, hay que tener cuidado con el modo en que se puede transmitir la autorización entre los usuarios para asegurar que la misma pueda retirarse en el futuro.



Otros


Otros dos mecanismos importantes para la protección de acceso no autorizado, que también debemos tener en cuenta son:

La criptografía: Consiste en cifrar los datos para hacerlos ilegibles mediante algoritmos altamente sofisticados de tal manera que sólo los usuarios autorizados puedan descifrarlos. Para encriptar o cifrar los datos, se necesita de un algoritmo de encriptamiento y otro para el desencriptamiento.

El control de la inferencia: Consiste en impedir que un usuario pueda deducir información, sin tener autorización, a partir de los datos a los que sí tiene acceso.



Integridad y Concurrencia


INTEGRIDAD


Integridad de las Bases de Datos, la integridad en una base de datos es la corrección y exactitud de la información contenida. Además de conservar la seguridad en un sistema de bases de datos que permite el acceso a múltiples usuarios en tiempos paralelos.


Restricciones de Integridad:

Las restricciones de integridad proporcionan un medio de asegurar que las modificaciones hechas a la base de datos por los usuarios autorizados no provoquen la pérdida de la consistencia de los datos. Por tanto, las restricciones de integridad protegen a la base de datos contra los daños accidentales.

Estas restricciones eran de los tipos siguientes:

• Declaración de claves – la estipulación de que ciertos atributos pueden formar una clave
para un conjunto de entidades determinado.

• Forma de la relación – de varios a varios, de uno a varios, de uno a uno.

En general, la restricción de integridad puede ser un predicado arbitrario referente a la base de datos. Sin embargo, los predicados arbitrarios pueden resultar complicados de verificar. En consecuencia, lo habitual es limitarse a restricciones de integridad que puedan verificarse con una sobrecarga mínima. Existe otra forma de restricción de integridad, denominada «dependencia funcional», que se usa principalmente en el proceso del diseño de esquemas.


Restricciones de Dominio:


Las restricciones de los dominios especifican el conjunto de valores que se pueden asociar con un atributo.
Estas restricciones también pueden impedir el uso de valores nulos para atributos concretos.


Restricciones de Integridad Referencial:

Las restricciones de integridad referencial aseguran que un valor que aparece en una relación para un conjunto de atributos dado aparezca también para un conjunto de atributos concreto en otra relación.




Las restricciones de dominio y las de integridad referencial son relativamente sencillas de verificar. El uso
de restricciones más complejas puede provocar una sobrecarga considerable. Se han visto dos maneras de
expresar restricciones más generales. Los asertos son expresiones declarativas que manifiestan predicados
que deben ser siempre verdaderos.

Aserto:


Un aserto es un predicado que expresa una condición que se desea que la base de datos satisfaga siempre. Las restricciones de dominio y las de integridad referencial son formas especiales de los asertos. Se ha prestado una atención especial a estos tipos de asertos porque se pueden verificar con facilidad y se aplican a una gran variedad de aplicaciones de bases de datos. Sin embargo, hay muchas restricciones que no se pueden expresar utilizando únicamente estas formas especiales. Ejemplos de estas restricciones pueden ser

       • La suma de todos los importes de los préstamos de cada sucursal debe ser menor que la suma de          todos los saldos de las cuentas de esa sucursal. 
       • Cada préstamo tiene al menos un cliente que tiene una cuenta con un saldo mínimo de 1.000 €.

Triggers:

Los triggers, que son instrucciones que el sistema ejecuta automáticamente como efecto colateral de una modificación de la base de datos. Los disparadores se usan para asegurar algunos tipos de integridad.
Además de la protección contra la introducción accidental de inconsistencia, puede ser necesario
proteger los datos almacenados en la base de datos frente a accesos no autorizados y destrucción
o alteración malintencionada. 



CONCURRENCIA

La mayoría de los sistemas de gestión de base de datos son de múltiples usuarios. Es decir, permiten cualquier numero T accesando a la misma BD al mismo tiempo. En estos sistemas, se necesita algún mecanismo de control de concurrencia como, por ejemplo, el mecanismo de bloqueo o cierre, que es uno de los mas empleados en la practica.

Hay distintos casos en que puede haber problemas, es decir, en los que una T correctamente definida puede, no obstante, producir un resultado incorrecto debido a la interferencia de otra T (en el caso de que no haya un mecanismo de control adecuado)

Ejemplos: 

  1. Actualizacion perdida:


Transacción A         Tiempo        Transacción B
___________                               ___________
Recuperar R                 t1              ___________
___________                               ___________
___________              t2              Recuperar R
___________                               ___________
Actualizar  R                 t3              ___________
___________                               ___________
___________              t4              Actualizar  R

A recupera el articulo R en el tiempo t1 y B, el mismo articulo en el tiempo t2.
A actualiza R en t3 y B actualiza el mismo articulo en t4, de acuerdo al valor encontrado en t1.
Entonces, la actualizacion hecha por A se pierde en el tiempo t4, pues B sobreescribe articulos sin haberla considerado.


    2.  Cierre o bloqueo:

La idea básica de cierre es simple: cuando una T necesita que algún objeto(tipicamente un articulo)

 no cambie de forma impredecible mientras que ella lo esta tratando, T adquiere un cierre sobre tal objeto. El efecto es que otras T quedan fuera que no se les permita accesar el articulo, y por tanto, se previene que este sea cambiado por esas T


   3.  Abrazo Fatal:

Version generalizada del abrazo fatal:

Transacción A         Tiempo        Transacción B
___________                               ___________
solicita X/R1                 t1              ___________
___________                               ___________
___________              t2              solicita X/R2
___________                               ___________
solicita X/R2                 t3              ___________
espera                                           ___________
espera                          t4              solicita X/R1
espera                                           espera

El abrazo fatal es una situación en la que dos o mas T están simultáneamente en un estado de espera, cada una esperando que una de las otras libere un recurso que ella necesita para proseguir.

Si un lazo fatal ocurre, el sistema debe detectarlo y romperlo. Esto ultimo se realiza seleccionando unas de las T involucradas en el abrazo fatal como victima y deshaciendo lo realizado por ella, y por tanto, liberando sus cierres, lo que permite a otra T proseguir. Muchos sistemas reinician automáticamente dicha T, asumiendo que las condiciones causantes del abrazo falta no ocurrirán.
No obstante es preferible evitar la ocurrencia de un abrazo fatal que recuperarse de el. Lo mas usual para evitarlo es no permitir a una transaccion solicitar un recurso.

Administracion de objetos y recursos.


Actividad administrativa que aplica tecnologías de sistemas de información (como administración de base de datos, almacenes de datos y otras herramientas de administración de datos) a la tarea de administrar los recursos de datos de una organización, con el objetivo de satisfacer las necesidades de información de sus participantes de negocio. 
Una base de datos es una colección de datos que puede constituirse de forma que sus contenidos puedan permitirse el encapsular, tramitarse y renovarse sencillamente, elementos de datos, sus características, atributos y el código que opera sobre ellos en elementos complejos llamados objetos. 
Las base de datos están constituida por objetos, que pueden ser de muy diversos tipos, y sobre los cuales se encuentran definidas unas operaciones donde interactúan y se integran con las de un lenguaje de programación orientado a objetos, es decir, que los componentes de la base de datos son objetos de los lenguajes de programación además que este tipo de base de datos están diseñadas para trabajar con lenguajes orientados a objetos también manipulan datos complejos de forma rápida y segura.
Las bases de datos orientadas a objetos se crearon para tratar de satisfacer las necesidades de estas nuevas aplicaciones. La orientación a objetos ofrece flexibilidad para manejar algunos de estos requisitos y no esta limitada por los tipos de datos y los lenguajes de consulta de los sistemas de bases de datos tradicionales.
Los objetos estructurados se agrupan en clases. Las clases utilizadas en un determinado lenguaje de programación orientado a objetos son las mismas clases que serán utilizadas en una base de datos; de tal manera, que no es necesaria una transformación del modelo de objetos para ser utilizado. De forma contraria, el modelo relacional requiere abstraerse lo suficiente como para adaptar los objetos del mundo real a tablas. El conjunto de las clases se estructuran en subclases y superclases, los valores de los datos también son objetos.
En la administración de datos, los datos se conocen como CARGA y el uso en información y conocimiento que se les pueda dar a estos se traduce en PODER, se tendrá entonces que la administración de datos en general busca: FACILITAR LA CARGA E INCREMENTAR EL PODER