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)
-   -   Eficiencia de Zeos (https://www.clubdelphi.com/foros/showthread.php?t=79477)

camiz 10-07-2012 05:34:01

Eficiencia de Zeos
 
Hola amigos de club delphi, quisiera hacerles una consulta a nuestros expertos del foro.

- Quisiera saber que tan eficiente es un ZQuery (componente del paquete Zeos), si tendria unos 1,000 o mas registros que tendria
que mostrar en un dbgrid conectado a un Zquery , ya que al abrir el programa se tendrian que cargar todos y esto aria al programa
mas pesado. o como podria controlarlo para que al momento de iniciar el programa no necesariamente se tendria que cargar
todos los registros si no mas bien un determinado numero.

tal como se puede hacer con un ClientDataset, por medio del PacketRecords. si le ponemos 100 al momento de abrir solamente
cargaria los 100 ultimos registros y cuando se necesita mas carga otros 100.


mi inquietud viene porque yo estoy haciendo una aplicacion con zeos, pero mi temor es que a mayor cantidad de registros el programa tenga en memoria enpiece a colgarse o a tener fallos.

si me pueden ayudar se los agradecere mucho.

newtron 10-07-2012 09:06:18

Hola.

Yo no tengo experiencia con Zeos pero la lógica nos dice que cuantos menos registros manejes en memoria más eficiente será la aplicación. Si va más o menos lento irá en función de la instalación de hardware que tengas y eso es peligroso puesto que cuanto menos requerimientos de hardware tenga tu aplicación menos problemas tendrás en tus instalaciones en los clientes.

Por todo esto lo habitual es manejar querys de cuantos menos registros mejor por lo que deberías de optimizar en ese sentido todo lo que puedas.

Saludos

Casimiro Notevi 10-07-2012 09:51:04

Mil registros no es nada, por supuesto, pero debes hacer caso a lo recomendado por Newtron, ¿para qué quieres 1000 registros en un dbgrid, los vas a leer uno a uno?, eso no sirve para nada. Hay que pensar en lo que realmente se necesita y se precisa, si se busca un cliente, un artículo, una factura, un dato, un loquesea... hay que acotar al máximo para encontrar y mostrar sólamente lo que se necesita. Lo dicho, mostrar 1000 registros no sirve para nada.

camiz 10-07-2012 18:38:29

ver
 
Gracias por sus respuestas, lo que estoy haciendo es que los registros de una tabla se van a mostrar en un dbgrid , esto quiere decir que el ZQuery que esta ligado al dbgrid va a estar en modo Open. no soy experto en delphi soy novato pero supongo que al estar abierto el ZQuery cargaria todos los registros que contiene la tabla
es solo.una consulta para tomar precauciones. Creoque usare un ClientDataset
gracias por aclararme las dudas.

Casimiro Notevi 10-07-2012 18:46:34

Un grid es solamente un "visor" del dataset que se le asocie, en tu caso un zquery, pero el grid es sólo eso, un visor.

rretamar 10-07-2012 19:51:38

Cargar muchos registros en memoria me parece mala idea. Lo mejor es ir "segmentando" la información que se muestra (por ejemplo por días, semanas, por elementos asociados a un x ítem, etc.). Y si necesito hacer un proceso por lotes (por ejemplo cálculo de totales, cosas de ese tipo) que lo haga el mismo servidor, a través de un trigger o un procedimiento almacenado. La idea es reducir al mínimo el tráfico entre el cliente y el servidor SQL, y todo lo que se puede delegar, que se haga dentro del servidor.

movorack 10-07-2012 20:29:57

Y luego el clientdataset no se puede conectar con los zeos y traer los registros necesarios?

Solo es una duda

AzidRain 10-07-2012 22:22:26

Zeos es bastante eficiente en cuestiones de velocidad. Me atrevo a decir que funciona mucho mejor que muchos componentes de paga y prácticamente no dan problemas. Lo que quieres hacer lo puedes realizar mediante ClientDataset ya que Zeos es simplemente el proveedor de datos para él.

No tiene mucho sentido traerse todos los registros de una tabla solo para mostrarlos en un grid. Esa costumbre viene de la época dBASE en donde no había forma de abrir una tabla y traerse solo unos cuantos registros y por ende los "grids" de aquella época mostraban todo el contenido. Ahí se trabaja a la inversa: se traían todos los registros y luego se buscaba dentro de ellos, con la llegada de SQL la cosa cambió, ahora se pregunta (query) que se quiere y se traen solo los datos necesarios.

Un ejemplo, catálogo de clientes, en un esquema clásico abriamos toda la tabla, mostrabamos toditos los clientes y luego metiamos alguna forma de buscar dentro de ellos (se popularizaron entonces las famosas "busquedas rápidas" en donde conforme escribias iba filtrándose lo que más se parecía. En el esquema SQL primero preguntamos algunos parámetros , por ejemplo las letras que contiene el nombre o nombres que buscamos y luego traemos todo lo que concida.

camiz 11-07-2012 00:41:47

excelente intercambio de ideas creoque boy comprendiendo como funciona la programacion para tener una aplicacion de calidad.
lo que dice rretamar yAzidRain me parece bien. creoque traerse todos los registros de una tabla el programa se volveria pesado y habrian problemas.

lo que quiero es que me den una idea disculpen la incapacidad que tengo para crear un codigo que haga este trabajo, les comento que soy nuevo en este hermoso Arte de la programacion y Zeos para mi es una excelente libreria y por eso quiero evitar usar otros componentes si es que hay solucion.

lo que deseo es si hay alguna manera de cargar solamente un limite de registros en un ZQuery, por ejemplo si tengo 1,000 en una tabla.
solamente quisiera cargar 100 y cada vez que necesite ir mas atras traiga otros 100. lo digo porque en el mismo formulario he puesto un TEdit para poder buscar y filtrar los registros que coincidan con el texto que se ingresa en el edit.

solamente quiero que me ayuden con lo del ZQuery.

gracias por los comentarios son de mucha ayuda.

Casimiro Notevi 11-07-2012 00:47:24

Si quieres saber "lo máximo" de delphi y bases de datos, entonces te recomiendo este libro.

newtron 11-07-2012 09:44:36

Cita:

Empezado por camiz (Mensaje 437105)
lo que dice rretamar yAzidRain me parece bien

....vaya.... ¿y a mi que me parta un rayo? :p

Casimiro Notevi 11-07-2012 10:16:41

Cita:

Empezado por newtron (Mensaje 437120)
....vaya.... ¿y a mi que me parta un rayo? :p

Cria cuervos y ... :D

camiz 11-07-2012 17:50:20

disculpas
 
nos es que los aportes de newtron y casimiro no los aya considerado, si no que simplemente se me paso. quiero agradecerles a ustedes por permitirse contribuir con sus aportes a ayudar que otros oprendamos o quisas refuersen sus conocimientos. y tambien quiero disculparme con todos los que han hecho un comentario quitandose un pedasito de su tiempo y claro que lo mas justo es un simple y sincero gracias.

un saludo y un abraso a todos ustedes. y a seguir ayudando a los que nesecitan de ustedes.... desde mi querido . *** PERU ***...

Casimiro Notevi 11-07-2012 19:15:53

Venga, ahora te pasamos la dirección donde tienes que enviar los regalos: pisco sour, chicha morada, etc. :p


La franja horaria es GMT +2. Ahora son las 10:42:39.

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