martes, 27 de septiembre de 2011

Forma clausal y cláusulas de Horn

Una fórmula del cálculo relacional es una condición que contiene predicados llamados átomos (basados en nombres de relaciones). Ademas, una fórmula puede tener cuantificadores: el cuantificador universal ("para todo") y el cuantificador existencial ("existe"). En la forma clausal, una fórmula se debe convertir en otra fórmula con las siguientes características:

-Todas las variables de la fórmila están cuantificadas universalmente. Por tanto, no es necesario incluir los cuantificadores universales explícitamente; los cuantificadores se eliminan y todas las variables de la fórmula quedan cuantificadas implícitamente por el cuantidicador universal.
-En forma clausal, la fórmila se compone de varias cláusulas, y cada cláusula se compone de varias literales conectadas exclusivamente por conectores lógicos OR. Así pues, toda cláusula es una disyunción de literales..
-Las cláusulas mismas se conectan exclusivamente mediante conectores lógicos AND, para constituir una fórmula. Así pues, la forma clausal de una fórmula es una conjunción de cláusulas.

Es posible demostrar que cualquier fórmula puede convertirse a la forma clausal. Para nuestros fines, nos interesa, principalmente, la forma de las cláusulas individuales, cada una de las cuales es una disyunción de literales.
En Datalog, las reglas se expresan como una forma restringida de cláusulas llamadas "cláusulas de Horn", en las que una cláusula puede contener cuando más una literal positiva.

Lenguaje Lógico de Datos LDL y un Sistema de Gestión de Bases de Datos Relacional SGBDR

Sistema LDL:

El proyecto Logic Data Languaje (Lenguaje Lógico de Dato: LDL) de Microelectronics and Computer Corporation (MCC) se inició en 1984 con dos objetivos primarios:

•Crear un sistema que extendiera el modelo relacional y a la vez aprovechara algunas de las características positivas de un SGBDR (Sistema de Gestión de Base de Datos Relacionales).

•Mejorar la funcionalidad de un SGBD de modo que operara como un SGBD deductivo y además permitiera la creación de aplicaciones de propósito general.

Aplicaciones de LDL :

El sistema LDL se ha utilizado en los siguientes dominios de aplicación:

Modelado de empresas: este dominio implica modelar la estructura, los procesos y las restricciones dentro de una empresa. Los datos relacionados con ella pueden resultar en modelo ER extendido que contiene cientos de entidades y vínculos y miles de atributos. Es posible desarrollar varias aplicaciones útiles para los diseñadores de nuevas aplicaciones (así como para los gerentes) a partir de esta “metabase de datos”, que contiene información tipo diccionario a cerca de toda la empresa.

Prueba de hipótesis o dragado de datos: este dominio implica formular una hipótesis, traducirla a un conjunto de reglas LDL y una consulta, y luego ejecutar la consulta contra los datos para probar la hipótesis. El proceso se repite reformulando las reglas y la consulta. Esto se ha aplicado al análisis de datos de genoma en el campo de la microbiología. El dragado de datos consiste en identificar las secuencias de DNA a partir de autorradiografías digitalizadas de bajo nivel obtenidas de experimentos con bacterias E. coli.

Reutilización de software: el grueso del software para una aplicación se desarrolla en código estándar por procedimientos, y una pequeña fracción se basa en reglas y se codifica en LDL.

La “base de conocimientos” puede servir para tomar decisiones referentes a la reutilización de subconjuntos del software. Los módulos pueden recombinarse para satisfacer tarea específicas, en tanto se satisfagan las reglas pertinentes. Se está experimentando con esto en el software bancario. En conclusión, el lenguaje LDL mejora y aprovecha al SGBDR.

Notación Prolog / Datalog

Prolog:
Se trata de un lenguaje de programación ideado a principios de los años 70 en la Universidad de Aix-Marseille (Marsella, Francia) por los profesores Alain Colmerauer y Philippe Roussel. Nació de un proyecto que no tenía como objetivo la implementación de un lenguaje de programación, sino el procesamiento de lenguajes naturales.
Inicialmente se trataba de un lenguaje totalmente interpretado hasta que, en 1983, David H.D. Warren desarrolló un compilador capaz de traducir Prolog en un conjunto de instrucciones de una máquina abstracta denominada Warren Abstract Machine, o abreviadamente, WAM. Desde entonces Prolog es un lenguaje semi-interpretado.
Si bien en un principio se trataba de un lenguaje de uso reducido, la aparición de intérpretes del mismo para microordenadores de 8 bits (ej: micro-PROLOG) y para ordenadores domésticos de 16 bits (ej: Turbo Prolog de Borland, entre otros muchos) a lo largo de la década de 1980 contribuyó notablemente a su popularización. Otro importante factor en su difusión fue la adopción del mismo para el desarrollo del proyecto de la quinta generación de computadoras a principios de la década de los 80 en cuyo contexto se desarrolló la implementación paralelizada del lenguaje llamada KL1 y del que deriva parte del desarrollo moderno de Prolog.






