Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   Que componentes de conexión a Bases de Datos usar ? (https://www.clubdelphi.com/foros/showthread.php?t=75448)

rolandoj 24-08-2011 04:52:50

Que componentes de conexión a Bases de Datos usar ?
 
Hola,

Estamos empezando con Lazarus. La idea es desarrollar un servidor web bajo Linux. Con nuestra compañera de trabajo ya logramos instalar Lazarus en Ubuntu y crear un WebModule que trabaja con Apache 2.2.

El paso siguiente es la conexión a Bases de Datos. El problema es : Cual juego de componentes usar ?. Por lo que hemos leído, dbExpress no está disponible. Hay bastantes familias de componentes; pero, la mayoría parece limitada a trabajar un solo motor.

Nosotros necesitamos que la aplicación permita determinar, a tiempo de ejecución, las librerías adecuadas al motor que en ese momento se esté usando. O sea, por un lado, requerimos que soporte como mínimo ODBC, y por otro enadenamiento dinámico.

En cuanto a lo de ODBC, por supuesto, la idea es que también traiga drivers nativos para varios motores, y mientras más motores soporte en forma nativa mucho mejor.

Lo del encadenamiento dinámico es una preocupación principal. Según leímos, lazarus no lo soporta directamente; pero, parece que se manejan algunas alternativas.

El candidato es por ahora Zeos; pero, que tan similar es a dbExpress ?. Los métodos y propiedades principales trabajan igual ?. Es capaz de determinar dinámicamente el cliente adecuado al motor ?. Que tan confiable es para productos comerciales ?. O sea, alguién ha desarrollado una aplicación realmente seria en Lazarus bajo Linux usando Zeos ? . Hay otras alternativas disponibles ?

Ojalá alguno pueda encaminarnos a los componetes adecuados. Desde ya, muchas gracias

Casimiro Notevi 24-08-2011 10:06:01

Cita:

Empezado por rolandoj (Mensaje 410002)
[..] O sea, alguién ha desarrollado una aplicación realmente seria en Lazarus bajo Linux usando Zeos ? . Hay otras alternativas disponibles ? [..]

Zeos es zeos, tanto en windows como en linux, no vas a tener problema por eso.

rolandoj 24-08-2011 14:20:06

Muchas Gracias. Comentarios
 
Cita:

Empezado por Casimiro Notevi (Mensaje 410012)
Zeos es zeos, tanto en windows como en linux, no vas a tener problema por eso.

Hola,

Muchas gracias por la respuesta.Tengo a Zeos como primer candidato porque he leído varias recomendaciones en ese sentido; sin embargo, no tengo muchos detalles al respecto.

Por ejemplo, otras dudas que no mencioné en mi primer post : cual es la diferencia entre esos componentes y los que vienen en Lazarus, los SQLdb ? Hay soporte para tipos de datos BCD ?. Hay soporte para Db2 ?. El soporte para SQL standard es completo, facil de usar y confiable ?

Es que los detalles usualmente se aprenden con la experiencia; pero, el estar prevenidos en algunos de ellos es muy importante. Miremos el caso de la última pregunta:

A primera vista, parece una tontería porque uno esperaría que una tecnología lider cumpliera eso; pero, mi experiencia indica que no necesariamente es así. Cuando pasé de BDE a dbExpress, se suponía que dbExpress era mejor y como parte de ello, lógicamente, se esperaría que su soporte a SQL standard fuera completo; pero, me tocó lidear mucho tiempo con errores que tiene, hasta identificarlos y encontrar alternativas alrededor de ellos. Por ejemplo, con el dbExpress que viene en Delphi 2007, si intentas algo como :

SELECT COUNT(CODIGO) FROM DATOS

No te funciona. Tienes que hacer algo como :

SELECT COUNT(CODIGO) LACANTIDAD FROM DATOS

En el caso presente, el aplicativo que queremos hacer en últimas, es realmente una migración desde uno Delphi que usa dbExpress (y antes BDE); por ello preguntaba acerca de la similitud de enfoques entre dbExpress y Zeos, a fin de no tener que recodificar las partes que usan dbExpress ya que son más del 90% de llamadas a clases que no son propias de mi aplicativo.

Esas partes usan realmente clases descendientes de las de dbExpress; es decir, mi propia capa de abstracción, por lo que la idea es reemplazar esa capa para que descienda de componentes análogos de Lazarus; que eso fué lo que hice al pasar de BDE a dbExpress. Ahora, mientras más cercanos sean los escogidos a sus contrapartes dbExpress, el trabajo será más facil.

Así pués, lo que busco es determinar la opción más adecuada para migrar; y saber de antemano los puntos en los que se esperarían problemas.

Casimiro Notevi 24-08-2011 14:45:37

Lo mejor que puedes hacer es visitar la web e informarte bien, tienen también foros, por lo que puedes preguntar todo lo que se te ocurra.

En cuanto a BD soportadas, el readme dice:

Cita:

ZeosDBO supports direct connectivity to the following databases using the vendor provided, native interface:
• MySQL 3.20 - 5.0
• PostgreSQL 6.5 - 8.1
• Firebird 1.0 - 2.0
• Interbase 5.0 - 7.5
• Microsoft SQL Server 7, 2000
• Sybase ASE 12.0, 12.5
• Oracle 9i
• SQLite 2.8, 3.5

For other databases we propose to use implemented Active Data Objects (ADO) Bridge.
Advantages of using ZeosDBO:
• Platform independance. The ZeosDBO is highly generic. Applications written in ZeosDBO can be migrated
across databases without major changes.
• ZeosDBO is open source, written for usability and extensibility.
• ZeosDBO leverages the amazing power of the Delphi development environment without relying on a perfor-
mance killing middleware.
• ZeosDBO is an extremely thin abstraction layer, unlike 'thick' layered protocols like ADO and BDE.


santi33a 08-03-2012 21:51:48

Hola recién descargué la ultima versión de Lazarus (0.9.30) para probar como me va con el soft libre pues en mi empresa quieren migrar todo lo de Windows, siempre he trabajado con Delphi 2010 y MS SQL Server sin problemas, para ello también baje la ultima versión de Postgresql la versión 9.1.3.1.
Ahora que componente usar para comunicame con Postgresql? pues por lo que he leido la ultima versión de Zeus solo soporta hasta la versión 8.4, existe algún otro componente que pueda usar la ultima versión de Postgresql?, es que no quisiera empezar por versiones ya antiguas, no se, que pueden recomendarme? :confused:
Y gracias. :D

rolandoj 09-03-2012 01:39:45

Comentarios
 
Hola,

Pués por mi parte no puedo ayudarte porque tuvimos muchos problemas con Zeos y congelamos esa parte del proyecto, enfocándonos por ahora en otros aspectos de nuestro software.

Sin embargo, hay un dato que puede interesarte. Parece que Embarcadero si tiene planes a largo plazo de producir una versión de Delphi en Linux para soportar la parte servidora. De hecho, una razón por la que, en nuestro proyecto, no estamos haciendo mayores esfuerzos bajo Linux es en la esperanza de que liberen esa versión; así pués tratamos de hacer primero todo lo que sea posible bajo Windows. Solo intentaremos avanzar bajo Linux si ya no nos queda nada importante que hacer en la versión Windows, o si se libera la versión mencionada (que según la información que nos dieron podría ser a fines de este año o principios del siguiente)

Lo que si no hemos podido entender es por qué ni en Delphi ni en productos similares como Lazarus, no se ha trabajado fuertemente la parte servidora bajo Linux, cuando, comercialmente hablando, esa es la parte realmente interesante. De hecho, en Lazarus encontramos una impresionante cantidad de componentes desarrollados para la parte cliente; pero, en lo que respecta al acceso a la Base de Datos, comparativamente hablando es bastante pobre (o al menos, lo era para fines de Septiembre del año pasado que fué hasta cuando estuvimos trabajando con Zeos)

Es un contraste para nosotros muy extraño porque a nivel empresarial los clientes son esencialmente Windows y es muy dificil, por la interacción con el usuario, cambiar a LInux (en donde trabajabamos se hizo un piloto y fué un desastre total); pero, para una empresa es muy atractivo tener sus servidores en Linux por rendimiento y economía. Concentrar tanto esfuerzo en la parte menos atractiva y descuidar tanto la más atractiva es algo que no entendemos.

Bueno, al parecer ahora si Embarcadero se ha dado cuenta de algo tan obvio y piensan hacer algo al respecto. Espero que esta vez vayan en una buena dirección.

rretamar 09-03-2012 03:17:14

Hola.
Podrías, si no es molestia, explayarte más en eso de que "fue un desastre total" lo de intentar implementar Linux en los escritorios. Me interesa conocer este tipo de comentarios.

Casimiro Notevi 09-03-2012 09:17:07

No entiendo lo que dices de que haya pocas posibilidades para instalar servidores linux, teniendo en cuenta mi experiencia: desde 1998 sólo instalamos servidores linux y nunca hemos tenido ningún problema.
Cualquier componente de acceso a BD le indicas la dirección del servidor y punto, no hay más problema.
Seguramente no he entendido lo que has dicho.

santi33a 09-03-2012 16:34:53

Sigo sin avanzar, de que forma o con que componente me puedo conectar a una base de datos en Postgresql v.9.1.3.1 con Lazarus?

Casimiro Notevi 09-03-2012 17:21:32

¿No te sirven los zeos?

mightydragonlor 09-03-2012 17:36:59

Los Zeos Alpha, o TPQConnection de la paleta sql db.

santi33a 09-03-2012 19:10:04

Me sirve cualquiera pero por ejemplo el Zeos 7 que todavía no es la version estable solo llega hasta la version 8.4 del Posgresql, esa es mi duda, pues quería usar la ultima version la 9.1.3.1, en el caso de TPQConnection lo use y me dio un error, el lunes les digo cual pues tengo todo eso instalado en la laptop en mi casa, donde hago las pruebas.
Y muchas gracias.

mamcx 09-03-2012 19:22:33

Puedes averiguar con http://www.microolap.com/products/co...y/postgresdac/ (parece que el desarrollador de esa lib lo ha probado en lazarus:http://pgolub.wordpress.com/2011/03/...meets-lazarus/)

o con http://www.da-soft.com/ (la ultima vez que probe en linux ok, pero como necesitaba OSX ahi si no me dio, Quizas ahora es mucho mejor)

Y de todos, este tiene soporte oficial para linux, e incluso iOS!

http://www.devart.com/pgdac/

He usado devart en los componentes .net y me ha ido muy bien ;)

