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 19-01-2005
Oxa78 Oxa78 is offline
Miembro
 
Registrado: may 2003
Ubicación: Lima - Peru
Posts: 110
Poder: 21
Oxa78 Va por buen camino
BDE igual de rápido q DBExpress

Saludos Foro : Tengo una historia, y dice asi : Trabajo con D5 + MS SQL Server 2000 y con el BDE.
Entonces al ver el avance de las versiones del Delphi, decidi avanzar hacia D7 para tomar la tecnología DBExpress en mis proyectos, ya q el BDE esta obsoleto.

Para esto utilizando D7, decidi hacer algunas pruebas comaparativas entre el BDE y DBExpress :

1) Prueba de Grabación : Tome el maestro de Clientes e inserte todos sus datos en otra tabla en blanco de igual estructura, tenia 2,000 registros. Hice esta operacion leyendo registro x registro, haciendo un insert en la tabla en blanco, asignaba los datos y luego ApplyUpdates(0).

Resultado : BDE - 1 minuto 08 segundos
DBEXpress : 1 minuto 12 segundos.

2) Prueba tome una consulta SQL q trabaja con varias tablas, 4 lef joins de mi antiguo sistema.

Resultado : BDE - 0 Segundos DBExpress - 0 segundos


Aparentemente en estos puntos q me parecen relevantes no hay ventaja del DBExpress sobre el BDE.

Quisiera saber si estoy equivocado sobre ests pruebas, seguramente hay otras formas para demostrar la superioridad del DBExpress sobre el BDE.

Como demostrarlo?
Que enfoque tomar para estas pruebas?

Segun la información que lei dice :

OBJETIVOS DE DBExpress : Cuando se planteo la creación de este nuevo sisitema de acceso a datos, se tuvieron en cuenta las siguientes objetivos :

* Velocidad de respuesta.

Quisiera probar este punto : Velocidad de respuesta. Se supone q es mas rápido q el BDE.

Gracias de antemano por sus respuestas.
__________________
Joseph Buttgembach Verde
Lima - Perú
Responder Con Cita
  #2  
Antiguo 20-01-2005
Oxa78 Oxa78 is offline
Miembro
 
Registrado: may 2003
Ubicación: Lima - Peru
Posts: 110
Poder: 21
Oxa78 Va por buen camino
Mi estructura de conexión

Para las pruebas utilice la siguiente estructura :

BDE : DataBase + Session
Query + DataSetProvider - ClientDataSet + DataSource

DBExpress : SQLConnection
SQLQuery + DataSetProvider - ClientDataSet + DataSource
__________________
Joseph Buttgembach Verde
Lima - Perú
Responder Con Cita
  #3  
Antiguo 20-01-2005
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 21
Mick Va por buen camino
Tu mismo has demostrado la superioridad de dbexpress, en el software cualquier tecnologia nueva y superior que aparece es mas lenta que la anterior. Esto se cumple en el 90% de los casos.

DBExpress intenta abstraer el acceso a los datos de modo que permita conectar a muy distintas bases de datos de forma sencilla y con un interface comun, permitiendo ademas realizar aplicaciones de 3 capas, y muchas mas cosas. Desgraciadamente cuanto mas se abstrae de esta forma, mas lento se vuelve el acceso.

Independientemente de esto la prueba que has hecho es demasiado simple de modo que es logico que te haya dado resultados parecidos en los dos sistemas.

Saludos
Responder Con Cita
  #4  
Antiguo 20-01-2005
Avatar de argami
argami argami is offline
Miembro
 
Registrado: jun 2003
Ubicación: Barcelona
Posts: 57
Poder: 21
argami Va por buen camino
Quizas deberias pensar que el planteamiento para dbExpress es trabajar en sessiones no grabando registro por registro, la verdadera velocidad la veras si haces lo mismo que hiciste pero el applyupdates hazlo al terminar las todos los inserts y siquieres luegos publica cual ha sido la rapidez por registro.
__________________
Gami

------------------------------------------------------------------
La necesidad no tolera tardanzas pero mas vale tarde que nunca
Responder Con Cita
  #5  
Antiguo 20-01-2005
Oxa78 Oxa78 is offline
Miembro
 
Registrado: may 2003
Ubicación: Lima - Peru
Posts: 110
Poder: 21
Oxa78 Va por buen camino
Muchas gracias por las respuestas :

Segui el consejo de "argami", es decir hice los inserts sobre la tabla y al final, despues de insertar los 2,000 registros hice un solo ApplyUpdates(0), y los resultados fueron :

BDE : 21 segundos
DBExpress : 22 Segundos

Que contradictorio, esperaba que DBExpress supere principalmente en rapidez al BDE, deberia ser el principio basico, segun los conceptos que lei y dice "Velocidad de Respuesta", espero estar equivocado...
__________________
Joseph Buttgembach Verde
Lima - Perú
Responder Con Cita
  #6  
Antiguo 20-01-2005
Oxa78 Oxa78 is offline
Miembro
 
Registrado: may 2003
Ubicación: Lima - Peru
Posts: 110
Poder: 21
Oxa78 Va por buen camino
Saludos : Y continuando con la pruebas, ahora tenemos :

Decidi hacer las pruebas sin trafico en la red, es decir hice las pruebas cuando ningun ususario estaba conenectado a la BD ni a la red.

Comparaciones entre DBExpress - BDE - ADO


Resultado promedio obtenido despues de hacer la misma prueba mencionanada en el mensaje anterior, 10 veces :

DBExpress : Lectura : 3.7 seg - Grabación : 11.3 seg Total : 15 seg
BDE : Lectura : 3.6 seg - Grabación : 6.4 seg Total : 10 seg
ADO : Lectura : 6 seg - Grabación : 12.2 seg Total : 18.2

Impresionante ...

Pero el BDE es obsoleto, bueno asi dicen, tendre q cambiar a DBExpress asi sea 50% mas lento. Sinceramente antes de hacer las pruebas de tiempo, probaba la grabación y consultas con DBExpress y me daba la impresión q era mas rápido, pero no es cierto ...
__________________
Joseph Buttgembach Verde
Lima - Perú
Responder Con Cita
  #7  
Antiguo 21-01-2005
Avatar de argami
argami argami is offline
Miembro
 
Registrado: jun 2003
Ubicación: Barcelona
Posts: 57
Poder: 21
argami Va por buen camino
No se por que pero creo que aqui el mayor tiempo se lo lleva los midas (TclientDataset y TDataSetProvider).

Pero puede que al ser una capa general para varias bases de datos si sea mas lento.

has probado la haciendo los insert's a pelo??
__________________
Gami

------------------------------------------------------------------
La necesidad no tolera tardanzas pero mas vale tarde que nunca
Responder Con Cita
  #8  
Antiguo 21-01-2005
Oxa78 Oxa78 is offline
Miembro
 
Registrado: may 2003
Ubicación: Lima - Peru
Posts: 110
Poder: 21
Oxa78 Va por buen camino
Finalmente, "BDE sigue siendo mas rápido que DBExpres y ADO"

Saludos Foro:

Y continuando con las pruebas, segui el consejo de "argami", descarte los ApplyUpdates para grabar los datos, y utilice Inserts SQL. Los resultados promedio despues de realizar 5 veces la misma operación, son :

DBExpress 11.8 segundos
BDE 11.2 segundos
ADO 20.2 segundos

Finalmente, "BDE sigue siendo mas rápido que DBExpres y ADO"
__________________
Joseph Buttgembach Verde
Lima - Perú
Responder Con Cita
  #9  
Antiguo 21-01-2005
Gabriel Gabriel is offline
Miembro
 
Registrado: may 2003
Ubicación: PalauTordera
Posts: 115
Poder: 21
Gabriel Va por buen camino
DBExpress

he localizado esto.

http://www.clubdevelopers.com/delphi...esfb/index.php

Saludos
__________________
Gabriel
Responder Con Cita
  #10  
Antiguo 21-01-2005
Oxa78 Oxa78 is offline
Miembro
 
Registrado: may 2003
Ubicación: Lima - Peru
Posts: 110
Poder: 21
Oxa78 Va por buen camino
una historia distinta

Saludos Foro :

Gracias Gabriel por el dato.

Lei el artículo de Julio Nogueira Fandiño "CombatF2D", pero realmente son pruebas distintas, yo utilizo ClientDataSets, el segun el codigo q muestra utiliza directamente la Conexion a la Base de Datos para realizar los Inserts, es decir :

DBExpress : SQLConnection1.ExecuteDirect(SQL);
ASO : ADOConnection1.Execute(xSQL);

Hice algunas pruebas, y resulto lo siguiente : Para 25,000 inserciones de un numero correlativo.

