Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-10-2007
pvizcay pvizcay is offline
Miembro
 
Registrado: jun 2006
Posts: 147
Poder: 21
pvizcay Va por buen camino
Cita:
Empezado por tefots Ver Mensaje
el tema esta claro , mientras tenga una transaccion activa , el resto de transacciones por muy bien que las haya finalizado , se quedan pendientes realmente.
mmm no, no se quedan pendientes, ya están en commit o completadas.. pero el punto es que la performance se degrada como dices..

Cita:
Empezado por tefots Ver Mensaje
tambien tengo claro , que lo ideal para hacer cualquier operacion sobre la bd , es conectarse , iniciar transaccion , realizar operaciones , finalizar transaccion y desconectarse. lo qe pasa es que esto por la naturaleza de las aplicaciones no siempre es posible, y de serlo para poder llevarlo a cabo hay que realizar trabajo extra.
"no siempre es posible" ?? yo creo que si, tal vez tengas que cambiar el diseño de la aplicación.. tal vez si de entrada sabías como funcionaba firebird y su arquitectura multigeneracional te hubieras ahorrado el trabajo..

Cita:
Empezado por tefots Ver Mensaje
la cosa es que en una aplicación tengo controles enlazados que muestran alarmas, eventos , etc... . la aplicacion (ademas de hacer otras cosas ) como ya he dicho ha de estar siempre en marcha y estas pantallas han de estar siempre mostrandose.
y para mostrar todos estos datos he de tener siempre una transacion activa , (ademas d que el usuario puede abrir pantallas y dejarlas abiertas hasta el final de los dias , las cuales tambien usan transacciones) , asi que aqui esta el problema.
para alarmas y eventos FB tiene los events.. la aplicación cliente que los "escucha" no tiene que crear una transacción para los mismos.. asi que esto es claramente falso

Cita:
Empezado por tefots Ver Mensaje
la solucion ya la se , y es cada x tiempo (digamos 1 hora) , cerrar e iniciar de nuevo las transacciones activas que tenga , sin que el usuario y sin que los controles enlazados que usan esta transaccion se enteren .
pero me parece una verdadera chapuza y una perdida de tiempo andar realizando estas cosas simplemente porque sino la base de datos peta con el tiempo.
puedes hacer que las pantalla cargue los datos y luego cerrar la transacción.. (con controles no enlazados por ej); si es una operación interactiva no hace falta que quede un día la ventana abierta.. si te pones a pensar como solucionarlo encontraras 100 maneras elegantes de realizarlo..

Cita:
Empezado por tefots Ver Mensaje
como ya he dicho me parece un fallo muy grave , y no creo que yo haya diseñado la aplicación mal , sino que hay que diseñar la aplicacion cliente de tal forma que aunque se inicien y finalizen las transacciones correctamente , si no se tiene en cuenta , al final la bd acaba corrompiendose .
¿donde se ha visto un SGBD que por que un cliente deje una transaccion abierta , la base de datos acabe corrompiendose ?.
en fin que no volvere a usar firebird para proyectos futuros hasta que estos temas no este solucionados realmente.

saludos.
yo creo que si la diseñastes mal y estas enojado con firebird por eso.. es más gran parte del problema viene por los componentes de acceso a datos que usas que están pensados para programas con otros requerimientos.. si quieres algo mas tienes que escribir un poco de código.. diseñar una aplicación que corre 24x356 no es trivial, y ni siquiera hicistes una pequeña investigación de la tecnología que usastes.. yo creo que puedes aprender algo de todo esto que te sucedió.. éxitos!
Responder Con Cita
  #2  
Antiguo 15-10-2007
tefots tefots is offline
Miembro
 
Registrado: feb 2005
Posts: 108
Poder: 22
tefots Va por buen camino
Hola , gracias por responder.

