¿Cuál es la diferencia entre la base de datos y capa de abstracción de capa de acceso de datos?

StackOverflow https://stackoverflow.com/questions/2838661

Pregunta

realidad estoy atascado en la estructura de 3 niveles. Navegaba por internet y encontré dos terminologías "Base de datos de la Capa de Abstracción" y "capa de acceso de datos".

¿Cuáles son las diferencias entre los dos?

¿Fue útil?

Solución

Mi entendimiento es que una capa de acceso de datos en realidad no abstracta la base de datos, sino que hace que las operaciones de base de datos y consulta de la construcción más fácil.

Por ejemplo, las capas de acceso de datos por lo general tienen muy similares a las API de sintaxis SQL que aún requieren el conocimiento de la estructura de la base de datos con el fin de escribir:

$Users->select('name,email,datejoined')->where('rank > 0')->limit(10);

capas de abstracción de datos son por lo general llena de soplado ORM (Object-Relational mapeadores) que, teóricamente, evitar la necesidad de comprender cualquier estructura de base de datos subyacente o tener ningún conocimiento de SQL. La sintaxis podría ser algo como esto:

Factory::find('Users', 10)->filter('rank > 0');

y todos los objetos podrían estar completamente rellenos con todos los campos, posiblemente unido a cualquier padre o hijo objetos si se establece esa manera.

Sin embargo, esta abstracción viene con un precio. Personalmente encuentro ORM como doctrina o propulsar a ser innecesario e ineficiente. En la mayoría de los casos un simple capa de acceso de datos hará muy bien, con SQL manual para cualquier cosa que requiere una atención especial, en lugar de tener que destruir el rendimiento de la aplicación para un poco de azúcar sintáctica. Esta zona es un debate calentado bastante así que no voy a entrar en más.

Si usted significó datos Base capa de abstracción, entonces sería algo en la línea de DOP, para que su código se puede utilizar para un mayor número de proveedores de bases de datos. PDO trabaja con MySQL, PostgreSQL y mysqli entre otros, creo.

Otros consejos

capa de acceso de datos = Crear, leer, actualizar, (CRUD) operaciones de eliminación específica de su dominio de aplicación

Los datos de capa de abstracción de bases de datos realiza operaciones = genérica como conexiones, comandos, parámetros que aislantes de bibliotecas de datos de proveedores específicos y proporcionando una API de alto nivel para el acceso a los datos independientemente de si utiliza MySQL, Microsoft SQL Server, Oracle, DB2, etc. ..

De Wiki:

de acceso a datos de capa

  

Una capa de acceso de datos (DAL) en el software de ordenador, es una capa de una   programa de ordenador que proporciona acceso simplificado a los datos almacenados en   almacenamiento permanente de algún tipo, tales como una entidad relacional   base de datos.

     

Por ejemplo, el DAL podría devolver una referencia a un objeto (en términos   de la programación orientada a objetos) completar con sus atributos vez   de una fila de campos de una tabla de base de datos. Esto permite que el cliente (o   usuario) Módulos que ser creado con un mayor nivel de abstracción. Esta   tipo de modelo podría ser implementado mediante la creación de una clase de acceso a datos   métodos que hacen referencia directamente un conjunto correspondiente de base de datos almacenada   procedimientos. Otra aplicación potencial podría recuperar o escritura   registra hacia o desde un sistema de archivos. El DAL oculta esta complejidad de la   subyace almacén de datos del mundo exterior.

     

Por ejemplo, en lugar de utilizar comandos tales como insertar, eliminar, y   actualizar acceder a una tabla específica en una base de datos, una clase y unos pocos   procedimientos almacenados se podrían crear en la base de datos. Los procedimientos   sería llamada de un método dentro de la clase, lo que devolverá un   objeto que contiene los valores solicitados. O bien, la inserción, eliminación y   comandos de actualización podrían ser ejecutados en funciones simples como   registeruser o loginUser almacenan dentro de la capa de acceso de datos.

En pocas palabras, su CRUD básica funcionalidades / lógicas en objetos de negocio para empujar a / tirar de la capa de persistencia / Almacenamiento cae aquí. Para la mayoría de los casos es posible que desee simplemente esto. mapeo ORM, las interfaces de objetos de negocio de modelo, etc. caído aquí.

base de datos de capa de abstracción

  

A capa de abstracción de base de datos es una interfaz de programación de aplicaciones   que unifica la comunicación entre una aplicación de ordenador y   bases de datos como SQL Server, DB2, MySQL, PostgreSQL, Oracle o   SQLite. Tradicionalmente, todos los proveedores de bases de datos proporcionan su propio   interfaz de la medida de sus productos, que deja a la   programador de aplicaciones para implementar código para todas las interfaces de bases de datos   él o ella desea apoyar. capas de abstracción de base de datos reducen   la cantidad de trabajo, proporcionando una API consistente para el desarrollador y   ocultar los detalles detrás de esta interfaz de bases de datos tanto como sea posible.   Existen muchas capas de abstracción con diferentes interfaces   lenguajes de programación numerosos.

Básicamente, es una capa adicional de abstracción para que ABM en contra de los proveedores de interfaces independientes y preocuparse menos por detalles de implementación de diversos proveedores de bases de datos. Tendrá que esto sólo si usted quiere apoyar a más de una base de datos. ORM, Micro ORM, envoltorios, las clases de controladores genéricos, cualquiera que sea el nombre, etc. que se ocupa de establecimiento de la conexión, la administración de parámetros, etc ejecución caen aquí. Es sólo una capa adicional justo antes de que la capa de persistencia / almacenamiento. En la terminología de 3 niveles, estas dos capas entran en una, ya que no son lógicamente separados.


En resumen, se trata de datos DAL, DBAL se trata de la base de datos. DAL define las operaciones, DBAL opera. DAL se sienta detrás de DBAL que está justo detrás Db real. DAL llama DBAL. DAL es una buena cosa que la lógica de negocio independientes (en Model) de lógicas del CRUD, mientras DBAL casi nunca es necesaria (pero me encanta). DAL es el mapeo de diseño más alto nivel, es DBAL arquitectura más bajo nivel y la aplicación. Tanto separa responsabilidades. ORM son estructuras masivas que hace las dos cosas para usted. No estoy seguro de cómo separarlos cuando se utiliza ORM. No es necesario que desde el ORM manejar todo lo que para usted. Idealmente, me gustaría tener de todos modos DAL en un proyecto, y en otra, que DBALMe gustaría simplemente llamo capa de persistencia ya que no hay punto en la separación de Db y operaciones en él.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top