2012-12-07 11 views
5

Sono parte di un team che progetta un'applicazione web Java in cui gli utenti cercheranno i risultati in un database relazionale e li visualizzeranno in modo tabulare in un browser. Gli utenti avranno anche la possibilità di visualizzare successivamente lo stesso set di risultati (o un sottoinsieme di tali risultati) in una finestra separata del browser, utilizzando ad esempio uno strumento di creazione di grafici. In altre parole, dobbiamo dare all'utente la possibilità di visualizzare gli stessi record di set di risultati in seguito (fino a un limite di 24 ore).È necessario un buon modello di progettazione per il set di risultati della query del database di memorizzazione nella cache

Poiché le ricerche sul sistema saranno a uso intensivo di risorse e appena fuori dal buon senso, vorremmo un modo pulito per memorizzare nella cache ogni set di risultati in modo che possa essere estratto successivamente dalla memoria (RAM o disco). Stiamo cercando un buon approccio per fare questo caching, crediamo che altri lo abbiano fatto prima, e preferiamo usare una best-practice o framework piuttosto che costruire una cosa del genere da zero. Il server avrà un sacco di RAM, ma dal momento che potrebbero esserci centinaia di persone che usano il sistema, potremmo aver bisogno di un approccio che memorizzi prima nella RAM, ma poi può anche memorizzare la cache sul disco rigido se la RAM è piena.

Credo che abbia più senso persistere come oggetti Java ma sono aperto a un consiglio migliore. Vorremmo un approccio neutrale rispetto al fornitore, in modo che se il team del database sceglie di cambiare fornitore in un secondo momento, non siamo bloccati con una soluzione proprietaria. Grazie.

+3

ahhh testo wall. per favore almeno formattare per prevenire gli occhi sanguinanti – thatidiotguy

+0

otterresti risultati migliori se formatti la tua domanda e rendila il più semplice possibile. –

+0

Modifica il tuo post per renderlo più leggibile ... –

risposta

1

Ho visto http://www.jboss.org/infinispan/ usato per fare esattamente questo. Può memorizzare nella cache in memoria, disco e database. Non direi che lo adoro (la configurazione non è super facile e la documentazione è in qualche modo carente) ma sicuramente funziona e viene mantenuta attivamente.

1

Essendo il fornitore neutrale si tratta di scrivere un livello di astrazione nativo per l'applicazione, quindi collegare il servizio cache che si desidera utilizzare dietro questo livello, mantenendo il livello che espone queste operazioni al codice principale lo stesso .

Ci sono molti modi per memorizzare nella cache. Cerca di utilizzare varie soluzioni NoSql.

maggior parte del tempo si serializzare l'oggetto e persistono al vostro livello della cache.

4

Penso che quello che stai cercando sia Terracotta Ehcache. Questo fa tutto ciò che hai citato e altro ancora. È un prodotto gratuito che può essere utilizzato per memorizzare nella cache le cose in memoria, l'overflow su disco, specificare le dimensioni massime della cache per MB o # di elementi e scadere in base all'ultimo orario di accesso o al tempo di ingresso.

+0

EhCache è piuttosto dolce. La mia esperienza è stata 'funziona'. –

Problemi correlati