2012-04-17 10 views
13

La mia squadra mi ha chiesto di scegliere tra Cassandra e SOLR per una risposta più veloce alle domande di risposta. Ho detto loro che Cassandra è la cosa db di NOSQL mentre SOLR sta indicizzando qualcosa. Ma poi dicono che possiamo spingere il nostro db completo a SOLR (come usare SOLR come db) o possiamo semplicemente usare Cassandra con SOLR. Tutto confusoCassandra o SOLR? Cosa offre prestazioni migliori per rispondere alle query?

quantità di dati ci troviamo di fronte è come 1 miliardo si sviluppa su 4 tabella di MySQL (usando inverosimile unisce) e otteniamo sola lettura query dal sito. Non abbiamo bisogno di RICERCA TESTO COMPLETO

Penso che qualcosa in cui SOLR non possa essere battuto facilmente sia la sua funzione di ricerca a testo integrale ma non ne abbiamo bisogno sul nostro caso.

Quindi, che cosa ha SOLR che Cassandra non può fornire e che cosa fa Cassandra ha che può sostituire SOLR nel nostro caso particolare?

In altre parole, chi sta per esibirsi meglio? Cassandra da solo? SOLR come db da solo? O entrambi insieme? E soprattutto perché e perché no?

sua davvero importante per me il backup mia scelta con un forte punto, come se il motivo per cui uno è meglio di altri durante la mia prossima riunione di squadra.

E grazie in anticipo.

EDIT:

  • SOLANDRA non è un'opzione, perché se non fosse che matura e non più mantenuto Credo
  • DataStax non è un'opzione perché funzione SOLR è previsto solo in Enterprise Edizione
+1

@Xodarap come è un problema enorme? Puoi facilmente ottenere forti garanzie di coerenza se ne hai bisogno. Puoi scegliere (per operazione) quante repliche attendono una risposta da: http://www.datastax.com/docs/1.0/dml/data_consistency –

+0

@Tyler: Facebook passato a hbase [in parte grazie al suo più semplice modello di consistenza] (http://highscalability.com/blog/2010/11/16/facebooks-new-real-time-messaging-system-hbase-to-store-135.html) e so che per noi è sempre più coerente in Cassandra ha portato a problemi di latenza. Non ho dubbi che questo possa essere risolto, ma vale la pena considerarlo. – Xodarap

risposta

4
  • Cassandra i s un data store NoSQL ed è stato progettato per occuparsi di enormi quantità di dati. Tera byte e oltre. Sicuramente è stato progettato per funzionare.
  • Ricordare che i database NoSQL o gli archivi dati hanno funzionalità limitate quando si tratta di query. Non avranno query JOIN. Come questo ucciderà un sistema. Pensaci!
  • Si sarebbe sicuramente in grado di leggere/scrivere abbastanza velocemente e alcuni dei dati possono essere interrogati.
  • Schema flessibile, è possibile inserire dati sparsi in esso. Cioè, dove in generale DB si spinge NULL per una voce vuota, qui non lo si spinge affatto :) Non è necessario!
  • Nessuna ricerca di testo completo.

Questo è dove il grande MA entra.

  • Detto quanto sopra, SOLR su l'altra estremità è TF-IDF completo motore di ricerca. Sebbene tu possa usarlo per il tuo DB.
  • Schema flessibile. Contrassegna solo i campi che non sono obbligatori.
  • Solr aiuterà nella tokenizzazione, l'analisi e l'indicizzazione dei dati abbastanza rapidamente. Avrà una risposta eccellente. Restituisce XML e puoi analizzare l'XML per creare dati rappresentabili.
  • Le query di lettura sono veloci e intendo davvero veloci.Ma non ho paragoni tra Cassandra e SOLR da condividere.

E alla fine, dal momento che desidera CASSANDRA e SOLR insieme. Controlla per SOLANDRA (former Lucandra)

+2

