Club Delphi  
    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 Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-07-2010
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 18
mcs Va por buen camino
Varios hilos atacando a Firebird

Buenos días,

Estoy planeando unos cambios a una aplicación que ya tenemos funcionando. Una de estas modificaciones resultará en que tendremos un servicio multihilo atacando a una base de datos Firebird.

El tema es que más o menos los hilos siempre escribiran a la vez a la base de datos, y va a haber muchos hilos abiertos (unos 60).

Mi pregunta: para no tener ningún tipo de problema, debo usar una conexión para cada hilo, o una conexión global?

Y otra pregunta... Para que cada hilo tenga sus propias variables locales y no sean modificadas por los otros hilos, lo mejor debe ser que las variables sean miembros de la clase, y cada hilo una instancia de esta clase, verdad? Es que estoy un poco verde en el tema Delphi multihilo...

Muchas gracias, y que paséis un buen fin de semana.

Marc
Responder Con Cita
  #2  
Antiguo 09-07-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por mcs Ver Mensaje
Mi pregunta: para no tener ningún tipo de problema, debo usar una conexión para cada hilo, o una conexión global?

Y otra pregunta... Para que cada hilo tenga sus propias variables locales y no sean modificadas por los otros hilos, lo mejor debe ser que las variables sean miembros de la clase, y cada hilo una instancia de esta clase, verdad? Es que estoy un poco verde en el tema Delphi multihilo...
No digo que sea lo correcto, habría que probar, pero normalmente en programación multihilo con Base de Datos, por lo que he leído, lo normal es utilizar una conexión para cada hilo.

Pregunta del Millón: ¿Qué tiene que ver todo esto con el título del mensaje? Menos mal que recomendamos que el título sea explicativo del problema...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 09-07-2010
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 18
mcs Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Pregunta del Millón: ¿Qué tiene que ver todo esto con el título del mensaje? Menos mal que recomendamos que el título sea explicativo del problema...
Pero no lo es? Se trata de atacar/acceder a firebird a traves de varios hilos del mismo programa... Sinó, como lo podría poner? Es que no se me ha ocurrido nada más...
Responder Con Cita
  #4  
Antiguo 09-07-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por mcs Ver Mensaje
Pero no lo es? Se trata de atacar/acceder a firebird a traves de varios hilos del mismo programa... Sinó, como lo podría poner? Es que no se me ha ocurrido nada más...

Perdón, perdón,...
En este caso pensé que hablabas de "Varios hilos" (de los foros), "atacando" (literalmente) al FB.

Estoy fatal!!! Ni caso!
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 09-07-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Firebird classicserver ya es multihilo, no creo que necesites hacer nada en ese aspecto, conexiones normales.
Pero la pregunta que me surge es: por qué tienes que crear esos múltiples hilos en tu programa?
Responder Con Cita
  #6  
Antiguo 09-07-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Neftali Ver Mensaje
[..] Estoy fatal!!! Ni caso!
Amigo, cuídate del calor
Responder Con Cita
  #7  
Antiguo 09-07-2010
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 18
mcs Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pero la pregunta que me surge es: por qué tienes que crear esos múltiples hilos en tu programa?
Porqué estaran haciendo lecturas simultáneas a x aparatos. La escritura en la base de datos es sólo un paso de estas lecturas: primero se lee el contenido de una sonda, dependiendo de la hora se tiene que grabar... Hasta el momento se hacía todo del tiron (eran instalaciones con máximo 16 aparatos), pero ahora se tiene que ampliar a instalaciones con varias subestaciones (se habla de unas 50-60 estaciones, cada una de ellas con 3 o 4 aparatos).

Como puedes entendes, si hago estas lecturas secuenciales, hacer un bucle entero es algo MUY largo. Si lo hago paralelamente será más corto (no cómo si lo hiciera con un único aparato, pero algo es algo). Y claro, en el peor de los casos puede ocurrir que se intenten hacer desde el mismo programa 50 o 60 escrituras a la vez.
Responder Con Cita
  #8  
Antiguo 09-07-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Firebird classicserver ya es multihilo, no creo que necesites hacer nada en ese aspecto, conexiones normales.
Pero la pregunta que me surge es: por qué tienes que crear esos múltiples hilos en tu programa?
El problema creo que no está en el SGBD, sino en los componentes de conexión de la VCL que no son "Thread-safe". Es el caso, por ejemplo, de ADO; Si vas a trabajar con Query dentro de multihilos, cada Thread debe crear su conexión.

Habría que ver exactamente qué componentes vas a utilizar y si son Thread-safe.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



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
Ayuda relaciones de varios a varios TQueries j_flores3000 SQL 7 22-11-2008 21:43:40
Hacker borró su disco duro atacando su propia dirección IP vtdeleon Humor 2 24-06-2006 20:12:15
Varios equipos en red con el servidor de Firebird en ejecución Sick boy Firebird e Interbase 2 09-06-2006 11:40:11
Con delphi Insert en Firebird varios registros desde otra tabla lasweb Conexión con bases de datos 3 04-04-2005 20:58:26
Aplicacion con varios Hilos de Ejecución samantha jones Varios 1 02-03-2005 17:27:24


La franja horaria es GMT +2. Ahora son las 20:34:47.


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
Copyright 1996-2007 Club Delphi