Datalog:
Datalog es un lenguaje de consulta y regla de bases de datos deductivas que sintácticamente es un subconjunto de Prolog. Sus orígenes se remontan al inicio de la programación lógica, pero llegó a ser prominente en un área separada en torno a 1977, cuando Hervé Gallaire y Minker Jack organizó un taller sobre la lógica y las bases de datos.




Notación Prolog/Datalog:


La notación de Prolog/Datalog se basa en proveer predicados con nombres únicos. Un predicado tiene un significado implícito, sugerido por su nombre, y un numero fijo de argumentos. Si todos los argumentos son valores constantes, el predicado simplemente dice que un determinado hecho es verdadero. Por otro lado, si el predicado tiene variables como argumentos, se le considera una consulta o bien parte de una regla o restricción.

Base de datos lógicas, base de datos expertos y base de datos de conocimientos

BBDD Lógica:

Es un sistema de base de datos que tiene la capacidad de definir reglas con las cuales deducir o inferir información adicional a partir de los hechos almacenados en la BBDD. Este tipo de BBDD recibe el nombre de "lógica" puesto que parte de los fundamentos teóricos de algunos sitemas de esta especie es la lógica matemática.

BBDD Expertos y de conocimientos:

Son sistemas de base de datos que incluyen capacidades de razonamiento e inferencia; estos sistemas emplean técnicas que se desarrollaron en el campo de la inteligencia artificial, como las redes semánticas, los marcos y las reglas para capturar conocimientos específicos de un dominio.

Tipos de base de datos distribuidas

SBDD Homogéneo y Heterogéneo:
Si todos los servidores utilizan un software idéntico y todos los clientes emplean software idéntico, se dice que el SGBDD es "homogéneo"; en caso contrario se le caracteriza como "heterogéneo". Otro factor relacionado con el grado de homogeneidad es el grado de autonomía local. Si todo acceso al SGBDD debe hacerse a través de un cliente, el sistema no tiene autonomía local. Por otro lado, si se permite a las transacciones locales acceso directo a un servidor, el sistema tendrá cierto grado de autonomía local.

SBDD Federado:
Un sistema de bases de datos federadas es una colección de sistemas de bases de datos cooperativos y autónomos. En un sistema federado los usuarios tienen acceso a los datos, de los distintos sistemas, a través de una interfaz común sin embargo, no existe un esquema global que describa a todos los datos de las distintas bases de datos, en su lugar hay varios esquemas unificados, cada uno describiendo porciones de bases de datos y archivos para el uso de cierta clase de usuarios


SBDD con alto grado de transparencia de distribución:

Esto se da cuando el usuario percibe un solo esquema integrado sin informacion alguna relativa a la fragmentación, replicación o distribución. Por otro lado, si el usuario puede ver toda la fragmentación, el reparto y la replicación, el SGBDD no tiene transparencia de distribución ni integración de esquemas.

Técnicas de fragmentación, replicación y reparto de datos

Fragmentación de datos:
La fragmentación de una base de datos es una definición de un conjunto de fragmentos que incluye todos los atributos y tuplas de la base de datos y satisface la condición de que la base de datos completa se puede reconstruir a partir de los fragmentos mediante alguna secuencia de operaciones. En ocaciones tambien es útil, aunque no necesario, que todos los fragmentos sean disjuntos, excepto la repetición de las claves primarias entre los fragmentos verticales.

Replicación de datos:
La replicación de datos es el almacenamiento de datos en más de un sitio. Esto resulta útil para mejorar la disponibilidad de los datos. El caso más extremo es la repliación de toda la base de datos en todos los sitios del sistema distribuido, creando así una base de datos distribuida totalmente replicada. Esto puede mejorar la disponibilidad notablemente porque el sistema puede seguir operando mientras, por lo menos, uno de los sitios esté activo. También mejora el rendimiento de la obtención de datos en consultas globales, porque el resultado de semejante consulta se puede obtener localmente en cualquier sitio; asi, una consulta de obtención de datos se puede procesar en el sitio local donde se introduce, si dicho sitio cuenta con un módulo servidor.

Reparto de datos:
Cada fragmento se debe asignar a un sitio determinado en el sistema distribuido, a este proceso se denomina distribución de datos o reparto de datos. La elección de sitios y el grado de replicación dependen de los objetivos de rendimiento, disponibilidad para el sistema y de los tipos y frecuencias de transacciones introducidas en cada sitio.

Relación entre fiabilidad y disponibilidad en una base de datos distribuida

Fiabilidad:

Se define, de manera general, como la probabilidad de que un sistema esté funcionando en un momento determinado.



Disponibilidad:

Es la probabilidad de que el sistema esté disponible continuamentedurante un intervalo de tiempo.


Relación entre ambos conceptos:

Cuando los datos y el software del SGBD están distribuidos en varios sitios, un sitio puede fallar mientras que los demás siguen operando. Sólo los datos y el software que residen en el sitio que falló están inaccesibles. Esto mejora tanto la fiabilidad como la disponibilidad. Se logran mejoras adicionales si se replican, con un criterio adecuado, los datos y el software en más de un sitio. En un sistema centralizado, el fallo de un solo sitio hace que el sistema completo deje de estar disponible para todos los usuarios.