Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Hola.

Como te he comentado, nunca intenté hacer una conexión multi-hilo a interbase, en ninguna versión.

Creo que para efectos de pruebas, y para comproabar que el problema no está en dbExpress, podes valerte de realizar exactamente la misma prueba, pero sobre firebird, lo que no implica mucho mas que, hacer un backup de la base de datos, desinstalar interbase, instalar firebird con soporte para "legacy applications", restaurar el backup y realizar la prueba.

Cita:
Empezado por rolandoj Ver Mensaje
Una investigación de ese error en Internet indica varias causas; pero, en este caso, la más probable es un problema con el software cliente de Interbase, que según encontré en algunas notas muy antiguas, no es hilo seguro en versiones anteriores a la 7.

Me queda una gran duda:

dbExpress usa su propio driver cliente "dbxint30.dll" para conectarse, y más nada. Puesto que este es todo el cliente y es la última versión, yo suponía que era un hilo seguro, y por eso, inicialmente no lo había verificado. No encuentro lógico que a estas alturas de la historia no lo sea.
El driver de dbExpress (dbxInt30.dll) no hará mas que conectarse al cliente de interbase (gds32.dll). Por tanto, para que funcione, es necesario que ambos sean thread-safe.

Cita:
Empezado por rolandoj Ver Mensaje
Una posible explicación es que falle al tratarse de una conexión a una versión antigua de la base de datos; pero no debería haber mucha diferencia entre ese manejo para una versión anterior y la de la versión actual, por lo que no me es muy convincente que excluyeran esa capacidad.
¡Claro que puede haberla!
Quizás el equipo de desarrollo de interbase no se planteó la necesidad de soportar multiples conexiones concurrentes desde una misma aplicación y por tanto desde una única instancia del cliente, hasta muy tarde, y no lograron completar el trabajo hasta después de la v. 6.0.

Cita:
Empezado por rolandoj Ver Mensaje
Investigué en Internet y no pude encontrar nada que afirmara, o rechazara, el hecho de que ese driver sea un hilo seguro. En cambio, encontré una nota de Agosto del 2007 en que alguién expresaba dudas en que la creación de la conexión dbExpress fuera hilo seguro, y varias notas confirmando que mi metodología de acceso (crear una nueva conexión para cada hilo) es la correcta con dbExpress.
No uso dbExpress, pero francamente dudo que a estas alturas, como motor, no tuviera esa capacidad. Otro asunto son los drivers, pero como ya te dije antes, no está muy difícil comprobarlo.

Finalmente, puedo garantizar que el cliente de firebird 1.5 y superiores se desempeñan muy bien en entornos multihilos. En ocasiones esporádicas, las aplicaciones que usan esa característica han presentado algun problema que de primera mano atribuyo al cliente, pero que no he logrado comprobar.

En mi caso, las conexiones las hago usando IBX como capa de conexión.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #2  
Antiguo 05-03-2008
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 20
rolandoj Va por buen camino
Unhappy Primeras pruebas Firebird insatisfactorias

Hola jachguate,

Perdón por la demora. Estaba ocupado con má proyectos y otros aspectos de este.

Estaba esperando Oracle para probar; pero como se ha demorado el conseguírlo, en el primer tiempo libre, he hecho unas pruebas preliminares con Firebird 2.0.3

Estas pruebas han fracasado, lo que me tiene bastante preocupado. Pienso elaborar unas pruebas independientes para descartar posibles errores de aplicación que puedan haberse introducido con la migración a Delphi 2007.

Mientras tanto, como mencionas que a veces hay fallas que atribuyes al cliente, podrías comentar más detalles al respecto ?

Hay otro punto que me preocupa:

El hilo de donde viene cada evento que accesa la base de datos es uno que yo no he creado. Se supone que es generado automáticamente cuando el Servidor invoca la librería ISAPI que maneja los eventos del caso, y por tanto, en todo momento he estado suponiendo que es seguro; pero, a estas alturas, y después de numerosos problemas con delphi 2007, ya desconfío de todo. Has usado esa tecnología ?.

Por la misma razón anterior, creo que no sobra comentar lo siguiente:

El manejo de hilos bajo ISAPI (y en general), hasta donde sé, parte de no usar variable globales (típicamente, todas las variables tienen su origen dentro de la rutina que se invoca en el hilo), o si se necesitan, hay que proteger cualquier acceso a ellas mediante secciones críticas.

Todo el código está basado en ese principio. Hay algo adicional que creas que se deba tener en cuenta ?

Gracias de antemano por cualquier ayuda
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cuadno usar Post, applyupdates con DBExpress? alopete Conexión con bases de datos 3 29-10-2007 14:28:09
Como Actualizar DBExpress Gran Cacique Conexión con bases de datos 1 17-10-2007 17:42:40
Conviene usar DBExpress? ivan022481 Conexión con bases de datos 5 30-06-2007 14:20:48
Titulemos los Hilos que publiquemos como mejor podamos dec Debates 16 25-10-2005 19:33:08
Como conecto Dbexpress con MySql norberto_larios Conexión con bases de datos 3 10-09-2005 16:42:39


La franja horaria es GMT +2. Ahora son las 12:11:26.


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