Cita:
Empezado por pvizcay Ver Mensaje
mmm no, no se quedan pendientes, ya están en commit o completadas.. pero el punto es que la performance se degrada como dices..
exacto , aqui esta el problema y la gran cagada de firebird. la performance se degrada , y al final se corrompe , te lo aseguro.
[/quote]

Cita:
Empezado por pvizcay Ver Mensaje
para alarmas y eventos FB tiene los events.. la aplicación cliente que los "escucha" no tiene que crear una transacción para los mismos.. asi que esto es claramente falso
no me referia a los events de firebird , con esto me referia a que muestro una serie de registros que guardan alarmas y eventos de diversos tipos, tambien estados de distintos equipos hardware. todo ello con controles enlazados (dbgrid's , etc).

Cita:
Empezado por pvizcay Ver Mensaje
puedes hacer que las pantalla cargue los datos y luego cerrar la transacción.. (con controles no enlazados por ej); si es una operación interactiva no hace falta que quede un día la ventana abierta.. si te pones a pensar como solucionarlo encontraras 100 maneras elegantes de realizarlo..
Siempre he usado controles enlazados , creo que es una de las cosas en las que delphi se aventaja de sus adversarios. si por usar firebird , en algunos casos no voy a poder usar controles enlazados (que esten permanentemente mostrandose) , o voy a tener problemas por usarlos , creo que es un paso atrás y una desventaja en vez de una ventaja.
como bien dices , hay muchas formas de solucionar el problema , pero no habria nada que solucionar si firebird no tuviera dicho problema.

Cita:
Empezado por pvizcay Ver Mensaje
yo creo que si la diseñastes mal y estas enojado con firebird por eso.. es más gran parte del problema viene por los componentes de acceso a datos que usas que están pensados para programas con otros requerimientos.. si quieres algo mas tienes que escribir un poco de código.. diseñar una aplicación que corre 24x356 no es trivial, y ni siquiera hicistes una pequeña investigación de la tecnología que usastes.. yo creo que puedes aprender algo de todo esto que te sucedió.. éxitos!
No estoy enojado con firebird (solo conmigo mismo por haberlo elejido) , llevo usandolo en todas sus versiones , desde que se liberó ib6 , así que unas cuantas pruebas si que he hecho. lo que no sabia era que la bd se degradaba al mantener una transaccion activa (supongo que la mayoria de usuarios fb no lo saben) , ya que la > de aplicaciones no corren 24x365.

Escribiendo un poco de código todo puede hacerse , pero los controles gráficos enlazados están para que el programador pierda el menor tiempo posible en esto , dile a alguien que está acostumbrado a usar un dbgrid que para que firebird no se degrade , que use un stringgrid , o mejor aun que lo pinte directamente en el canvas.

Como ya he dicho , un sgbd que se degrada porque un cliente mantiene una transaccion activa , no me parece un sgbd serio. independientemente del tiempo que un cliente mantenga una transaccion abierta , fb deberia mantener el performance y la integridad de los datos , y no lo hace.

No hay que ser taliban de firebird (que nadie se ofenda) , para un tipo de aplicaciones firebird va muy bien (de hecho llevo usandolo y defendiendolo muchos años) , pero para otro tipo de aplicaciones , es mejor no usarlo (o se si usa , hay que tener en cuenta algunas cosas para que no se degrade).


Saludos
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
Como cancelar una transaccion? Active Transaction = 0??? JuanErasmo Firebird e Interbase 5 07-08-2007 21:40:46
¡¡¡problemon, Urgente!!! deivi MySQL 2 23-03-2007 23:29:22
Error: Transaction is active Tauro78 Firebird e Interbase 1 09-02-2007 11:38:38
Error: "SQLConnection: there is no active transaction" jmlifi Conexión con bases de datos 3 26-06-2006 18:11:23
Transaction active cmgenny Firebird e Interbase 2 31-05-2004 16:38:16


La franja horaria es GMT +2. Ahora son las 22:39:33.


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