Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Tardan en conectar los clientes???Lentitud en las transac...

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Tardan en conectar los clientes???Lentitud en las transac... Responder citando

Mi aplicación conecta con interbase bien.
En un ordenador el server y en el resto el cliente.
Conecto mediante tcp/ip y local y las dos las coge.
Mis pregunta son:
¿pq tarda 1 min en conectar mediante las dos formas desde los clientes??
Luego trabajando con ella va bien respecto a velocidad pero,
¿pq cuando un cliente borra o inserta un registro ni otro cliente ni el servidor ve los cambios hasta iniciar de nuevo la aplicación?
Refresco las consultas,...
He mirado por hay pero no he encontrado la solución a mi problema.
Alguien sabe como solucionar ambas cosas???? Rolling Eyes
Un saludo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola TitiPower, IB es un sistema de servidor "Activo" esto es el cliente hace solicitudes al server y este despacha los resultados y/o realiza los cambios, esto por supuesto es mucho mas lento que acceder directamente cada cliente a la BD (Paradox, Access, DBase) pero entraña muchas ventajas respecto a la concurrencia, integridad y consistencia.

Para este tipo de bases de datos se deben implementar ciertas medidas a fin de reducir al minimo el trafico de red y por ende aumentar la velocidad de conexion.

1.-No abras ningun DataSet hasta que lo necesites de veras.

2.-Usa Querys preferiblemente a las tablas, en especial si solo es para mostrar los datos.

Espero esto te sea de utilidad, cualquier duda estamos a la orden.

3.-Restringe los resultados de las Querys extrictamente a lo necesario.

4.-Evita el uso de DBGrids y DBNavigators en conjuncion con tablas, especialmente si estas son o pueden llegar a ser muy largas, el uso del boton last se traera todos los registros por la red.

5.-Aprovecha al maximo los triggers y stored procedures, no actualices por ejemplo el inventario desde tu aplicacion cuando se grabe una venta, crea un trigger asociado a la tabla de ventas que ejecute la actualizacion.

6.-El servidor de IB es preferible que este en la PC mas potente y si es posible que sea exclusiva para este fin, sin nadie trabajando en ella.

7.-Tambien si es posible usa conexion a 100 Mb y verifica que todas las PCs efectivamente se conecten a esta velocidad.

8.-Finalmente si no son necesarios quita los protocolos distintos a TCP/IP, esto disminuye las "Negociaciones" de conexion.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Alfredo te ha dado una buena respuesta de lo que debes hacer, te sugiero que uses TQuerys en la medida de lo posible y hullas de los TTable, pues cada vez que haces un TTable->Open() te traes toda la tabla, si la tabla es pequeña pues generará poco trafico por la red, pero si la tabla es grande y tienes varias aplicaciones a la vez, adios al rendimiento!!

En una buena aplicación cliente/servidor, el trafico hay que procurar que sea el minimo, por ejemplo cuando hagas Querys, es decir en los SELECT pon solo los campos que realmente vas a leer, no hagas un SELECT *, porque te traeras campos que a lo mejor no utilizas y si la consulta devuelve muchos campos pues adios, otra vez!!

Lo que te comenta Alfredo sobre el cableado es interesante, usa a ser posible tarjetas de calidad, no uses tarjetas baratas, usa 3COM o Intel aunque parezca mentira se nota en el rendimiento muy por encima de Ovislink y cosas del estilo. Asegurate usar cableado 5e, pues suele ser apantallado y así evitarás ruidos de inteferencias.

Pero lo realmente importante es reducir el trafico entre los clientes y el servidor y esto solo se hace con una buena programación cliente/servidor. Por lo pronto intenta sustituir Tablas por Querys en la medida de lo posible, e intenta hacer buenas Querys o incluso Vistas, eso reducirá bastante el trafico y como bien dice Alfredo es interesante que el servidor corra en la máquina más potente pues allí se ejecutarán todas las operaciones.

Ciao y suerte.
_________________
OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Gracias compañeros, estoy deacuerdo yo también con todo eso pero pienso que mi problema es otro.
Pq me tarda 1 min en conectar??
Q es mejor crear todos los formularios al principio o ir creandolos y destruyendo para cliente/servidor??
Mi usuarios usan casi todos cuando trabajan con la aplicación.
Y para lo otro de no actualización en el resto de clientes.
Debo usar transacciones, sesiones, ...
Alguien que lo tenga claro pq me pasa esto???
Un saludo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Las transacciones es algo que se usa, lo quieras tu u no, pues en el caso de que no lo hagas manualmente siempre habrá una transaccion automaticamente, pues todos los cambios, lecturas, etc, se hacen a nivel de transaccion.

