PDA

Ver la Versión Completa : Firebird 3 es más rápido que MySQL


gasal
23-09-2015, 16:23:12
Hola , hace unos dias aparecio esta noticia , la cual es muy interesante

Firebird 3 es mucho más rápido que Firebird 2.5.x y también ya es más rápido que MySQL.
Con las nuevas capacidades de seguridad y la gran velocidad que posee Firebird 3, ya no hay excusas para no usarlo en Internet.
Más información (en inglés) se puede encontrar en:
http://www.firebirdnews.org/firebird-3-protocol-benchmark/

Quisiera testear los nuevos parametros de firebird 3 , para realizar un test similar
con compresion de datos y accediendo la base via internet , alguien conoce
estas nuevos parametros principalmente el de compresion de datos ?

Gracias de antemano.
Gasal.

MAXIUM
23-09-2015, 16:53:59
El problema de esto, es que MySQL viene preinstalado en la gran mayoría de los webhosting. No así Firebird.

Por supuesto hay excepciones, pero no dejan de ser más que esto.

Neftali [Germán.Estévez]
23-09-2015, 22:44:25
Hay que tener en cuenta también que ese artículo/comparativa viene de http://www.firebirdnews.org

:D:D

Casimiro Notevi
23-09-2015, 22:56:02
Por ahí hay un hilo de hace años en el que se probaban varios sistemas de bases de datos y mysql era más rápido si usaba uno de los sistemas de ficheros que tiene, sin triggers, stored procedures, etc. Pero si activaba el sistema con esos "aditamentos" era más lenta.
Así que no me extraña que esta nueva versión de firebird, muy pensada también para la web, sea más rápida.

RONPABLO
24-09-2015, 04:30:17
Además esta nueva versión de firebird trae funciones windows, esto evita un montón de subquerys y se ve reflejado en velocidad

roman
24-09-2015, 04:58:26
Naaaa. Firebird está tan muerto como Delphi :D

Por cierto, ¿qué son funciones windows?

// Saludos

mamcx
24-09-2015, 05:45:04
Por cierto, el benchmark es acerca del protocol de red/comunicacion de los drivers de conexion, no sobre el uso de FB como motor ;)



Por cierto, ¿qué son funciones windows?

// Saludos

Esta es la doc que hay en postgres:

http://www.postgresql.org/docs/current/static/tutorial-window.html

Basicamente, son agregados (como GROUP BY) mas flexibles y permiten extender la tabla con columnas que toman en cuenta los valores de la filas anteriores, sin romper el esquema de la consulta.

O mas simplemente: Permite hacer lo de extender una columna en excel, referencia el valor de las filas anteriores+la actual (por ejemplo)

Casimiro Notevi
24-09-2015, 09:46:29
De todas formas aún está en versión beta: Firebird 3.0 Beta 2 (unstable)

roman
24-09-2015, 17:31:54
Por cierto, el benchmark es acerca del protocol de red/comunicacion de los drivers de conexion, no sobre el uso de FB como motor ;)


Cada vez que sale una comparativa estridente, poco a poco van saliendo los "asegunes" :p :D


Esta es la doc que hay en postgres:

http://www.postgresql.org/docs/current/static/tutorial-window.html

Basicamente, son agregados (como GROUP BY) mas flexibles y permiten extender la tabla con columnas que toman en cuenta los valores de la filas anteriores, sin romper el esquema de la consulta.

O mas simplemente: Permite hacer lo de extender una columna en excel, referencia el valor de las filas anteriores+la actual (por ejemplo)

Muchas gracias mamcx, desconocía el tópico.

// Saludos

RONPABLO
24-09-2015, 21:06:39
Por cierto, ¿qué son funciones windows?

// Saludos

imaginemos una tabla a la que le hacemos una consulta:
Select Id, Nombre, Sueldo from tabla where fecha between :f1 and :f2



ID / Nomre / Sueldo
1 / Andres / 200
4 / Carlos / 300
9 / Clara / 450


