Foros del Web » Programando para Internet » PHP »

Capa para la abstraccion de consultas a diferentes bases de datos

Estas en el tema de Capa para la abstraccion de consultas a diferentes bases de datos en el foro de PHP en Foros del Web. Bueno estoy un tanto enrredado con este tema asi que tratare de explicarme lo mejor que pueda. Bueno estoy trabajando mis consultas con el driver ...
  #1 (permalink)  
Antiguo 11/08/2013, 10:27
Avatar de asdmaster  
Fecha de Ingreso: marzo-2010
Mensajes: 98
Antigüedad: 14 años, 1 mes
Puntos: 2
Capa para la abstraccion de consultas a diferentes bases de datos

Bueno estoy un tanto enrredado con este tema asi que tratare de explicarme lo mejor que pueda.

Bueno estoy trabajando mis consultas con el driver PDO
y lo que ahora quiero es crear una capa que me permita armar las consultas es decir
no quiero escribir codigo diferente para MySQL, Postgres, etc.
no se si hacer esto desde cero creando una clase con meodos tipo insert, update, etc.
que me vayan generando el codigo para las diferentes bases de datos.

Pero lo que mas me interesa es conocer las tecnologias ya disponibles.

Estube leyendo algo acerca de doctrine, pero no parece ser lo que busco, creo que va mas por el lado de DBA pero como dije anteriormente estoy muy enredado y agradeceria me orientaran en este tema.

Última edición por asdmaster; 11/08/2013 a las 10:59
  #2 (permalink)  
Antiguo 11/08/2013, 11:26
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 9 meses
Puntos: 181
Respuesta: Capa para la abstraccion de consultas a diferentes bases de datos

Cita:
Iniciado por asdmaster Ver Mensaje
Bueno estoy un tanto enrredado con este tema asi que tratare de explicarme lo mejor que pueda.

Bueno estoy trabajando mis consultas con el driver PDO
y lo que ahora quiero es crear una capa que me permita armar las consultas es decir
no quiero escribir codigo diferente para MySQL, Postgres, etc.
no se si hacer esto desde cero creando una clase con meodos tipo insert, update, etc.
que me vayan generando el codigo para las diferentes bases de datos.

Pero lo que mas me interesa es conocer las tecnologias ya disponibles.

Estube leyendo algo acerca de doctrine, pero no parece ser lo que busco, creo que va mas por el lado de DBA pero como dije anteriormente estoy muy enredado y agradeceria me orientaran en este tema.

Bueno, yo no soy ni mas ni menos el experto en el tema pero la cosa funciona mas o menos asi:
Código PHP:
$dsn 'mysql:dbname=testdb;host=127.0.0.1';
$usuario 'usuario_bd';
$contraseña 'contraseña_bd';

