Domanda

Qualcuno ha usato memcached come cache di livello 2 o lucene.net per la ricerca con nhibernate? Per favore, puoi condividere i tuoi progressi sulla cache nhibernate & amp; indicizzazione / ricerca.

E, memcached (con enyim cilent sullo stesso computer di appserver) è la soluzione l2cache più veloce con nhibernate?

I migliori saluti sirmak

È stato utile?

Soluzione

Ho usato entrambi sperimentalmente . Per la cache di secondo livello non posso confrontarla con nessun'altra opzione, poiché era l'unica che ho usato, tranne forse per non averne una: fornirà immediatamente miglioramenti delle prestazioni, ma saranno più evidenti per gli scenari in cui leggi principalmente di inserire / aggiornare, quando hai a che fare con set di dati di grandi dimensioni e quando hai un cluster. In particolare per memcached è una soluzione audio poiché l'applicazione può essere eseguita virtualmente su qualsiasi tipo di macchina (come una macchina Linux economica)

Per Lucene.NET l'ho usato sia per la vaniglia (ma non per nulla negligente, ma per la produzione non solo per esperimenti) sia sotto forma di NHibernate. Ricerca considerando che l'integrazione con Nhibernate è perfetta: gli indici sono generati e manipolati dietro tenda e tutto è configurato nella dichiarazione di classe (purtroppo con attributi di classe e proprietà, avrebbe preferito sulla mappatura). Confrontandolo con il motore di ricerca full-text di SQL Server, penso che sia più gestibile in quanto non è necessario scrivere SQL normale per recuperare utilizzando il motore FT, basta usare il meccanismo Criteria e un meccanismo esposto per le query di Lucene.

La sincronizzazione con il database viene eseguita automaticamente durante l'aggiornamento / l'inserimento / l'eliminazione. Le prestazioni del motore Lucene.NET dipendono sia dalla configurazione cpu / ram della macchina sia dalla velocità del supporto di archiviazione e lo trovo comparabile se non più veloce del motore FullText di SqlServer. Come nota, gli indici NHibernate.Search sono semplici e ogni Classe indicizzata ha il proprio file indice che facilita lo sviluppo e la sbirciatina nell'indice.

Altri suggerimenti

Abbiamo usato Lucene.NET con successo per migliorare le prestazioni di ricerca di un ampio database di diversi GB. Gli ID risultato Lucene.NET vengono quindi passati a NHibernate per il recupero. Le query di NHibernate scadono, tuttavia Lucene.NET restituisce i risultati in pochi secondi. Non abbiamo usato Memcached, quindi non posso confrontare entrambe le soluzioni.

Il più grande svantaggio è il fatto che l'indice Lucene deve essere sincronizzato con il database reale.

Modifica: una cosa che potresti voler guardare è NHibernate.Search, se hai intenzione di andare su Lucene.NET & amp; NHibernate route, è un progetto che gestisce la creazione dell'indice Lucene & amp; sincronizzazione per te. Ha alcune caratteristiche interessanti, l'ultima volta che ho controllato ha creato un indice per classe, indicizzando automaticamente tutte le proprietà. Questo non è stato utile per noi, poiché volevamo anche indicizzare gli oggetti referenziati, ma in alcuni casi questo dovrebbe essere sufficiente. Non so in quale stato si trovi ora il progetto, è passato un po 'di tempo da quando ho dato un'occhiata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top