¿Cuáles son las similitudes y diferencias en términos de los conceptos fundamentales y la implementación entre un lenguaje de base de datos relacional sql
y un lenguaje de programación lógica como prolog
y core.logic
de clojure? Son los dos intercambiables?¿Qué tan similares son los lenguajes de bases de datos relacionales y la programación lógica?
Respuesta
Las similitudes son capturadas por el lenguaje de consulta Datalog. Here es la motivación y una mejor explicación de la conexión entre la lógica y las bases de datos. Este extracto debe abordar su pregunta:
Sin embargo, el acoplamiento Prolog y las bases de datos relacionales muestran algunas disonancias . Los hechos y las reglas en Prolog se organizan en un pedido total y la semántica de un programa Prolog depende de este orden. En el contraste , las relaciones en una base de datos se consideran conjuntos desordenados de tuplas y el resultado de una consulta es independiente de cualquier orden física . El procesamiento de los programas Prolog está orientado a tuplas, mientras que las bases de datos relacionales están orientadas a conjuntos. Prolog ofrece funciones de procedimiento como el predicado de corte para permitir que el programador controle el proceso de inferencia . El orden de evaluación de un programa Prolog es predeterminado, mientras que las expresiones en cálculo relacional son puramente declarativa y la evaluación real se deja a un procesador de consultas que puede reorganizar la consulta para fines de optimización. La optimización de consultas fue crucial para el éxito de las bases de datos relacionales. La naturaleza de procedimiento del motor Prolog deja la carga de optimización con el programador.
Una diferencia importante es que SQL is only Turing complete con algunos trucos bastante locos que no fueron posibles hasta ANSI SQL 99. Prolog is Turing complete y es por lo tanto un lenguaje de programación de propósito general.
Aunque SQL y Prolog demuestran ambos conceptos lógicos de primer orden, ninguno es una implementación completa del predicate calculus.
Prolog y otros lenguajes de programación lógica dependen en gran medida de la recursión, tanto para la definición de estructuras de datos como para los predicados.
SQL per se no permite la recursión, y la introducción de procedimientos almacenados se ha realizado con limitaciones en la profundidad de anidación de tales llamadas. P.ej. SQL Server 2000 hasta 2012 permite at most 32 nested calls.
En las bases de datos relacionales, las "relaciones" se reifican como tablas (o de forma más flexible, como vistas). El aspecto más similar de Prolog es dynamic factbases, que en algunas implementaciones (SWI, Amzi) permite indexar el rendimiento, muy similar a la indexación de tablas relacionales para el rendimiento en SQL.
Aunque los RDBMS SQL están diseñados para trabajar eficientemente con grandes conjuntos de datos de los que normalmente necesita una implementación Prolog, Prolog puede al menos usarse para prototipos de la base de datos y los aspectos de proceso de un diseño de sistema.
Consulte here for a 2005 thesis que explora la extensión de bases de datos relacionales con la inferencia Prolog.
- 1. Bases de datos relacionales y Matemáticas?
- 2. Qué son buenas soluciones de bases de datos NoSQL y no relacionales para la base de datos de auditoría/registro
- 3. Triple Stores vs bases de datos relacionales
- 4. ¿Qué lenguajes tipados estáticamente son similares a Python?
- 5. ¿Recomendaciones con datos jerárquicos en bases de datos no relacionales?
- 6. ¿Cómo separar la lógica y los datos de programación en MS SQL Server 2005?
- 7. Explorador/visualización de datos de bases de datos relacionales?
- 8. Convergencia de Matemáticas y Lenguajes de Programación
- 9. ¿Cómo funcionan las bases de datos relacionales bajo la capucha?
- 10. Referencia de funciones similares entre Lenguajes de programación
- 11. Bases de datos relacionales vs. dimensionales, ¿cuál es la diferencia?
- 12. ¿Cuáles son los pros y los contras de las bases de datos de objetos?
- 13. Implementación eficiente de búsqueda facetada en bases de datos relacionales
- 14. ¿Cuáles son los lenguajes de programación para GPU
- 15. Patrones de diseño de bases de datos relacionales?
- 16. ¿Están las bases de datos orientadas a documentos destinadas a reemplazar las bases de datos relacionales?
- 17. Qué innovaciones de bases de datos relacionales ha habido en los últimos 10 años
- 18. ¿Existen bases de datos relacionales distribuidas fáciles de usar?
- 19. Automóvil Lenguajes de programación
- 20. Buenos recursos para el diseño de bases de datos relacionales
- 21. ¿Los lenguajes de programación funcionales son adecuados para la programación de gráficos?
- 22. Pros/contras de bases de datos basadas en documentos vs. bases de datos relacionales
- 23. ¿Cómo hacer modelado de herencia en bases de datos relacionales?
- 24. ¿Qué algoritmos son difíciles de implementar en los lenguajes funcionales?
- 25. ¿Herramienta para analizar y comparar la lógica de funciones similares?
- 26. Índice de referencia x CouchDB bases de datos relacionales
- 27. ¿Por qué no ha atrapado la programación lógica?
- 28. jerarquía chomsky y lenguajes de programación
- 29. ¿Qué lenguajes de programación son compatibles con el intercambio de códigos y/o el espacio aislado?
- 30. Complejidad de los lenguajes de programación