Solr [consente] (http://wiki.apache.org/solr/SchemaXml#Dynamic_fields) per uno schema flessibile. – Xodarap

+1

@Wajih: d'accordo, Cassandra può prendersi cura di enormi quantità di dati, ma poi SOLR può anche farlo, si adatta bene, credo. Perfavore, correggimi se sbaglio. Inoltre, JOIN è qualcosa che né SOLR né Cassandra possono fornire. Lo schema flessibile è fornito da entrambi. SOLR ha avuto questa ricerca full text ad alto rendimento ma non ci serve la nostra particolare situazione. Né abbiamo bisogno di operazioni di scrittura. Quindi ora dici che le letture di Cassandra sono piuttosto veloci, ma allora tu dici che SOLR è di nuovo veloce, quindi la domanda è ancora che cosa rende uno migliore di altri nel nostro caso? :( – codersofthedark

+0

Ho riscritto la domanda per una migliore chiarezza della situazione :) :) – codersofthedark

4

Si può anche dare un'occhiata a Datastax
C'è Community Edition ed Enterprise, anche se penso che Solr non è incluso nella community edition :(

Solandra non è attivamente sviluppato più, il autore si trasferisce a Datastax e continuò il suo lavoro lì.

IMHO ciò Cloudera è per Hadoop, che è Datastax per Cassandra.

+1

oh sì ... ho dimenticato DataStax. Avrei dovuto dirlo :) –

+0

@mbonaci: è davvero importante come per capire perché dobbiamo usare entrambi e trus Datastax/Solandra? Intendo cosa c'è in Cassandra che SOLR non può fornire e viceversa? Non abbiamo bisogno di ricerca full text. Quindi non si può sostituire l'altro? – codersofthedark

+0

Ho riscritto la domanda per una migliore chiarezza della situazione. :) – codersofthedark

6

Se non avete bisogno di full-text funzionalità di ricerca di Solr, c'è molto Litt la ragione per sceglierlo sopra Cassandra, secondo me.

(Disclosure:. Io lavoro per DataStax)

Operativamente, la gestione di un gruppo Cassandra sarà molto più semplice grazie all'architettura Dinamo-based. Sharding Solr può essere piuttosto doloroso, il che è uno dei motivi principali per cui noi di DataStax abbiamo costruito la ricerca in DSE; è qualcosa che un gruppo di persone vuole evitare. Non sto cercando di venderti su DSE, solo sottolineando il lato negativo di Solr.

Ad esempio, quando si desidera modificare il numero di frammenti con Solr, è necessario creare e creare un indice completamente nuovo. Devi preoccuparti di un deadlock con un cluster Solr. Esistono molte altre limitazioni: http://wiki.apache.org/solr/DistributedSearch

Non hai detto molto su che tipo di query devi essere in grado di supportare. L'aggiunta di queste informazioni ti darebbe risposte migliori.

+0

(Attualmente le query sono solo query lette e recuperate usando join su 4 tabelle MySQL. Lemme so se qualcosa di più vuoi sapere sulla natura delle query) Quindi, dal tuo input posso concludere che se il nostro indice è su un singolo sistema e non abbiamo bisogno di funzionalità di ricerca full-text, quindi SOLR e Cassandra avranno prestazioni ugualmente probabili ma se l'indice è distribuito, Cassandra sarebbe meglio usarlo? O anche in una sola macchina Cassandra sta per esibirsi meglio? Se sì/no, allora perché? – codersofthedark

+0

@dragosrsupercool la natura delle query sarebbe sicuramente utile; più dettagli, meglio è. –

1

Le funzioni di indicizzazione di Solrs eseguivano Cassandra per le letture. Indicherà le query più frequenti, quelle così frequenti saranno ancora più veloci. È stato costruito per essere letto, Cassandra è stato costruito per essere conservato. Ma come già affermato, Cassandra si ridimensionerà in modo fantastico se necessario. Perché non confrontare un singolo nodo, 1 stringa di testo casuale, una media di 1 milione di query. Uno dei due eseguirà mysql e tanto meno mysql join queries. PS solr presto sosterrà i join che penso solr 4 .....

+0

Bench-marking suona bene. – codersofthedark

Problemi correlati