2010-02-06 17 views
17

Stiamo cercando di utilizzare Cassandra per archiviare un flusso di informazioni provenienti da varie fonti.Dati serie temporali Cassandra

Un problema che stiamo affrontando è il modo migliore per eseguire una query tra due date.

Ad esempio, sarà necessario recuperare un oggetto tra datetime dt1 e datetime dt2.

Attualmente stiamo considerando il timestamp unix creato come la chiave che punta all'oggetto effettivo, quindi utilizzando get_key_range per interrogare per recuperare?

Ovviamente questo non funzionerebbe se due articoli hanno lo stesso timestamp.

È questo il modo migliore per fare datetime negli archivi noSQL in generale?

+2

Sei curioso di sapere come hai modellato i dati? Stiamo cercando qualcosa di simile e sto cercando di raccogliere le migliori pratiche, ecc. – AlexGad

risposta

15

Le righe di Cassandra possono essere molto grandi, quindi considera la modellazione come colonne in una riga anziché in una CF; quindi è possibile utilizzare le operazioni slice della colonna, che sono più veloci delle slice di riga. Se non ci sono tasti "naturali" associati a questo, è possibile utilizzare chiavi giornaliere o orarie come "2010/02/08 13:00".

In caso contrario, si, utilizzando query di intervallo (get_key_range è deprecato in 0.5; utilizzare get_range_slice) è l'opzione migliore.

+1

Quanto è grande la dimensione? Sulla diapositiva 41 della presentazione su http://www.slideshare.net/jbellis/cassandra-open-source-bigtable-dynamo dici "Milioni di colonne per riga" per 0,5. Le colonne di fila sono ancora la strada da percorrere per serie storiche davvero grandi? –

+0

Sì, le colonne sono la strada da percorrere. – z8000

+0

Il motivo per utilizzare le colonne anziché le righe sono i partizionatori? Poiché RandomPartitioner non conserva l'ordine, mentre ByteOrderedPartitioner crea gli hotspot. Ma non è il partizionamento basato sulle chiavi di riga? Significa che se immagazziniamo un numero elevato di colonne in una singola riga, questo subirà anche il problema dell'hot spot? –

Problemi correlati