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 , DB2 , MySQL , PostgreSQL , Oracle o SQLite. Tradicionalmente, todos los proveedores de bases de datos proporcionan su propia interfaz que se adapta a sus productos. Depende del programador de la aplicación implementar el código para las interfaces de la base de datos que serán compatibles con la aplicación. Las capas de abstracción de la 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]
Niveles de abstracción de la base de datos
Nivel físico (nivel más bajo)
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 en múltiples instrucciones que la base de datos comprende. La ejecución de las instrucciones en el orden correcto permite al DAL realizar la instrucción conceptual.
La implementación de la capa física puede usar API específicas de la base de datos o usar 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 la más específica de la base de datos en este nivel.
Nivel conceptual o lógico (nivel medio o siguiente nivel más alto)
El nivel conceptual consolida conceptos e instrucciones externos en una estructura de datos intermedia que se puede convertir en instrucciones físicas. Esta capa es la más compleja ya que abarca los niveles externos y físicos. 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 difiere de la capa física para la implementación real de cada operación individual.
Nivel externo o de vista
El nivel externo está expuesto a usuarios y desarrolladores y proporciona un patrón consistente para realizar operaciones de base de datos. [3] Las operaciones de la base de datos se representan sólo de manera flexible como SQL o incluso como acceso a la base de datos en este nivel.
Todas las bases de datos deben tratarse por igual en este nivel sin diferencias aparentes a pesar de los diferentes tipos de datos físicos y operaciones.
Abstracción de la base de datos en la API
Las bibliotecas unifican el acceso a las bases de datos al proporcionar una única interfaz de programación de bajo nivel al desarrollador de la aplicación. Sus ventajas suelen ser la velocidad y la flexibilidad porque no están atadas a un lenguaje de consulta específico (subconjunto) y solo tienen que implementar una capa delgada para alcanzar su objetivo. Como todos los dialectos SQL son similares entre sí, los desarrolladores de aplicaciones pueden utilizar todas las funciones del lenguaje, posiblemente proporcionando elementos configurables para casos específicos de la base de datos, como típicamente ID de usuario y credenciales. Una capa fina permite que las mismas consultas y declaraciones se ejecuten en una variedad de productos de base de datos con una sobrecarga insignificante.
El uso popular de las capas de abstracción de bases de datos se encuentra entre los lenguajes de programación orientados a objetos, que son similares a las capas de abstracción a nivel de API. En un lenguaje orientado a objetos como C ++ o Java, una base de datos se puede representar a través de un objeto , cuyos métodos y miembros (o su equivalente en otros lenguajes de programación) representan varias funcionalidades de la base de datos. También comparten ventajas y desventajas con las interfaces a nivel de API.
Abstracción a nivel de lenguaje
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 posibilidad de que los programas se comuniquen con ODBC, que luego transmite los resultados 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 declaraciones en construcciones comprendidas por la base de datos de destino.
Alternativamente, existen envoltorios delgados, a menudo descritos como capas de abstracción ligeras , como OpenDBX [4] y libzdb. [5] Finalmente, los grandes proyectos pueden desarrollar sus propias bibliotecas, como, por ejemplo, libgda [6] para GNOME .
Argumentos
A favor
- Período de desarrollo: los desarrolladores de software solo tienen que conocer la API de la capa de abstracción de la base de datos en lugar de todas las API de las bases de datos que su aplicación debe admitir. Cuantas más bases de datos se admitan, mayor será el ahorro de tiempo.
- Base de instalación potencial más amplia: el uso de una capa de abstracción de base de datos significa que no es necesario que las nuevas instalaciones utilicen una base de datos específica, es decir, los nuevos usuarios que no quieran o no puedan cambiar de base de datos pueden implementar en su infraestructura existente.
- Preparado para el futuro: a medida que surgen nuevas tecnologías de bases de datos, los desarrolladores de software no tendrán que adaptarse a nuevas interfaces.
- Prueba de desarrollador: una base de datos de producción puede reemplazarse con una implementación de los datos a nivel de escritorio para pruebas unitarias a nivel de desarrollador.
- Funciones de base de datos agregadas: según la base de datos y la DAL, es posible que la DAL agregue funciones a la base de datos. Un DAL puede utilizar las funciones de programación de la base de datos u otros métodos para crear una funcionalidad estándar pero no compatible o una funcionalidad completamente nueva. Por ejemplo, DBvolution DAL implementa la función de desviación estándar para varias bases de datos que no la admiten.
En contra
- Velocidad: cualquier capa de abstracción reducirá la velocidad general más o menos dependiendo de la cantidad de código adicional que deba ejecutarse. Cuanto más se abstraiga una capa de la base de datos de la interfaz de la base de datos nativa e intente emular las características que no están presentes en todos los backends de la base de datos, más lento será el rendimiento general. Esto es especialmente cierto para las capas de abstracción de bases de datos que intentan unificar el lenguaje de consulta al igual que ODBC.
- Dependencia: una capa de abstracción de base de datos proporciona otra dependencia funcional para un sistema de software, es decir, una capa de abstracción de base de datos determinada, como cualquier otra cosa, puede eventualmente volverse obsoleta, anticuada o sin soporte.
- Operaciones enmascaradas: las capas de abstracción de la base de datos pueden limitar el número de operaciones de la base de datos disponibles a un subconjunto de las admitidas por los backends de la base de datos admitidos. En particular, es posible que las capas de abstracción de la base de datos no sean totalmente compatibles con las optimizaciones o funciones de depuración específicas del backend de la base de datos. Estos problemas aumentan significativamente con el tamaño, la escala y la complejidad de la base de datos.
Ver también
Referencias
- ^ Tim Ambler; Nicholas Cloud (2015). Marcos JavaScript para Modern Web Dev . Presione. pag. 346. ISBN 978-1-4842-0662-1.
- ^ http://searchdatamanagement.techtarget.com/definition/database-agnostic
- ^ http://www.dmst.aueb.gr/dds/etech/db/abstr.htm
- ^ = (24 de junio de 2012). "OpenDBX" . linuxnetworks.de . Consultado el 26 de julio de 2018 .CS1 maint: nombres numéricos: lista de autores ( enlace )
- ^ = (2018). "Libzdb" . tildeslash.com . Consultado el 26 de julio de 2018 .CS1 maint: nombres numéricos: lista de autores ( enlace )
- ^ = (12 de junio de 2015). "GNOME-DB" . Consultado el 26 de julio de 2018 .
La biblioteca Libgda es [...] principalmente una base de datos y una capa de abstracción de datos, e incluye una extensión de interfaz de usuario basada en GTK + y algunas herramientas gráficas.
CS1 maint: nombres numéricos: lista de autores ( enlace )