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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-07-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
problemas de lentitud

Hola,

Sigo pasando mi aplicación de paradox a interbase 7 usando delphi 6.

He creado un IBdataSet, que parece me está funcionando Ok, pero si le uno a un navigator, para moverme por los registros, sigue funcionando tan lento como la TIBTAble, por lo que estoy igual que al principio.

Esta tabla tiene muchos registros, es cierto, pero con paradox no iva lento, se iva al último registro de modo inmediato. Ahora, antes de abrir la aplicación tengo que forzar a que se abra la tabla, vaya al último registro, y de nuevo al primero, para que la primera vez que se pulse "ir al último registro", no sea interminable.

Se suponía que usar el IBDataSet, iva a suponer una mejora en cuanto a la velocidad, respecto del TIBTable, pero no es así. Ahora tengo la misma aplicación que antes funcionaba con paradox, con las mismas opciones, pero con una velocidad que la hace inviable.

¿Alguna idea para mejorar la velocidad de la aplicación?


Gracias por la ayuda de ante mano.

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)

Última edición por Giniromero fecha: 28-07-2003 a las 12:57:44.
Responder Con Cita
  #2  
Antiguo 28-07-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 23
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por Giniromero
Ahora tengo la misma aplicación que antes funcionaba con paradox, con las mismas opciones, pero con una velocidad que la hace inviable.
precisamente ahí está el problema: la misma aplicación, diseñada para un motor de datos "navegacional", ahora utiliza un motor de datos "cliente/servidor".

Algunos consejos para mejorar la velocidad:

1. Abrir conjuntos de datos convenientemente filtrados. Traer del servidor sólo las columnas y filas necesarias.

2. En lo posible desplazar la lógica de la aplicación al servidor en procedimientos almacenados y triggers, de forma que se reduzca lo más posible el tráfico de red.

3. Mucho cuidado con los interfaces de usuario "demasiado" interactivos. Los controles enlazados a datos (DBGrids, DBEdits, DBCombos, ...) funcionan muy bien con motores navegacionales (Paradox, Access, dBase, ...), donde se utiliza un acceso casi directo a cada registro, pero no se diseñaron pensando en entornos cliente/servidor, donde se trabaja con conjuntos de filas y donde las optimizaciones de índices se usan en el servidor en la construcción del conjunto de filas devuelto, pero no en la navegación por las mismas en el cliente.

Se puede jugar con algunos parámetros de los DataSet's IBX para mejorar algo el rendimiento, y seguro que algunos compañeros podrán dar alguna receta, pero la clave de un rendimiento óptimo es asumir, y diseñar e implementar, una aplicación cliente/servidor.

Saludos.
Responder Con Cita
  #3  
Antiguo 28-07-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 21
Giniromero Va por buen camino
Cita:
Posteado originalmente por kinobi

cuidado con los interfaces de usuario "demasiado" interactivos. Los controles enlazados a datos (DBGrids, DBEdits, DBCombos, ...) , (...) no se diseñaron pensando en entornos cliente/servidor, donde se trabaja con conjuntos de filas y donde las optimizaciones de índices se usan en el servidor en la construcción del conjunto de filas devuelto, pero no en la navegación por las mismas en el cliente.
¿Podrías aclararme esto algo mejor? ¿que quiere decir esto?¿donde muestro los datos, si no puedo usar DBEdits, o DBGRids?

y si mi aplicación es un conjunto de fichas, cada una de un cliente distinto, con todos los datos, económicos y personales del mismo, ¿como hago para moverme entre las "fichas" si no puedo usar estos controles?

Muchas gracias

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)

Última edición por Giniromero fecha: 28-07-2003 a las 14:13:57.
Responder Con Cita
  #4  
Antiguo 28-07-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 23
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por Giniromero
¿Podrías aclararme esto algo mejor? ¿que quiere decir esto?¿donde muestro los datos, si no puedo usar DBEdits, o DBGRids?
yo no he dicho que no se puedan usar, he dicho que "cuidado con los interfaces de usuario "demasiado" interactivos".

De todas formas, ya que planteas el uso de alternativas a los controles enlazados a datos, hace tiempo se discutió en estos foros ese tema y algunos compañeros apuntaban el uso de controles no-enlazados a datos (Edits, Grids, Combos, Tree-Views, ...). Por supuesto exige mucha más programación, y el resultado puede no ser el esperado.

Cita:
Posteado originalmente por Giniromero
y si mi aplicación es un conjunto de fichas, cada una de un cliente distinto, con todos los datos, económicos y personales del mismo, ¿como hago para moverme entre las "fichas" si no puedo usar estos controles?
Al fin y al cabo casi todas las aplicaciones de bases de datos son un conjunto de "fichas", el problema radica que un conjunto de filas en un DataSet de 20, 30, 100, ..., o 1000 "fichas" es "navegable" tanto en un motor como Paradox como un motor InterBase, pero si el número de filas aumenta: 10000, 50000, (pon el número que quieras) es simplemente impensable que un DataSet de ese tamaño pueda moverse ágilmente en un entorno cliente/servidor. Insisto, Paradox tiene acceso directo a los archivos físicos (de datos e índices) que almacenan la información, un cliente InterBase no, obtiene la información a través del proceso servidor que es el que le ofrece el conjunto resultado de filas en función de la consulta realizada.

Solución (entre otras no excluyentes): la que comentábamos antes, restringir al máximo el número de filas y columnas traídas desde el servidor. Los motores cliente/servidor no están diseñados para soportar desplazamientos aleatorios entre los registros. Pueden hacerlo relativamente bien sobre conjuntos pequeños, pero no sobre grandes volúmenes.

Saludos.

Última edición por kinobi fecha: 28-07-2003 a las 14:40:44.
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


La franja horaria es GMT +2. Ahora son las 12:52:41.


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