Una capa de abstracción de base de datos ( DBAL [1] o DAL ) es una interfaz de programación de aplicaciones que unifica la comunicación entre una aplicación informática y bases de datos como SQL Server , IBM Db2 , MySQL , PostgreSQL , Oracle o SQLite . Tradicionalmente, todos los proveedores de bases de datos proporcionan su propia interfaz adaptada a sus productos. Depende del programador de aplicaciones implementar el código para las interfaces de base de datos que serán compatibles con la aplicación. Las capas de abstracción de base de datos reducen la cantidad de trabajo al proporcionar una API consistente al desarrollador y ocultan los detalles de la base de datos detrás de esta interfaz tanto como sea posible. Existen muchas capas de abstracción con diferentes interfaces en numerosos lenguajes de programación. Si una aplicación tiene una capa de este tipo incorporada, se denomina independiente de la base de datos . [2]
El nivel más bajo se conecta a la base de datos y realiza las operaciones reales requeridas por los usuarios. En este nivel, la instrucción conceptual se ha traducido a múltiples instrucciones que la base de datos comprende. La ejecución de las instrucciones en el orden correcto permite que el DAL ejecute la instrucción conceptual.
La implementación de la capa física puede utilizar API específicas de la base de datos o utilizar la tecnología de acceso a la base de datos estándar del lenguaje subyacente y la versión SQL de la base de datos.
La implementación de tipos de datos y operaciones es lo más específico de la base de datos en este nivel.
El nivel conceptual consolida los conceptos e instrucciones externos en una estructura de datos intermedia que puede convertirse en instrucciones físicas. Esta capa es la más compleja, ya que abarca los niveles externo y físico. Además, debe abarcar todas las bases de datos compatibles y sus peculiaridades, API y problemas.
Este nivel es consciente de las diferencias entre las bases de datos y es capaz de construir una ruta de ejecución de operaciones en todos los casos. Sin embargo, la capa conceptual cede a la capa física la tarea de implementar realmente cada operación individual.
El nivel externo está expuesto a los usuarios y desarrolladores y proporciona un patrón consistente para realizar operaciones de base de datos. [3] Las operaciones de base de datos se representan solo de manera vaga como SQL o incluso acceso a la base de datos en este nivel.
Cada base de datos debe ser tratada por igual en este nivel sin diferencias aparentes a pesar de los distintos tipos de datos físicos y operaciones.
Las bibliotecas unifican el acceso a las bases de datos al proporcionar una única interfaz de programación de bajo nivel al desarrollador de aplicaciones. Sus ventajas suelen ser la velocidad y la flexibilidad, ya que no están vinculadas a un lenguaje de consulta específico (subconjunto) y solo tienen que implementar una capa fina para alcanzar su objetivo. Como todos los dialectos SQL son similares entre sí, los desarrolladores de aplicaciones pueden utilizar todas las características del lenguaje, posiblemente proporcionando elementos configurables para casos específicos de bases de datos, como, por ejemplo, identificaciones de usuario y credenciales. Una capa fina permite que las mismas consultas y declaraciones se ejecuten en una variedad de productos de bases de datos con una sobrecarga insignificante.
El uso más común de las capas de abstracción de bases de datos se da en los lenguajes de programación orientados a objetos , que son similares a las capas de abstracción de nivel API. En un lenguaje orientado a objetos como C++ o Java, una base de datos se puede representar mediante un objeto , cuyos métodos y miembros (o su equivalente en otros lenguajes de programación) representan diversas funcionalidades de la base de datos. También comparten ventajas y desventajas con las interfaces de nivel API.
Un ejemplo de una capa de abstracción de base de datos a nivel de lenguaje sería ODBC , que es una implementación independiente de la plataforma de una capa de abstracción de base de datos. El usuario instala un software de controlador específico , a través del cual ODBC puede comunicarse con una base de datos o un conjunto de bases de datos. El usuario tiene entonces la capacidad de hacer que los programas se comuniquen con ODBC, que luego retransmite los resultados de ida y vuelta entre los programas del usuario y la base de datos. La desventaja de este nivel de abstracción es el aumento de la sobrecarga para transformar las declaraciones en construcciones entendidas por la base de datos de destino.
Como alternativa, existen envoltorios delgados, a menudo descritos como capas de abstracción ligeras , como OpenDBX [4] y libzdb [5] . Finalmente, los proyectos grandes pueden desarrollar sus propias bibliotecas, como, por ejemplo, libgda [6] para GNOME .
La biblioteca Libgda [...] es principalmente una capa de abstracción de datos y base de datos, e incluye una extensión de interfaz de usuario basada en GTK+ y algunas herramientas gráficas.