try {
    
$gbd = new PDO($dsn$usuario$contraseña);
} catch (
PDOException $e) {
    echo 
'Falló la conexión: ' $e->getMessage();

Como puedes ver cuando creas una conexión para conectar una base de datos le estas especificando la base de datos en PDO. Si requieres utilizar mas bases de datos debes revisar la documentación de PHP. De mi poca experiencia al respecto se que para postgreSQL es necesario ademas añadirle el puerto pero basicamente una vez le indiques ya sera transparente la situación porque ya no deberas utilizar funciones nativas de PHP para usar mysql, postgreSQL, etc. Simplemente la cosa es decidir que base de datos utilizaras y en función de la misma podrias utilizar un switch case para decidir

ejemplo:

case mysql

(variables para iniciar como mysql)

case postresql

(variables para iniciar como postgresql)

No se si quedo clara la explicación o alguien con mas experiencia nos comparte sus ideas para mejorar y aprender.
__________________
Blog de humor http://elcuasatar.net63.net/
  #3 (permalink)  
Antiguo 11/08/2013, 11:36
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Capa para la abstraccion de consultas a diferentes bases de datos

echa una ojeada a http://www.doctrine-project.org/projects/orm.html ;)
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #4 (permalink)  
Antiguo 11/08/2013, 11:46
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 9 meses
Puntos: 181
Respuesta: Capa para la abstraccion de consultas a diferentes bases de datos

Cita:
Iniciado por carlos_belisario Ver Mensaje
Gracias por el aporte. No sabia muy bien de que iba DOCTRINE pero lo habia escuchado mucho. Lo leere para aprender.
__________________
Blog de humor http://elcuasatar.net63.net/
  #5 (permalink)  
Antiguo 11/08/2013, 12:11
Avatar de asdmaster  
Fecha de Ingreso: marzo-2010
Mensajes: 98
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Capa para la abstraccion de consultas a diferentes bases de datos

Cita:
Iniciado por carlos_belisario Ver Mensaje
EL problema no lo tengo con PDO todo muy bien comprendo como conectar diferentes bases de datos, etc.
Mi problema es la sintaxis del Query Language, ya que es diferente en cada DB
y yo quiero alguna tecnologia que me permita escribirlo igual para las diferentes DB.

Si amigo justamente estaba leyendo la documentacion, aunque aun no entiendo bien esto del Object relational mapping no se si sera lo que estoy buscando.
Conoces mas proyectos como doctrine.

alguien a usado http://php.net/manual/es/book.dba.php

Gracias...
  #6 (permalink)  
Antiguo 11/08/2013, 12:24
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Capa para la abstraccion de consultas a diferentes bases de datos

doctrine es un ORM que trabaja con cualquier driver de DB, cuando haces un find, persist, etc, etc el te hace lo que necesita para hacer la busqueda o insert dentro del driver que le hayas indicado que estes manejando ve un poco la doc y ve si es lo que buscas, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #7 (permalink)  
Antiguo 11/08/2013, 12:34
Avatar de asdmaster  
Fecha de Ingreso: marzo-2010
Mensajes: 98
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Capa para la abstraccion de consultas a diferentes bases de datos

ok gracias, creo que estoy forzado a aprender a trabajar con doctrine ya veo que no puedo pasar por el lado

Saludos!
  #8 (permalink)  
Antiguo 11/08/2013, 15:03
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Capa para la abstraccion de consultas a diferentes bases de datos

Realmente quieres hacer eso? En caso de que consiguieras hacerlo para algo más que consultas muy simples (y Doctrine, o cualquier ORM, lo que hacen son consultas simples), estarías perdiendo las capacidades propias de cada base de datos.
Este tema en particular me ha llamado siempre la atención...Hacer código para construir queries SQL para cualquier base de datos..Me pregunto que, en todo caso, antes que eso, querría un lenguaje que me permitiera escribir código para cualquier otro lenguaje...
  #9 (permalink)  
Antiguo 12/08/2013, 11:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Capa para la abstraccion de consultas a diferentes bases de datos

En efecto para eso sirve Doctrine, justamente tiene el DQL (Doctrine Query Language) que permite solamente programar en Doctrine y apuntar a varias bases de datos.

Aunque como bien dice dashtrash, realmente no deberías de verlo así, Doctrine por si solo es un muy buen ORM, pero si vas a pensar en ser tan genérico que no vas a conocer el DataStore te vas a pasar por más problemas que si solo decides atacar un DataStore.
  #10 (permalink)  
Antiguo 12/08/2013, 13:05
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Capa para la abstraccion de consultas a diferentes bases de datos

Cita:
Iniciado por asdmaster Ver Mensaje
Bueno estoy un tanto enrredado con este tema asi que tratare de explicarme lo mejor que pueda.

Bueno estoy trabajando mis consultas con el driver PDO
y lo que ahora quiero es crear una capa que me permita armar las consultas es decir
no quiero escribir codigo diferente para MySQL, Postgres, etc.
no se si hacer esto desde cero creando una clase con meodos tipo insert, update, etc.
que me vayan generando el codigo para las diferentes bases de datos.

Pero lo que mas me interesa es conocer las tecnologias ya disponibles.
Puedes usar un ORM como Propel o Doctrine. Con eso vas a ahorrar tiempo en las operaciones de persistencia pero no te va servir para hacer aplicaciones genéricas sin saber nada del gestor especifico, ese no es su propósito.

Cita:
Iniciado por asdmaster Ver Mensaje
Esto es para base de datos que están basados en archivos y no usan un gestor de base de datos.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:45.