Usa IBX, dbExpress, BDE ? Que usas para conectarte al servidor ?
Usas TTables, o TIBTables o cosas así ?
_________________
OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Uso para conectar TIDBDatabase y TIBTable,TIBQuery.
Las que vienen con la pestaña InterBase??
qe opinas XyVy??
Un saludo.
Volver arriba
Mensaje    Asunto: Responder citando

Opino que si haces un TIBTable->Open() te traes toda la tabla al cliente y si tiene un millon de registros pues ya sabes. En una red rapida a lo mejor no se nota, pero olvidate de trabajar por Internet o en una red más lenta.
_________________
OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Lo de conectar parece q va bien ya.
Cuando realizo una inserción hago un
ModuloDatos->IBT_Laboratorio->Commit() y se actualiza para los demas (pensaba yo q lo hacia sólo el IBTransation).
Ahora me dice q el DataSet está cerrado y no me deja seguir trabajando en la aplicación (ni a mi ni a los demas clientes deje trabajar).
Alguien me explica como controlo el tema de las transacciones???
Un saludo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Te dice que el dataset está cerrado porque el Commit te cerro la transacción luego ahora deberias darle a comenzar de nuevo la transacción, para solucionar eso, puedes hacer un CommitRetaining(), que te hará un commit(), pero te dejará la transacción abierta.

Te sugiero que te leas la documentación del Developer Guide de Interbase 6.0, pues ahí viene mucha información sobre las transacciones.

Basicamente una transacción, se podría interpretar como una operación atomica e indivisible, es decir, o se ejecuta entera o no se ejecuta, , sirven para asentar un grupo de datos en la base de datos o bien no asentarlos, cuando tu haces un commit() estas asegurando todas las operaciones que hayas hecho en esa transacción en la BD, con un rollback() podrías volver atrás y todas las operaciones que se hubiera realizado en esa transacción se eliminarian.

Las transacciones garantizan la consistencia de datos en la BD y son muy utiles para los accesos concurrentes. Interbase tiene además un sistema de transacciones en 2 fases, y varios modos de garantizar el acceso a los datos. Como dije antes leete un poco el manual developer guide de interbase 6.0 ahí viene todo explicado yo estoy comenzando también con el tema.

Ciao.
_________________
OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Buscando por Internet acabo de encontrar lo siguiente:

Cita:

"No puedo ver las actualizaciones hechas por otros usuarios, porque?"
Chequea si tu modo de aislamiento de transacción es "Read Commited". Si es este (por defecto en Interbase), tu siempre obtendrás una consistente vista de los datos. Tip: Para cambiar el modo de aislamiento de la transacción a "Read Commited", haz doble click en tu componenete TIBTransaction.

Lo siguiente, estate seguro que la aplicación realiza un commit de la transacción despues de cualquier actualización, usando o bien CommitRetaining o un Commit.

Finalmente, si tu dataset está ya abierto en tu PC cuando otro usuario realiza algunas actualizaciones, tu verás estos cambios solo despues de que tu cierres y re-abras el dataset o despues de que tu llames al metodo refresh y el registro actualizado sea el actual registro que tu estes viendo.


Espero que con esto te quede más claro, yo siempre estoy intentando leer articulos sobre IBX, pues la información relazionada con IBX para Builder es bastante pobre, incluso en los propios manuales de Buildes, apenas entran de detalle de como trabajar bien con IBX.

Espero que te sirva de utilidad.
Ciao.
_________________
OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Asias tio, ya me voy aclarando la verdad.
Ese articulo ya lo habia visto esta tarde investigando.
Un saludo y asias de nuevo. Wink
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

HOLA:

Una cosilla respecto a que tarda en abrir la base de datos.

Windows xp ó Windows 2000, trae un pequeño gestor de seguridad. Dependiendo del tipo de archivo hace una copia de seguridad antes de empezar a trabajar, curiosamente las extensiones gdb estan dentro de la lista de estos archivos, asi que antes de conectar con la base de datos hace una copia de seguridad temporal de la misma, por eso tarda al principio en abrirla. Puedes cambiar la extension de base de datos y veras que abre mas rapidamente.

By.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Muy bueno tu apunte toño se me había olvidado ese comentario, pues lo leí hace tiempo, también puedes desactivar el RESTAURAR SISTEMA.

Ciao y gracias por la nota.
_________________
OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

HOLA:

Na, pa eso estamos, siento no estar mas por aqui pero realmente ando liado.

By.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.