Ho fatto molte ricerche in materia di elasticsearch e mi sembra di inciampare sulla questione se sia necessario o meno un database.Database necessario con elasticsearch?
corrente Hibernate-Search e relazionale design
La mia applicazione corrente è scritto in Java utilizzando hibernate, hibernate-ricerca, e un database mysql. La ricerca in ibernazione si basa su lucene e gestisce automaticamente i miei indici per me durante le transazioni del database. Hibernate-search eseguirà la ricerca anche nell'indice e quindi estrarrà i record completi dal database in base ai pks memorizzati anziché dover memorizzare l'intero modello di dati nell'indice. Questo ha funzionato magnificamente, tuttavia con l'aumentare della mia applicazione, ho continuamente riscontrato problemi di ridimensionamento e costi legati al fatto che gli indici di Lucene devono vivere su ogni server delle applicazioni e quindi è necessaria un'altra libreria per sincronizzare gli indici insieme. L'altro problema con questo design è che richiede più memoria su tutti i server delle applicazioni poiché gli indici vengono replicati e archiviati con l'applicazione.
database o No Database
Provenendo dalla scuola hibernate-ricerca di pensiero, io sono confuso su se il vostro supponiamo di memorizzare l'intero modello di dati in elasticsearch e farla finita con il database tradizionale o se si suppone di memorizzare i propri dati di ricerca negli indici e di nuovo come hibernate-search restituire le chiavi primarie per estrarre i record completi dal proprio database relazionale.
gestione degli indici,
- Se la vostra utilizzando gli indici con un db, si dovrebbe essere manualmente loro mantenimento durante le transazioni? Ho visto un progetto jdbc chiamato river, ma sembra essere deprecato e sconsigliato per l'uso di produzione , c'è una libreria in grado di gestire automaticamente le tue transazioni per te? ?
- Se gli indici non sono sincronizzati con il db, esiste un metodo consigliato per ricostruirli?
Hibernate-Search API
Ho anche visto quanto segue nella tabella di marcia hibernate-ricerca API/SPI per backend alternativi http://hibernate.org/search/roadmap/
Define API/SPI abstraction to allow for future external backends integrations such as Apache Solr and Elastic Search.
mi chiedo se qualcuno ha qualche input su questo? Hibernate-search è in grado di gestire automaticamente gli indici di ricerca elastici come per la configurazione nativa?
Se No Database
Quale sarebbe l'inconveniente di non utilizzando un database per la ricerca tutto ciò che riguarda?
Grazie per la risposta. Un paio di domande, stavi facendo aggiornamenti in tempo reale ai tuoi indici durante gli aggiornamenti e le eliminazioni del salvataggio del database? Suppongo anche che tu stia gestendo i tuoi indici serializzando un bean su JSon con Jackson? Infine, se non stavi apportando aggiornamenti in tempo reale ai tuoi indici, stavi semplicemente eseguendo un cron job di qualche tipo per gestire gli aggiornamenti dell'indice? –
Era solo un lavoro di back-end che recuperava le differenze da indicizzare. Abbiamo usato sedano e supervisore (Python) per questo. Abbiamo anche serializzato in Python, recuperando utilizzando SQLAlchemy e utilizzando il nostro serializzatore json per inviare a elasticsearch. – Ivan