Session condivise?

In Rails ho dei dati che vengono estratti da un database e che mi
servono ad ogni richiesta di pagina, quindi dovrei salvarli in sessione.
Ora, visto che questi dati sono comuni a tutto l’applicativo, mi sembra
stupido duplicarli in tutte le sessioni degli utenti.
Piuttosto si dovrebbe tenerli in un unico punto affinche lo stesso dato
sia accessibile a tutti.
Come fare?
Esiste qualcosa tipo le Application di .NET?
tks

Potresti provare a serializzare l’oggetto che contiene i tuoi dati
con marshal e salvarlo sul disco con

mio_oggetto = Marshal.dump nome_oggetto
open (‘file_su_disco’, ‘w’){ |f| f << mio_oggetto }

poi potrai leggere da file il tuo oggetto
mio_oggetto = Marshal.load open(‘file_su_disco’)

Il giorno 10/set/07, alle ore 11:08, Giuliano U. ha scritto:

Potresti provare a serializzare l’oggetto che contiene i tuoi dati > con marshal e salvarlo sul disco con
si, potrei, ma comunque ad ogni caricamento di una pagina dovrei fare un
accesso al disco, quindi tanto varrebbe salvare il risultato della
complessa query che faccio ogni volta, su un campo di una tabella sul db
pe run accesso diretto ai risultati…

no, io voglio proprio mantenerli in memoria…

siccome non ho chiaro come Rails venga gestito internamente, non sò come
fare…

con una variabile globale potrebbe funzionare?

Prima di cercare una soluzione tecnica, potresti dirci questi dati con
quale frequenza cambiano e perché ti serve averli uguali per ogni utente.
Devi farci sopra qualche elaborazione particolare?
i miei dati non cambiano finchè un amministratore di sistema non modifica
le impostazioni dell’applicazione… ovvero quasi mai, e devo farci
sopra delle elaborazioni per filtrare la visibilità o l’editabilità di
alcune parti dell’applicazione.
se la query che le estrae non fosse pesantuccia, le prenderei ad ogni
richiesta… ma lo è :slight_smile:

Io sto affrontando un problema anologo in questo momento e avevo
intenzione di recuperare questi dati “on-demand” mettendo in cache il
partial contenente il risultato

i miei dati non sono da visuaòlizzare… ma ci devo lavorare sopra, quindi
per me non è possibile…

Come fai ad aggiornare la variabile globale all’interno dei vari
processi?

e che ne so? infatti non era questo che volevo fare… io intendevo non
una variabile globale all’interno di un processo, ma proprio globale per
i processi… esistono? mah!!!

Prima di cercare una soluzione tecnica, potresti dirci questi dati con
quale
frequenza cambiano e perché ti serve averli uguali per ogni utente. Devi
farci sopra qualche elaborazione particolare?

Io sto affrontando un problema anologo in questo momento e avevo
intenzione
di recuperare questi dati “on-demand” mettendo in cache il partial
contenente il risultato. In questo modo è possibile gestirne completamente
il ciclo di vita utilizzando i meccanismi standard di rails.

Scrivere su file non mi sembra una scelta proponibile perché idealmente vi
sono più richieste contemporanee e sarebbe necessario un meccanismo per
gestire le scritture contemporanee.

Anche tenerli in memoria in una variabile globale non la ritengo una
soluzione valida perché aggiunge complessità in fase di deploy: come fai ad
aggiornare la variabile globale all’interno dei vari processi?

Magari qualche esperto di rails ci può aiutare :D.

Il 10/09/07, Giuliano U. [email protected] ha scritto:

i miei dati non sono da visuaòlizzare… ma ci devo lavorare sopra, quindi
per me non è possibile…

uhm… ho capito devi filtrare dei contenuti… e cachare questi contenuti
è
una cattiva idea? Le performance in generale miglioreranno!

Come fai ad aggiornare la variabile globale all’interno dei vari processi?

e che ne so? infatti non era questo che volevo fare… io intendevo non
una variabile globale all’interno di un processo, ma proprio globale per i
processi… esistono? mah!!!

Allora, l’unico modo che hai per fare questo è avere un processo esterno
che
mantiene i dati in memoria e te li passa, ma ricorda che in questo caso
è
necessario aprire una socket ecc. e quindi anche questa soluzione
aggiunge
overhead. Sicuramente meno che fare una query estesa sul db, ma di più che
aprire un file. Quindi probabilmente la soluzione migliore è fare il dump
su
file. Anche se, architetturalmente parlando, non è una bella soluzione.

Piuttosto, hai provato a migliorare le perfomance della query
utilizzando
indici e simili? Oppure sono solo una grande quantità di dati? Talvolta è
possibile migliorare le performance semplicemente ristrutturando il
database
per semplificare determinate operazioni.

mmm… a quanto ho capito mi conviene salvarmi i risultati
dell’elaborazione su un campo db apposito e fare una singola
interrogazione veloce ad ogni richiesta…

se non è possibile altrimenti…

scusate ma mi si è sminkiata la formatazione… il contenuto della mia
mail era:

Prima di cercare una soluzione tecnica, potresti dirci questi dati con quale frequenza cambiano e perché ti serve averli uguali per ogni utente. Devi farci sopra qualche elaborazione particolare?

i miei dati non cambiano finchè un amministratore di sistema non modifica
le impostazioni dell’applicazione… ovvero quasi mai, e devo farci
sopra delle elaborazioni per filtrare la visibilità o l’editabilità di
alcune parti dell’applicazione. se la query che le estrae non fosse
pesantuccia, le prenderei ad ogni richiesta… ma lo è :slight_smile:

Io sto affrontando un problema anologo in questo momento e avevo intenzione di recuperare questi dati “on-demand” mettendo in cache il partial contenente il risultato>

i miei dati non sono da visuaòlizzare… ma ci devo lavorare sopra, quindi
per me non è possibile…

Come fai ad aggiornare la variabile globale all’interno dei vari processi?

e che ne so? infatti non era questo che volevo fare… io intendevo non
una variabile globale all’interno di un processo, ma proprio globale per
i processi… esistono? mah!!!