Se puede decir que ese resultado es una ventana que "mira" algo de la información en una tabla, las funciones ventana son funciones que solo tienen dominio sobre ese resultado y en ellas se puede obtener entre otras cosas, el numero de Columna, el máximo valor o el mínimo valor de esa ventana, la sumatoria, en fin, hay muchas cosas que se pueden ver y acá (http://www.firebirdsql.org/file/community/ppts/fbcon11/fb3windowing.pdf) hablan un poco de ello, por ejemplo normalmente si yo quiero sacar un porcentaje del sueldo en la consulta anterior haría algo como:

Select
Id, Nombre, Sueldo,
sueldo / (select sum(sueldo) from tabala where fecha between :f1 and :f2) porcentaje
from tabla where fecha between :f1 and :f2

con una función window o ventana sería:

Select
Id, Nombre, Sueldo,
sueldo / sum(salary) over () porcentaje
from tabla where fecha between :f1 and :f2

el sum normalmente debe ser usado en un group by, pero al tener la instrucción over después indica que es una función de ventana don el sum se hará sobre todos los valores de el campo sueldo que arroja la consulta, dentro del paréntesis del over pueden ir variqs clausulas de ordenamiento.

Ahora si vemos los dos querys anteriores notaremos que en el primero hay un subquery en el cual tiene su propia carga de información y se está repitiendo gran cantidad de lo que ya se ha hecho, pero además se está haciendo registro por registro, así pues si la tabla tiene 2 millones de registros y se está devolviendo 3 resultados, entonces se hará 3 veces el mismo query consultando sobre 2 millones de registros de la tabla para devolver el sum que se obtiene de apenas tres registros, mientras que en el segundo query con la función de ventana solo se está haciendo un sum sobre 3 registros lo cual deberá repercutir tremendamente en eficiencia y velocidad

Casimiro Notevi
24-09-2015, 21:11:07
Muy interesante, ha quedado muy claro al hablar de "window" y no de "windows", como se habló antes, que hacía pensar en alguna comunicación con el s.o. windows.

RONPABLO
24-09-2015, 21:30:38
Otro ejemplo ya usando información al interior del over:



Select
Id,
Nombre,
centroDeCostos,
Sueldo,
sueldo / sum(sueldo) over (partition by centroDeCostos) porcentaje
from tabla where fecha between :f1 and :f2


En el query anterior estamos particionando por centro de costos y con esto ahora obtenemos el promedio ya no por el resultado del sum de toda la ventana, si no por la agrupación que diera el centro de costos.


O podemos obtener el valor acumulado del sueldo:



Select
Id,
Nombre,
Sueldo,
sueldo / sum(sueldo) over () porcentaje,
sueldo / sum(sueldo) over (order by sueldo) acumulado,
sueldo / sum(sueldo) over (order by sueldo desc) acumlado_des,
from tabla where fecha between :f1 and :f2



y obtendríamos algo como:

ID / Nomre / Sueldo / Porcentaje / Acumulado / acumulado_desc
1 / Andres / 200 / 21 / 200 / 950
4 / Carlos / 300 / 31 / 500 / 750
9 / Clara / 450 / 48 / 950 / 450

RONPABLO
24-09-2015, 21:32:58
Muy interesante, ha quedado muy claro al hablar de "window" y no de "windows", como se habló antes, que hacía pensar en alguna comunicación con el s.o. windows.

Si es muy importante quitar ese plural, no caí en cuenta que había puesto windows (la fuerza de la costumbre). De lo contrario se pierde el concepto de una ventana a la información que estamos obteniendo

roman
24-09-2015, 21:41:43
Muchas gracias RONPABLO, muy bien explicado.

// Saludos

gasal
28-09-2015, 16:27:02
Estimados.
Saben como activar esto , que esta en Firebird-3.0.0_RC1-ReleaseNotes.pdf ?

(CORE-733) Compression of data over the network.
implemented by A. Peshkov

Ello aumentaria mucho la velocidad de uso a traves de internet.

Saludos
Gasal.

Casimiro Notevi
28-09-2015, 16:31:43
¿Y eso qué es?