Mysql
 sql >> Database >  >> RDS >> Mysql

Utilizzo dell'indice di ricerca Solr come database:è sbagliato?

Sì, puoi usare SOLR come database, ma ci sono alcuni avvertimenti davvero seri:

  1. Il modello di accesso più comune di SOLR, che è su http, non risponde particolarmente bene alle query batch. Inoltre, SOLR NON trasmette dati in streaming, quindi non puoi scorrere pigramente milioni di record alla volta. Ciò significa che devi essere molto attento quando progetti modelli di accesso ai dati su larga scala con SOLR.

  2. Anche se le prestazioni di SOLR si ridimensionano orizzontalmente (più macchine, più core, ecc.) e verticalmente (più RAM, macchine migliori, ecc.), le sue capacità di interrogazione sono gravemente limitate rispetto a quelle di un RDBMS maturo . Detto questo, ci sono alcune funzioni eccellenti, come le query sulle statistiche sul campo, che sono abbastanza convenienti.

  3. Gli sviluppatori che sono abituati a utilizzare i database relazionali incontreranno spesso problemi quando utilizzano gli stessi modelli di progettazione DAO in un paradigma SOLR, a causa del modo in cui SOLR utilizza i filtri nelle query. Ci sarà una curva di apprendimento per lo sviluppo del giusto approccio alla creazione di un'applicazione che utilizza SOLR per parte delle sue query di grandi dimensioni o per le modifiche complete dello stato .

  4. Gli strumenti "aziendali" che consentono la gestione avanzata delle sessioni e le entità con stato completo offerti da molti framework Web avanzati (Ruby, Hibernate, ...) dovranno essere completamente buttati fuori dalla finestra .

  5. I database relazionali sono pensati per gestire dati e relazioni complesse, e sono quindi accompagnati da metriche all'avanguardia e strumenti di analisi automatizzata. In SOLR, mi sono ritrovato a scrivere strumenti di questo tipo e a eseguire molto stress test manuali, il che può essere una perdita di tempo .

  6. Partecipare:questo è il grande assassino. I database relazionali supportano metodi per creare e ottimizzare viste e query che uniscono tuple in base a semplici predicati. In SOLR non esistono metodi affidabili per unire i dati tra indici.

  7. Resilienza:per un'elevata disponibilità, SolrCloud utilizza un file system distribuito sottostante (ad esempio HCFS). Questo modello è abbastanza diverso da quello di un database relazionale, che di solito esegue la resilienza utilizzando slave e master, o RAID e così via. Quindi devi essere pronto a fornire l'infrastruttura di resilienza richiesta da SOLR se vuoi che sia scalabile e resistente nel cloud.

Detto questo, ci sono molti ovvi vantaggi in SOLR per determinate attività:(vedi http://wiki. apache.org/solr/WhyUseSolr ) -- le query loose sono molto più facili da eseguire e restituiscono risultati significativi. L'indicizzazione viene eseguita per impostazione predefinita, quindi la maggior parte delle query arbitrarie viene eseguita in modo abbastanza efficace (a differenza di un RDBMS, in cui spesso è necessario ottimizzare e denormalizzare dopo il fatto).

Conclusione: Anche se PUOI usare SOLR come RDBMS, potresti scoprire (come ho fatto io) che alla fine non c'è "nessun pranzo gratis" - e il risparmio sui costi delle fantastiche ricerche di testo Lucene e l'indicizzazione in memoria ad alte prestazioni, sono spesso pagati da una minore flessibilità e dall'adozione di nuovi flussi di lavoro di accesso ai dati.