Delphi - Base de Datos rapida para Delphi 5

 
Vista:

Base de Datos rapida para Delphi 5

Publicado por JuanMax (3 intervenciones) el 18/02/2003 09:42:40
Tengo hecha una aplicacion con Delphi 5 y con DBase (por compatibilidad) y BDE, pero tengo algunos problemas de refresco de informacion trabajando en Red con multiusuario y estoy viendo la posibilidad de cambiar el tipo de Base de Datos, he hecho pruebas con MSAcces con KaDao y con Interbase , pero me he llevado una sorpresa, porque mientras un proceso con Dbase duraba 1,8 segudos, con MSAccess duraba 8 segudos y con Interbase (Componentes IB) minutos, ¿ que ocurre ?¿cual seria la mejor opcion de Bases de Datos?¿Donde puede buscar informacion al respecto? Muchas Gracias.

JuanMax
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Base de Datos rapida para Delphi 5

Publicado por BigLuis (463 intervenciones) el 18/02/2003 16:28:59
Si realmente la diferencia entre DBase e Interbase son MINUTOS, perdona pero algo has hecho mal en Interbase.Esta es una Base de Datos servidora SQL y bastante rápida.La diferencia podría ser de algun segundo ya que al trabajar en red os obvio que algo se tiene que notar pero por contra tienes todas las ventajas de estar ante un RDMS en toda la regla hecha precisamente para eso, para trabajar en red, aunque me atrevo a decirte que con una buena implementacion de Interbase (ya saber triggers, store porcedures, etc) porbablemente no notaras la diferencia.En cuanto a acces permite trabajar en red mejor que DBase, pero pienta que Access no deja de ser una Base de datosa d Escritorio y en Red deja mucho que desear.
La red está llena de páginas de Interbase y Firebird(su clonico gratuito).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Base de Datos rapida para Delphi 5

Publicado por mamcx (533 intervenciones) el 18/02/2003 22:59:00
Probablemente es debido a usar TTable y cargar todos los registros de una vez. Adicionalmente, es probale que si enviasa la info a un ClientDataSet cachee todos los registros en memoria, lo cual debe ser el problema. Seria mejor que:

1- Obtengas solo los registros necesarios (Por ejemplo, si es una pantalla de un solo registro, traer solo ese dato y usar una lista de ID para navegar adelante/atras)

2-Configurar el clientdataset para que carga en memoria en secciones (por ejemplo, de a 100).

Podrias tratar de ejecutar la consulta en la consolo de interbase y deberuias ver que no se demora tanto...En caso contrario, es un problema en la configuracion de los drivers de datos o en la red
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Base de Datos rapida para Delphi 5

Publicado por JuanMax (3 intervenciones) el 19/02/2003 10:43:51
Lo que hago exactamente en la prueba es lo siguiente.

Recoro una TTable (758 registros) y por cada uno de estos registro a traves de una clave, busco con LOCATE en una 2ª TTable (2039 registros) y cuento cuantos registro hay y luego en una 3ª TTable (57105 registro) busco con LOCATE y sumo un campo, esto es una prueba para comprobar la velocidad entre DBASE (BDE), MSACCESS (KaDAO) e INTERBASE (IBX) siendo el tiempo de ejecucion el siguiente:

DBASE 2 segudos
MSACCESS 12 segudos
INTERBASE 3 minutos

La verdad es que no entiendo o que no hago bien.

Saludos y gracias a todos.

JuanMax
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Base de Datos rapida para Delphi 5

Publicado por BigLuis (463 intervenciones) el 19/02/2003 20:57:06
Mamcx tiene razón en lo referente al numero de registros que traes, ya que los traes con todas sus propiedades. Además, creo que es un error utilizar Locate, sobre todo en Bases de datos como Interbase que solo entiende de SQL. Delphi lo que hace es traducir todas tus sentencias en pascal a SQL enviarlas y recibir los datos. Prueba a utilizar solamente SQL con una Query o similar y verás que los tiempos se minimizan un 200 %.Saludos y suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Base de Datos rapida para Delphi 5

Publicado por mamcx (533 intervenciones) el 20/02/2003 23:43:55
Ahora el asunto es claro. Como regla: 1)No usar TTable 2) Convertir ciclos y busquedas manuales a SQL siempre que sea posible.

El proceso quedaria mas o menos asi:

Ya que tienes la clave, usa una consulta y buscas solo los de esa clave. Con recordcount sacas cuantos son. Luego usando la clave de la segunda lo tiras como una consulta directa y le haces la funcion SQL SUM(SELECT SUm(Campo) FROM Table WHERE Campo=ID) que debe traer un unico registro a menos que agrupes.

Basicamente, deberia dar unos 0.5 sec X Registro 2 tabla. Sin embargo, mejoraria si haces un join entre la 2 y la tres y en total debe dara todo el proceso unos 5 sec. con menos codigo...Y como no, si haces de una vez el join entre las tres....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Base de Datos rapida para Delphi 5

Publicado por JuanMax (3 intervenciones) el 21/02/2003 12:02:20
Bueno, quiero agradecer a todos la ayuda que me habeis prestado, lo que al final saco como conclusion es que no es lo mismo trabajar con una BD basada en fichero, que trabajar con un Sistema de BD, mi error es haber tratado de hacer lo mismo que hacia con Dbase, haciendolo con Interbase.

Saludos y sinceramente gracias.
JuanMax
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Base de Datos rapida para Delphi 5

Publicado por Ernesto D'Spirito (706 intervenciones) el 19/02/2003 21:48:34
El formato de dBase y su manejo es muy simple y directo, por lo que no es de extrañar que sea rápido.

Es bastante la diferencia con Access, pero puede ser (a propósito, nota que Access soporta transacciones y que el motor MSJET requiere un tiempo de inicialización la primera vez que lo llamas desde tu aplicación, no sé si estás contando eso).

Interbase es un servidor, y es mucho más complejo, pero de ahí a que una operación que toma segundos en dBase y Access tome minutos en Interbase, no, ni en broma.

Me gustaría saber si puedes reproducir en particular ese proceso. ¿Es una consulta SQL? ¿Podrías reproducirla? Si es una actualización de la BD y tienes Windows Me, entonces es un "problema" de esa versión de Windows que monitorea los cambios a archivos con cierta extensión para permitir al usuario deshacerlos. Obviamente los archivos de SQL Server y los archivos de Access -entre otros- están exceptuados de este monitoreo que afecta el rendimiento, pero "curiosamente" los archivos de Interbase no. ;-)

Ernesto D'Spirito
http://www.latiumsoftware.com/es/index.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar