Persistencia en PHP

php-logo-128 A continuación un breve análisis de las posibilidades de acceso a base de datos desde PHP. Pero primero un concepto:

Diferencia entre Data Access Layer y Data Abstraction Layer:

Data Access Layer: es añadir una capa de acceso a datos a tu aplicación que simplifica el acceso a los datos. Simplificar significa que tendrás que escribir menos código para conseguir interactuar con la base de datos.

Data Abstraction Layer: es algo más complejo. Por un lado simplifica el acceso a los datos pero, además, evita que cambios en tu modelo de datos (por ejemplo, el nombre de una columna de una tabla) impliquen cambios en tu capa de lógica de negocio.

A la hora de elegir un mecanismo de acceso a datos lo primero que hay que decidir es si se quiere un sistema sencillo que simplemente me haga escribir menos código, o si quiero uno más complicado que, además, me permita cambiar mi modelo de datos sin cambiar nada más. En general suele depender del tamaño del proyecto. Sólo si me enfrento a un proyecto realmente grande, estaré interesado en sistemas de abstracción.

Una última cosa: existe una confusión con el término “abstracción“. En muchos de estos mecanismos se utiliza para indicar que el método de acceso para diferentes bases de datos (mysql, mssql, postgresql, etc.) es el mismo. En otros casos se utiliza para indicar que la lógica de acceso a datos se encuentra abstraída de la lógica de negocio. Yo utilizo el término en ésta segunda acepción.

 

Lista de algunos mecanismos de persistencia en PHP:

Data Access Layer: objeto que simplifica la realización de cualquier consulta SQL.

Query Abstraction: no sólo simplifica el acceso sino que permite abstraerse del SQL. Tu escribes en un seudo-SQL y el objeto se encarga de traducirlo al SQL propio de la base de datos.

Active Record: patrón de diseño con el que un objeto representa un registro de una tabla de la BD. Ya no hay un objeto para todo acceso, como en los casos anteriores. Hay un objeto para cada registro.

Data Abstraction Layer: el acceso a base de datos es más complejo. Existen múltiples clases que abstraen la conexión, base de datos, cada tabla, cada registro …

  • Creole Project
  • QCodo: se generan las clases de acceso a la BD en tiempo de compilación.
  • PHPDoctrine: las clases se generan en tiempo de ejcución.
  • Propel : tiene motor para tiempo de compilación y otro para tiempo de ejecución.

Leave a Reply

Your email address will not be published. Required fields are marked *