Newsgroup: it.comp.lang.visual-basic
Titolo: ado in real time: si puo`?

Utilizzo ADO e JET per accedere ai dati di varie tabelle contenute in un
file access mdb. Devo leggere ed aggiornare tali dati con la maggior
frequenza possibile senza sovraccaricare eccessivamente l'uso della cpu.
Inoltre tali dati devono essere 'visti' immediatamente da altre
applicazioni che accedano a tale database.
Per far cio`, io ho trovato una soluzione del genere:
  1-apro connessione
  2-apro recordset con una query sql
  3-aggiorno/leggo
  4-chiudo recorset
  5-chiudo connessione
Questa soluzione mi permette di avere un aggiornamento immediato del
database, mentre se tengo aperta la connessione o il recordset,
l'aggiornamento viene visto dopo circa 5 secondi dalle altre applicazioni.
Pero` cosi facendo posso effettuare pochissime query al secondo (20/25 su
un pentium 1Ghz) e 'carica' parecchio la cpu.
Ci sono soluzioni piu` efficienti, cioe` che impieghino meno risorse cpu e
garantiscano accessi piu` veloci pur mantenendo aggiornato il database in
tempo reale (o quasi)?
Ciao e buona Pasqua.

 un pentium 1Ghz) e 'carica' parecchio la cpu.
[SNIP]
Beh, considerando che stai coinvolgendo alcuni strati software (il tuo
programma, ADO, il provider jet, piu' gli accessi che faranno le altre
applicazioni) e soprattutto stai scrivendo su disco, il tuo concetto di
"pochissime query al secondo" e' forse un po' eccessivo.
Se parliamo di immagini 25 aggiornamenti al secondo e' quello che
normalmente vede l'occhio umano; se la domanda e' lecita a che ti serve una
frequenza maggiore di refresh su un database?
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmet L. Brown

 
E' un applicativo che "monitorizza" un impianto industriale; ci sono 'n'
applicazioni che accedono al database:
1 - applicazione vb che prende i dati dall'impianto e li metti nel db
2 - applicazione vb che, in base ai dati del db, visualizza uno stato
    dell'impianto graficamente
3 - applicazione vc++ che effettua alcune elaborazioni statistiche
4 - eventuali altre applicazioni che abbiano bisogno di informazioni
In particolare 1 e 2 devono essere il piu` reattive possibile.
Ciao.

 In particolare 1 e 2 devono essere il piu` reattive possibile.
Hai provato con dei file ascii?
Penso che scenderesti molto sotto la soglia dei 5 secondi di ritardo.
Poi magari il Db lo usi lo stesso per l'archiviazione definitiva dei dati.

 dati.
Non va bene perche` le applicazioni 'esterne' non gestite da me, accedono
solamente a database access e non possono essere customizzate per
accedere ad eventuali file ascii.
Quello che pensavo e` che essendo il file mdb abbastanza contenuto
(300k), fosse possibile in qualche maniera dire a Jet di lavorare sulla
cache del disco, senza dover per forza perdere tempo ad accedere al disco
ogni volta che si modifica qualcosa su db.
Potrebbero anche bastarmi 20/25 query al secondo perche` ho scritto delle
query in maniera da minimizzarne il numero, ma comunque rimane il problema
che l'applicazione risulta appesantita anche se il consumo di
cpu e` al 30/50%... in pratica ogni tanto si perde qualche evento
dell'utente!

Hai pensato ai cari vecchi DAO?

 Hai pensato ai cari vecchi DAO?
Si, ma ho scartato l'ipotesi in quanto ho letto che le performance
migliorano di poco

 ha scritto nel messaggio
news:pan.2003.04.22.18...@nospam.it...


 Prova, studiateli, e poi vedi...
Accetto il consiglio ;)
Grazie.