rolandoj 10-03-2012 03:27:24

Extiendo la explicación
 
Cita:

Empezado por rretamar (Mensaje 427199)
Hola.
Podrías, si no es molestia, explayarte más en eso de que "fue un desastre total" lo de intentar implementar Linux en los escritorios. Me interesa conocer este tipo de comentarios.

Hola,

Bueno, te explico mejor:

El problema no es que nosotros escribamos clientes Linux usando por ejemplo Lazarus. Digamos que hicieramos un cliente super bueno para nuestro sistema. Eso suena muy bien; pero, para que tenga sentido que escribamos tal programa hay que partir de que el usuario tenga instalado Linux. Ahora bien, un usuario normal no trabaja solo con nuestro sistema; el tiene que utilizar otra serie de aplicativos, tales como hojas electrónicas, procesadores de palabras, etc. Por lo tanto, se necesita que pueda laborar por lo menos igual de bien como lo hace con Windows. En otras palabras, no podemos mirar solo nuestro sistema, hay que ver todo el entorno.

En el caso que comentaba, se trata de una empresa mediana (entee 60 y 80 usuarios regulares). Independientemente del sistema que desarrollamos, se tuvo la idea de abaratar costos instalando Linux en los equipos; pero, antes de hacerlo se pensó en realizar un piloto para observar como reaccionarían y como podía verse afectada la productividad. Fué una sabia decisión.

