PDA

Ver la Versión Completa : ADO Vs ODBC Vs ZEOS LIB


Diego827
09-03-2011, 05:28:35
Las razones por las cuales coloco este hilo aqui es porque SOLO Clubdelphi puede responderlo con la CALIDAD experimentada de los colaboradores, mi consulta es: Cual es la mejor forma de accesar a una base de datos Mysql: ADO, ODBC o ZeosLib? Desde ya agradecido!:rolleyes: y cuales son las ventajas de uno sobre otro?

Ñuño Martínez
09-03-2011, 09:25:20
Accesar (http://buscon.rae.es/draeI/SrvltConsulta?TIPO_BUS=3&LEMA=accesar), accesar (http://www.wordreference.com/es/translation.asp?tranword=accesar)... Pues no, con "accesar" no me sale nada. ¿Es un nuevo paradigma de programación? ¿Un nuevo protocolo de comunicaciones?

Delfino
09-03-2011, 10:43:01
Yo usaría DBExpress, por lo menos es el mas rápido..

Casimiro Notevi
09-03-2011, 13:04:49
Accesar (http://buscon.rae.es/draeI/SrvltConsulta?TIPO_BUS=3&LEMA=accesar), accesar (http://www.wordreference.com/es/translation.asp?tranword=accesar)... Pues no, con "accesar" no me sale nada. ¿Es un nuevo paradigma de programación? ¿Un nuevo protocolo de comunicaciones?

Creo que algunas personas usan esa palabra para decir "acceder", no sé por qué, seguramente es algún derivado de una palabra en inglés, aunque no puedo confirmarlo. :rolleyes:

Si está preguntando qué componentes se puede usar para acceder a mysql, de los nombrados, yo optaría por zeos o por el que ha indicado Delfino.

MAXIUM
09-03-2011, 15:17:41
Diego827, siempre ha de buscarse el menor número de intermediarios entre una aplicación y el acceso de este hacia la base de datos (creo que le llaman, capas...), junto con la velocidad en que lo hacen. ODBC queda en último lugar, siendo Zeos, más compatible.

Ahora, también depende de que base de datos uses, ya que hay componentes especializados en alguna BD, donde la velocidad de accesos aumenta considerablemente.

rgstuamigo
09-03-2011, 17:09:08
Efectivamente estoy totalmente con MAXIUM, lo primero es que... hay que conocer como funcionan las diferentes tecnologías de acceso, para escoger la mejor...
A continuacion te pongo una imagenes que estan en la página (http://www.devart.com/mydac/) de los componentes MyDAC que tambien sirven para conectarse a MySQL, desde luego éstos componentes son de pago y mi propósito no es hacerles publicidad sino poderte mostrar en imagenes la manera en que se puede trabajar para acceder a una DB ya que "una imagen vale más que mil palabras"

Si trabajamos con los componentes de la paleta BDE la conexion sería:
http://www.devart.com/mydac/images/mydac_flow_bde.gif
Lógicamente usando ADO para conectar a MySQL la imagen de conexion sería muy similar a la anterior(no tengo ninguna imagen para mostrarte :o) pero seria algo como:
Programa <---> ADO <---> Proveedor de datos <---> Base de datos
Si usamos los componentes Zeos ,pues internamente éstos componentes utilizan la librería cliente de MySQL(*.dll) para conectarse por lo cual la imagen sería algo como:
http://www.devart.com/mydac/images/mydac_flow_client.gif
Desde luego existen componentes que la conexion lo hacen directamente (sin intermediario) con lo cual tenemos la siguiente Imagen:
http://www.devart.com/mydac/images/mydac_flow_direct.gif
Espero haber podido colaborar en algo...;)
Saludos...:)

Delfino
09-03-2011, 17:24:54
Desde luego existen componentes que la conexion lo hacen directamente (sin intermediario) con lo cual tenemos la siguiente Imagen:
Los componentes nunca hablaran directamente con la BD. Siempre habrá una dll, API etc. que ejerce de intermediario entre los componentes y el servidor. Por lo que el ultima imagen no existe en el caso de BDs cliente servidor..

Al González
09-03-2011, 17:41:42
Yo usaría DBExpress, por lo menos es el mas rápido..
También yo optaría por dbExpress (a veces llamado DBX). Es nativo, rápido y relativamente preparado para cuando el patrón diga: "pero yo quiero que la base de datos sea Oracle / Firebird / DB2 / SQL Server / Informix / etc.".

Además, esto "obliga" a usar TClientDataSet, con lo cual tienes un montón de ventajas para el manejo de los registros en el lado cliente.

El hacerlo en dos o tres capas es opcional. Se tiene el mito de que al usar dbExpress hay que tener un servidor de aplicaciones (capa intermedia); pues no es así.

Saludos.

Al González. :)

P.D. Y sí, es acceder, no accesar. Y, en el caso de una DLL, una colección de clases, una colección de funciones, etc., es biblioteca, no librería. ;)

Casimiro Notevi
09-03-2011, 17:49:31
Si esa API fuesen las propias funciones de la misma BD, entonces sí sería posible hacerlo sin intermediario alguno.

