Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Tutorial comparativa (IBX + Zeos + Firebird + Velocidad ) Novatos (https://www.clubdelphi.com/foros/showthread.php?t=73234)

Caral 10-04-2011 00:23:56

Tutorial comparativa (IBX + Zeos + Firebird + Velocidad ) Novatos
 
Hola
Este tutorial mas que para vosotros lo hice para mi. :D
Mi intención era la de comprobar varias cosas:
1- Conexión componentes IBX o Zeos.
2- Velocidad de Insertar, modificar y borrar registros (tres conceptos básicos).
Bien:
Usando exactamente las mismas consultas (SQL) tanto para IBX como para Zeos muestro en un label la velocidad con que se ejecutan en milisegundos.
Como usar este ejemplo:
El ejemplo tiene una bd firebird 2.1, colocadla en donde queráis he inscribidla en IBExpert (simple)
Para mayor facilidad (C:\bdnueva\BD.FDB) ahí la puse yo. :p
Al iniciar el programa podeis conectar o desconectar tanto con IBX como a Zeos independientemente.
Ejemplo:
Presionad el boton (conectar IB).
Colocad un Dato (un digito) A, B, etc..
Cambiad la cantidad a insertar, modificar o borrar si queréis (esta en 100 actualmente).
Presionad el botón INSERTAR, veréis el tiempo transcurrido.
Colocad otro dato y presionad MODIFICAR, veréis el tiempo transcurrido.
Presionad el botón BORRAR, lo mismo, veréis el tiempo.
Una vez hecho esto, desconectad IBX (presionad el Botón Desconectar IB).
Presionad el Botón Conectar Zeos y haced lo mismo que hicisteis con IB.
Ahora os podréis dar una idea de la diferencia.
No os preocupéis si tarda un poco, no esta mal el programa, SI hay diferencias.
Espero os de una idea y mejor aun, saber como se pueden modificar las consultas para tener mejor velocidad.
Os dejo el ejemplo. :)
Saludos

Casimiro Notevi 10-04-2011 00:44:41

Hola Caral, unas puntualizaciones :):
Hablas de interbase y firebird indistintamente, ¿lo has hecho con interbase o firebird?.
La base de datos de pruebas tiene extensión fdb así que supongo que será firebird, ¿qué versión has usado?
Me respondo, has dicho que fb2.1
Entonces queda la duda de interbase

Caral 10-04-2011 00:47:29

Hola
DB Firebird, (Los componentes Interbase)
Saludos

Casimiro Notevi 10-04-2011 00:50:20

¿Entonces entiendo que es una prueba comparativa con los componentes IBX y Zeos para acceder a Firebird?.
Si es así sería conveniente cambiar el título, ¿te parece bien que lo haga?

Caral 10-04-2011 00:51:34

Hola
Aqui os dejo unas pantallas de muestra:






Saludos

Caral 10-04-2011 00:52:13

Hola
Claro amigo, como tu creas conveniente.
Saludos

Casimiro Notevi 10-04-2011 01:09:19

Cita:

Empezado por Caral (Mensaje 396442)
Hola
Claro amigo, como tu creas conveniente.
Saludos

El título lo he retocado un poquito con tu permiso :)
Las fotos he debido alojarlas en otro sitio porque las originales están alojadas en el servidor de Delphiaccess y no podemos acceder a ellas, o yo no sé cómo se podría hacer.
_____________________________________

Y retornando al tema, hay mucha diferencia entre uno y otro, es curioso, yo juraría que IBX es bastante más rápido que zeos.

Edito: lo había leído mal, obviamente IBX es más rápido porque es de "acceso directo", al igual que FreeIB, FIBplus, etc.

Caral 10-04-2011 01:13:14

Hola
Y si haces una modificacion de los datos ni te digo la diferencia.
Yo mas bien creia que Zeos era mucho mas rapido y esto me decepciono.
Saludos

Casimiro Notevi 10-04-2011 01:23:10

Es que es una filosofía distinta, como bien sabes Zeos está pensado para usar con distintas bases de datos, así que hay que sacrificar la velocidad porque deben añadir una "capa intermedia" que hace la "traducción" a las diversas BD que accede, sin embargo IBX es de acceso directo, sin intermediario alguno y tampoco puede acceder a otro tipo de BD.

Por cierto, hace algún tiempo (2004), Julio Nogueira (CombatF2D) hice una prueba comparativa con diversos componentes accediendo a Firebird, me pareció interesantísimo y lo puse aquí para tenerlo siempre presente.

Como verás el resultado es bastante clarificador:

Aquí el resumen:
Componente Tiempo (sg.)
DBEXpress___________80
BDE________________148
ZEOS_______________309
IBX_________________64
FIBPlus_____________64
UIB_________________86
BDE/ODBC___________195
ADO/ODBC___________211
IBO_________________75


Las pruebas se hicieron, evidentemente, con las versiones de los componentes que había en 2004, los resultados pueden variar con los actuales, pero serán seguramente en la misma proporción.

Caral 10-04-2011 01:28:19