Para ello se usaron varios empleados de áreas no críticas y se les instalaron productos típicos que se usarían bajo Linux, tales como Open Office. Ahi es donde digo que el resultado fué una total catástrofe. Y no es ni siquiera por el sistema Linux en si mismo ni por las capacidades nativas de las herramientas usadas; el problema es la compatibilidad con el mundo exterior porque no solo los documentos históricos, sino también los producidos por otros empleados y, sobretodo los recibidos de otras empresas o entes, no salen bien en las herramientas que probamos. Si es por ejemplo documento de docx, la mayoría se muestran descuadrados y es un problema su lectura o edición. Los usuarios estaban histéricos y nos involucraron a nosotros para que los ayudaramos en sus pruebas, con lo cual hasta nosotros mismos perdimos mucho tiempo tratando de arreglar los montones de problemas.

La conclusión a que se llegó es que resultaba más costoso, sobre todo en productividad, el tratar de implantar Linux que el ahorro que podría conseguirse por el tema de las licencias; así que se abandonó la idea.

La lección es que en un ambiente como el nuestro, donde todo el entorno es Windows, no es recomendable la opción de Linux para equipos clientes. Claro está, en empresas mucho más pequeñas puede ser una opción, o en entornos donde haya un fuerte desarrollo de Linux.