rgstuamigo
09-03-2011, 17:51:26
Los componentes nunca hablaran directamente con la BD. Siempre habrá una dll, API etc. que ejerce de intermediario entre los componentes y el servidor. Por lo que el ultima imagen no existe en el caso de BDs cliente servidor..
Es lógico lo que tú dices, pero hay que entender que muchas veces tales API y/o dll son implementadas o utilizadas directamente en los componentes, sin necesidad de tener una DLL, de ahí que los componentes MyDAC por ejemplo pueden trabajar en "modo cliente"(usando la dll) o en modo nativo(sin ninguna dll).;)
Saludos...:)

Diego827
09-03-2011, 20:52:52
Efectivamente estoy totalmente con MAXIUM, lo primero es que... hay que conocer como funcionan las diferentes tecnologías de acceso, para escoger la mejor...
A continuacion te pongo una imagenes que estan en la página (http://www.devart.com/mydac/) de los componentes MyDAC que tambien sirven para conectarse a MySQL, desde luego éstos componentes son de pago y mi propósito no es hacerles publicidad sino poderte mostrar en imagenes la manera en que se puede trabajar para acceder a una DB ya que "una imagen vale más que mil palabras"

Si trabajamos con los componentes de la paleta BDE la conexion sería:
http://www.devart.com/mydac/images/mydac_flow_bde.gif
Lógicamente usando ADO para conectar a MySQL la imagen de conexion sería muy similar a la anterior(no tengo ninguna imagen para mostrarte :o) pero seria algo como:

Si usamos los componentes Zeos ,pues internamente éstos componentes utilizan la librería cliente de MySQL(*.dll) para conectarse por lo cual la imagen sería algo como:
http://www.devart.com/mydac/images/mydac_flow_client.gif
Desde luego existen componentes que la conexion lo hacen directamente (sin intermediario) con lo cual tenemos la siguiente Imagen:
http://www.devart.com/mydac/images/mydac_flow_direct.gif
Espero haber podido colaborar en algo...;)
Saludos...:)

Agradezco muuucho la dedicacion de tu respuesta rgstuamigo!!! como siempre: Casimiro una gran ayuda y de Delfino no digamos!!! gracias. Creo que ahora me queda claro que mientras menos intermediarios (capas) existan entre la base de datos y la aplicacion es mejor (ahora obvio antes no tanto :), muy agradecido MAXIUM). Gracias!!! ;)

Saludos -+-

Diego827
09-03-2011, 20:56:04
Las razones por las cuales coloco este hilo aqui es porque SOLO Clubdelphi puede responderlo con la CALIDAD experimentada de los colaboradores, mi consulta es: Cual es la mejor forma de accesar a una base de datos Mysql: ADO, ODBC o ZeosLib? Desde ya agradecido!:rolleyes: y cuales son las ventajas de uno sobre otro?

Accesar (http://buscon.rae.es/draeI/SrvltConsulta?TIPO_BUS=3&LEMA=accesar), accesar (http://www.wordreference.com/es/translation.asp?tranword=accesar)... Pues no, con "accesar" no me sale nada. ¿Es un nuevo paradigma de programación? ¿Un nuevo protocolo de comunicaciones?

Lo siento!!! :cool:

Casimiro Notevi
09-03-2011, 21:43:14
[..] Creo que ahora me queda claro que mientras menos intermediarios (capas) existan entre la base de datos y la aplicacion es mejor (ahora obvio antes no tanto :)

Eso depende, no hay nada "mejor o peor", todo es relativo. Por ejemplo, usas firebird y has elegido los componentes de accedo directo IBX (los que vienen con delphi). Perfecto, accede muy rápidamente y estás contentísimo, pero un día llega un cliente y dice: "es que aquí nosotros usamos postgresql", ¿qué haces?.
Lo tienes difícil en ese caso.
Pero si en lugar de IBX, te decantaras por Zeos (por ejemplo), entonces casi no tendrías problemas en acceder a ambas BD, salvo algunos arreglitos que siempre son necesarios.
Por eso, todo depende, depende de lo que quieres hacer y del futuro de lo que quieras hacer.

gatosoft
09-03-2011, 22:23:00
Yo apoyo la respuesta de Al, en un 100% estoy de acuerdo con todo...

sobre todo por que hay que mirar a futuro, el respaldo y adaptabilidad que tendrá tu aplciación a nuevas tecnologías, y esta es a la que le está apostando Embarcadero

También yo optaría por dbExpress (a veces llamado DBX). Es nativo, rápido y relativamente preparado para cuando el patrón diga: "pero yo quiero que la base de datos sea Oracle / Firebird / DB2 / SQL Server / Informix / etc.".

Además, esto "obliga" a usar TClientDataSet, con lo cual tienes un montón de ventajas para el manejo de los registros en el lado cliente.

El hacerlo en dos o tres capas es opcional. Se tiene el mito de que al usar dbExpress hay que tener un servidor de aplicaciones (capa intermedia); pues no es así.

Saludos.

Al González. :)

P.D. Y sí, es acceder, no accesar. Y, en el caso de una DLL, una colección de clases, una colección de funciones, etc., es biblioteca, no librería. ;)

Zeos, me pareció muy bueno cuando lo utilicé (para trabajar con PostgreSQL), pero finalmente me decidí por dbExpress por las razones que expone Al...

A proposito para trabajar PostgreSQL con dbExpress recomiendo utilizar el driver de la pagina de DevArt...

En cuanto a "accesar", "acceder", "Pegarle a (una base)", etc, etc, creo que es irrelevante para el caso, como dicen por ahi " a buen entendedor pocas palabras" y cuando uno quiere ayudar, sencillamente ayuda... y ya..

saludos,