Caricare dati da una listoff o direttamente da db

venerdì 10 febbraio 2012 - 15.32

trinity Profilo | Guru

Non so se questa domanda devo porla in questa sezione del forum o in quella della winform pertanto in anticipo chiedo scusa se ho sbagliato.
In pratica la mia domanda verte sulla prestazione ho una tabella contente dei dati che vengono caricati su delle textbox a seconda del valore che digita il cliente su un'altra textbox, mi faccio capire meglio:

textbox1 = il cliente digita la nazione

textbox2= appare in automatico il codice della nazione digitata.

Tenendo presente che eseguo un codice creato da me che mentre il cliente inizia a digitare le lettere della nazione il programma esegue immediatamente già un ricerca per dare il codice relativo, mi domando è meglio eseguire queste continue select direttamente sul db...(database locale) oppure all'avvio del programma carico come se fossero delle impostazioni tutti i record che mi interessano in una listoff e poi eseguo le ricerche sulla listoff direttamente....Quale dei 2 esempi è + performante e leggero?

Ciao e grazie
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

Ciao
>Tenendo presente che eseguo un codice creato da me che mentre
>il cliente inizia a digitare le lettere della nazione il programma
>esegue immediatamente già un ricerca per dare il codice relativo,
>mi domando è meglio eseguire queste continue select direttamente
>sul db...(database locale) oppure all'avvio del programma carico
>come se fossero delle impostazioni tutti i record che mi interessano
>in una listoff e poi eseguo le ricerche sulla listoff direttamente....Quale
>dei 2 esempi è + performante e leggero?
Si tratta di un'annosa questione. La risposta è secondo me: dipende. Mi spiego.
Fino a che hai pochi record, il problema non si pone in entrambi i casi.
Se fai la select sempre sei più sicuro di avere i dati aggiornati.
Se precarichi le informazioni in memoria la get e il download delle info è veloce, ma rischi di non avere i dati sempre aggiornati.

Però queste informazioni tipicamente crescono di numero e le performance degradano piano piano.
Per questo si cerca sempre una soluzione che scali.
Fare una cache potrebbe essere una buona soluzione.
In poche parole, ogni "tot" tempo aggiorni la cache, e quindi è la cache che va a richiedere al database tutto il pacco di dati.
Il client chiede solo alla cache, e in quel caso legge dalla memoria senza andare direttamente a db.
Chiaro è che se un altro processo ti modifica dati prima del periodo di refresh della cache dovrai (sempre da quel processo) invalidare la cache e ricaricarla, forzando il ricaricamento anche se non previsto dal tempo di polling.

Vi è anche da dire che se ti arrivano SEMPRE gli stessi codici, e se sono pochi, puoi caricare ad ogni avvio il pacco di dati e tenerli in una tua "sessione".
Dipende anche dalla situazione reale.

>Ciao e grazie
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

Allora la tebella che contiene i record è sempre la stessa ed i recordo sono fissi al massimo possono essere aggiunti uno o 2 in casi particolari stiamo parlando di codici nazioni codificate dall'Istat in totale tra province e nazioni estere i recordi sono 342 record...Pertanto secondo te mi conviene fare all'avvio del programma un select classica che prende tutti i record e li butta nella listoff e poi dalla varie parti del programma la richiamo e lavoro su quella facendo le mie ricerche
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Allora la tebella che contiene i record è sempre la stessa ed
>i recordo sono fissi al massimo possono essere aggiunti uno o
>2 in casi particolari stiamo parlando di codici nazioni codificate
>dall'Istat in totale tra province e nazioni estere i recordi
>sono 342 record...Pertanto secondo te mi conviene fare all'avvio
>del programma un select classica che prende tutti i record e
>li butta nella listoff e poi dalla varie parti del programma
>la richiamo e lavoro su quella facendo le mie ricerche
Sicuramente, non necessiti nemmeno di cache in questo caso.
Il caching in generale costa in termini di implementazione.
se la risposta ti ha aiutato accettala per cortesia, così chiudiamo il thread.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

Quindi carico tutto nella listoff :)
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Quindi carico tutto nella listoff :)
non so cosa sia listoff, intendi una List? La struttura la scegli tu in base alle tue esigenze..
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

si una list scusa....quindi non eseguo ogni vola la query sul db ma all'avvio carico tutto su una list e da li eseguo ciò che mi serve.
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>si una list scusa....quindi non eseguo ogni vola la query sul
>db ma all'avvio carico tutto su una list e da li eseguo ciò che
>mi serve.
direi di sì, anche io seguirei questa strada, ma se fosse per farlo "bene" preferirei perder tempo su una cache, anche per scalare in futuro.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

trinity Profilo | Guru

ok grazie mille
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5