Hola
Alguna vez vi esa comparacion pero como novato se hace practico tener a mano un programa sencillo que demuestre estas cosas.
Mi intencion era en realidad ''probarlo'' personalmente, no es que no crea en lo que dicen los demas, si no que queria ademas de practicar ver que tanta diferencia podia haber.
Me parece interesante que los novatos puedan comprobar, no solo la diferencia, si no tambien la conexion en tal caso lo preguntan mucho :D.
Saludos

Casimiro Notevi 10-04-2011 01:35:11

Por supuesto, siempre es interesante hacer pruebas de ese tipo, a mí también me gusta hacerlas, aunque haya visto otras similares, pero siempre queda la duda de "y si la hago de esta otra forma qué tanta diferencia existirá?.
Por cierto, el mismo autor hizo otra prueba comparando el acceso a firebird entre un servidor con windows y otro con linux, el resultado es prácticamente el doble de rápido con linux. Aquí está por si te interesa.
Es que me encantan las pruebas comparativas, aunque me digan que pierdo el tiempo :)

Caral 10-04-2011 01:39:55

Hola
Esta no la conocía y me alienta a seguir conociendo mas de linux.:)
Saludos

Caral 10-04-2011 19:34:25

Hola
Se me olvido comentar:
El usuario de la BD es SYSDBA y la clave natalia
Saludos

Casimiro Notevi 10-04-2011 20:22:52

Realmente el usuario y password no van en la propia base de datos, están en otra base de datos adicional: security2.fdb, así que cuando copias una BD a otro equipo entonces las claves que valen son las de ese equipo.
Ese es uno de los puntos "históricos" de controversia con firebird, unos tienen razones a favor y otros en contra, pero de momento es así, aunque creo que en fb2.5 lo han cambiado.

Neftali [Germán.Estévez] 11-04-2011 13:16:36

Hola Caral.
Muy interesantes resultados.
Sabía que Access es lento, pero no imaginaba que tanto... está claro que compararlo con SGBD no es "equitativo". No está a la altura de IB/FB.

Creo además que el problemas de tiempo son más de Jet4 (MDB), que no de ADO o Zeos.

Una prueba simple:
He utilizado tu mismo ejemplo con Access en local y los tiempo que me da son similares a los tuyos (en torno a 300ms en ALTA y MODIFICACIÓN).
Luego he probado ADO con SQLServer (en red, ya que en local no lo tengo) y los tiempos de inserción están en torno a 110ms. :eek::eek:
¿Si eso es en red, cómo serían en local?

gluglu 11-04-2011 15:04:45

Además de todo esto, que es evidentemente muy interesante y clarificador, también convendría llegar un poco más allá.

Con una BBDD ya con una cantidad importante de registros, y un tamaño digamos 'no pequeño', comparar entonces las diferentes opciones. Porque como siempre, puede haber grandes diferencias entre una BD que contenga un par de registros o que ya contenga 'miles' por decir algo.

En este caso, habría que comparar también teniendo las respectivas tablas debidamente indexadas, porque lo que yo si que he podido comprobar, es que un Select con un poco de complejidad, hacerlo sobre una tabla no indexada a hacerlo sobre la misma tabla simplemente habiéndole creado un índice adicional, es una diferencia como del día a la noche. Una búsqueda sin indexar pueda tardar casi 30 segundos, y con la misma tabla indexada, el tiempo se reduce a unos cuantos milisegundos !

En mi caso particular, siempre estoy hablando de Firebird 2.1 con componentes IBX.

Delfino 11-04-2011 15:32:53

Cita:

Empezado por Neftali (Mensaje 396540)
Luego he probado ADO con SQLServer (en red, ya que en local no lo tengo) y los tiempos de inserción están en torno a 110ms. :eek::eek:
¿Si eso es en red, cómo serían en local?

Eso sera pq el servidor tiene hardware de servidor, o sea un procesador o varios muy potentes y una memoria tambien..

Caral 11-04-2011 16:39:34

Hola
Creo que esto puede dar para mas pruebas sencillas.
En mi caso como sabéis cambien de Access (ADO) a Firebird (IBX) y siempre tuve la duda de usar ZEOS para el programa.
Ahora mismo, después del ejemplo de Neftali me parece interesante hacer la comparación de Firbird con MySql, pero no tengo Mysql instalado.
Saludos

Diego827 04-07-2011 05:37:02

Un favorazo
 
Cita:

Empezado por Caral (Mensaje 396441)
Hola
Aqui os dejo unas pantallas de muestra:






Saludos

Amigo, ¿como calculaste el tiempo para poder mostrarlos en los tlabel?
Si me sacas de esta duda 100 pts :D!!! (ya la busque por WWW)

Casimiro Notevi 04-07-2011 10:16:15

Cita:

Empezado por Diego827 (Mensaje 405427)
Amigo, ¿como calculaste el tiempo para poder mostrarlos en los tlabel?
Si me sacas de esta duda 100 pts :D!!! (ya la busque por WWW)

Amigo, ¡¡¡ ahí tienes el código fuente !!! ;)


La franja horaria es GMT +2. Ahora son las 00:50:16.

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