Ahora, Windows está sobradamente extendido en el mundo, así que las condiciones de nosotros son las de la mayoría de empresas; por eso dije que no entendía la razón de haber gastado tanto esfuerzo en componentes para la parte cliente en Linux, en lugar de hacerlo para la parte servidora. La parte servidora si es atractiva porque son equipos manejados por personal técnico de sistemas y donde, para seguir con el ejemplo, no vas a estar trabajando un documento docx. Aparte de eso, es un hecho conocido la mayor estabilidad y rendimiento de los servidores Linux. La lógica comercial me dice entonces que los lenguajes de programación, caso Lazarus o lo que fué Kylix deberían centrar su atención en la parte servidora; o sea el Web Server y las conexiones a las bases de datos; pero, ese lado está muy pobre (o al menos lo estaba en ese entonces) en comparación a su contraparte Windows (lease dbExpress, etc)

elopezarias 26-05-2012 23:38:28

A todos logre conectar Lazarus 0.9.32.2 a PostgreSQL 9.1 con ZeosLib 6.6.6, les explico, cuando instalamos Zeos Lib 6.6.6 y deseamos conectar Lazarus con PostgreSQL 9.1 nos encontramos con la terrible despcion de que no soporta sino la versión 7 y 8, el truco es el siguiente existe una libreria muy conocida por los programadores en PHP que es libpq.dll que es la encargad de dar acceso a PostgreSQL pues entonces si descargamos esa libreria minimo la version 8.36.9034 que es la que conecta con la version 9.1 y la ubicamos en la carpeta donde tenemos lazarus, normalmente c:\lazarus, y despues colocamos un ZConnection, con las siguiente configuracion Database:postgres (o a la base que usted quiere conectar), hostname:localhost, password:(la que usted asigno de administrador), port:5432 (lo puede dejar en 0 no importa), protocolo: postgresql (importante), user:postgres, y conneted a true y ¡GUALÁ! estamos conectados, coloquemos un ztable para probar y seleccionemos una tabla aparece una lista interminable y uno piensa esto no funciono pero si tiene alguna tabla creada debe a parecer algo asi como public.(nombre de la tabla) secleccionamos y activamos, ahora a compilar, si nos sale el error de libreria libpq.dll no encontrada es porque la debemos tambien copiar en el directorio donde esta la fuente del proyecto porque ahi se genera el ejecutable y para correr solicita es libreria, he modificado, agregado y borrado registro y todo funciona.


La franja horaria es GMT +2. Ahora son las 09:01:10.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi