Articulo de referencia

Capa de abstracción de la base de datos

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 ...

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]

Niveles de abstracción de bases 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 a múltiples instrucciones que la base de datos entiende. 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.

Nivel conceptual o lógico (nivel medio o inmediatamente superior)

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.

Nivel externo o de vista

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.

Abstracción de 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 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.

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 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 .

Argumentos

A favor

  • Periodo 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 deban admitirse, 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 desean o no pueden cambiar de base de datos pueden implementarla en su infraestructura existente.
  • Preparación para el futuro: a medida que surjan nuevas tecnologías de bases de datos, los desarrolladores de software no tendrán que adaptarse a nuevas interfaces.
  • Pruebas para desarrolladores: una base de datos de producción puede reemplazarse con una implementación a nivel de escritorio de los datos 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. Una DAL puede usar funciones de programación de bases de datos u otros métodos para crear una funcionalidad estándar pero no compatible o una funcionalidad completamente nueva. Por ejemplo, la DAL de DBvolution implementa la función de desviación estándar para varias bases de datos que no la admiten.

En contra de ello

  • Velocidad: cualquier capa de abstracción reducirá la velocidad general más o menos según la cantidad de código adicional que se deba ejecutar. Cuanto más se abstraiga una capa de base de datos de la interfaz de base de datos nativa e intente emular características que no están presentes en todos los backends de base de datos, más lento será el rendimiento general. Esto es especialmente cierto para las capas de abstracción de base de datos que intentan unificar el lenguaje de consulta, como 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 dada, como cualquier otra cosa, puede eventualmente volverse obsoleta, pasada de moda o sin soporte.
  • Operaciones enmascaradas: las capas de abstracción de la base de datos pueden limitar la cantidad de operaciones de base de datos disponibles a un subconjunto de las admitidas por los backends de base de datos. En particular, es posible que las capas de abstracción de la base de datos no admitan por completo optimizaciones específicas del backend de la base de datos o funciones de depuración. Estos problemas se magnifican significativamente con el tamaño, la escala y la complejidad de la base de datos.

Véase también

Referencias

  1. ^ Ambler, Tim; Cloud, Nicholas (2015). Frameworks de JavaScript para el desarrollo web moderno. Apress. pág. 346. ISBN 978-1-4842-0662-1.
  2. ^ "¿Qué es agnóstico en cuanto a bases de datos? - Definición de WhatIs.com".
  3. ^ "Niveles de abstracción".
  4. ^ "OpenDBX". linuxnetworks.de . 24 de junio de 2012 . Consultado el 26 de julio de 2018 .
  5. ^ "Libzdb". tildeslash.com . 2018 . Consultado el 26 de julio de 2018 .
  6. ^ "GNOME-DB". 12 de junio de 2015. 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.
Obtenido de "https://es.wikipedia.org/w/index.php?title=Capa_de_abstracción_de_base_de_datos&oldid=1220503377"