DBExpress : 1.20 minutos
ADO : 1:30 minutos

No pude probar con el BDE ya q me daba error, pero bueno el caso es q las pruebas son por estructuras de conexción distintas.

Parece q la historia termina aqui.
__________________
Joseph Buttgembach Verde
Lima - Perú
Responder Con Cita
  #11  
Antiguo 25-01-2005
BdeKiller BdeKiller is offline
Registrado
 
Registrado: dic 2004
Posts: 7
Poder: 0
BdeKiller Va por buen camino
Bde vs Dbexpress

Creo que no notas diferencia de velocidad porque trabajas con querys en el BDE, prueba a trabajar directamente con una tabla, osea pon un Ttable de unos 2000 registros y recorrelo editando , modificando datos y posteando y haz lo mismo con un dbexpress y clientdataset, yo he hecho esa prueba utilizando el servidor FIREBIRD (interbase) y el BDE es lentiiiiiisimo comparado con dbexpress.

Un saldudo
Responder Con Cita
  #12  
Antiguo 26-01-2005
Oxa78 Oxa78 is offline
Miembro
 
Registrado: may 2003
Ubicación: Lima - Peru
Posts: 110
Poder: 21
Oxa78 Va por buen camino
Ok, gracias por el dato, seguire tu consejo....
__________________
Joseph Buttgembach Verde
Lima - Perú
Responder Con Cita
  #13  
Antiguo 26-01-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
En todo esto habría que hacer prueba smás exhaustivas y rudas. En los resultados que originalmente mencionaste indicas una prueba en donde ambos métodos dan 0 segundos, lo cual indica no que sea la misma velocidad sino que la prueba es demasiado sencilla como para discernir algo. También sería bueno que indicaras contra qué bases estás haciendo las pruebas pues tanto el BDE como DBExpress manejan varias bases y quizá con unas funcione mejor un accesso y con otras el otro método.

Lo que menciona BdeKiller (curioso nick ) me suena muy raro ya que el Bde, al menos con Paradox, a diferencia de servidores de bases reales, trabaja mucho mejor con tablas que con querys. De hecho el Bde no hace uso de los índices definidos en las tablas cuando se hacen consultas SQL, únicamente los utiliza cuando usas componente TTable.

// Saludos
Responder Con Cita
  #14  
Antiguo 26-01-2005
Oxa78 Oxa78 is offline
Miembro
 
Registrado: may 2003
Ubicación: Lima - Peru
Posts: 110
Poder: 21
Oxa78 Va por buen camino
Gracias por la respuesta.

La Base de Datos que utilice en todas la pruebas es MS SQL Server 2000
__________________
Joseph Buttgembach Verde
Lima - Perú
Responder Con Cita
  #15  
Antiguo 27-01-2005
BdeKiller BdeKiller is offline
Registrado
 
Registrado: dic 2004
Posts: 7
Poder: 0
BdeKiller Va por buen camino
Tu mismo lo has dicho, el bde va muy bien con tablas paradox,dbase q es para lo que fue diseñado pero si trabajas con objectos ttable (sin usar sql) sobre un servidor sql tiene una sobrecarga terrible, osea funcionar te funciona todo pero mucho más lento que si trabajas con un sql directamente, la prueba es usar una base de datos grande (esto siempre es relativo a los pc's q se utilicen)unos 10000 registros en un servidor remoto (en red local por ejemplo) haz una modificacion de muchos registros con sql en paradox y hazla con sql en un servidor FIREBIRD, MS SQL SERVER .... aqui es la verdadera diferencia, el paradox internamente transfiere toda la tabla y hace el sql en cambio el servidor SQL transferirá solo la tabla con la respuesta (entre otras muchas ventajas), una vez en cliente servidor tenemos varias formas de trabajar:

BDE => OBSOLETO, Borland no dará mas soporte.
Trabajando a nivel de tabla (cursores) sin sql => lentisimo,
Ventaja : practicamente no cambias el codigo q tengas para PARADOX.

DBEXPRESS => componentes totalmente reescritos , muy rápidos
, conectables a muchos servidores de bases de datos de distintos fabricantes, quizá un poco más complicados de gestionar q el BDE

Componentes nativos para los distintos servidores : IBX (INTERBASE) muy rápidos , pero quizá el codigo demasiado dependiente del servidor ????
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


La franja horaria es GMT +2. Ahora son las 20:29:43.


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