Gambas-it

Gambas3 => Domande tecniche => Topic aperto da: giob1642 - 22 Settembre 2014, 18:10:28

Titolo: stringhe in memoria
Inserito da: giob1642 - 22 Settembre 2014, 18:10:28
Lavorando con grossi database  non è raro trovarsi a leggere (esagero,ma non tanto) 3.000.000 di dati  od array  e riportarli in una dbgrid.
Il problema è abbastanza semplice, a parte il fatto che sia l'array che dbgrid vanno in crash, venendo meno spazio in memoria.
A mio avviso la soluzione potrebbe essere imporre un limite agli array ed a dbgrid oltrepassato il quale l'ide provvede in automatico a suddividere l'array in più pagine registrandolo in un file tmp attivando un adeguato scroll.
giorgio.
Titolo: Re: stringhe in memoria
Inserito da: Ceskho - 10 Novembre 2014, 17:36:56
Lavorando con grossi database  non è raro trovarsi a leggere (esagero,ma non tanto) 3.000.000 di dati  od array  e riportarli in una dbgrid.
Il problema è abbastanza semplice, a parte il fatto che sia l'array che dbgrid vanno in crash, venendo meno spazio in memoria.
A mio avviso la soluzione potrebbe essere imporre un limite agli array ed a dbgrid oltrepassato il quale l'ide provvede in automatico a suddividere l'array in più pagine registrandolo in un file tmp attivando un adeguato scroll.
giorgio.

È impensabile mostrare 3milioni di records in una tabella. Il sistema collassa. Devi usare l'impaginazione per mostrare N records per volta e poi sostarti, mediante offset di N-M o N+M records
Titolo: Re: stringhe in memoria
Inserito da: Picavbg - 10 Novembre 2014, 23:59:02
@ giob1642
In effetti il compito che richiedi forse al sistema, oppure a Gambas, riguarda direttamente l'applicazione. Non è infatti ordinario che si debbano trattare in un solo colpo milioni, milioni e ... milioni di informazioni. É  perciò buona norma, in casi eccezionali di trattamento di giganteschi volumi di dati, organizzare la propria applicazione, simulando, in un certo qual modo, il paging che svolge il SO. coi volumi di informazioni logicamente coopresenti in memoria al momento corrente.
 :ciao: