2011-10-03 10 views
8

So che la cassandra fonde scalini, chiavi di fila, rimuovi lapidi e tutto il resto.Cosa fa la cassandra durante la compattazione?

  1. Ma sono davvero interessati a sapere come si svolge la compattazione?

  2. Poiché gli sstables sono immutabili, copia tutti i dati rilevanti in un nuovo file? e mentre scrive su questo nuovo file, scartare i dati contrassegnati con la pietra tombale.

so cosa compattazione fa ma vuole sapere come fare questo accadere (T)

risposta

7

Spero che questa discussione aiuta, a condizione che se si seguono tutti i post e commenti in esso

http://comments.gmane.org/gmane.comp.db.cassandra.user/10577

AFAIK

Whenever memtable is flushed from memory to disk they are just appended[Not updated] to new SSTable created, sorted via rowkey. 
SSTable merge[updation] will take place only during compaction. 
Till then read path will read from all the SSTable having that key you look up and the result from them is merged to reply back, 

Two types : Minor and Major 

Minor compaction is triggered automatically whenever a new sstable is being created. 
May remove all tombstones 
Compacts sstables of equal size in to one [initially memtable flush size] when minor compaction threshold is reached [4 by default]. 

Major Compaction is manually triggered using nodetool 
Can be applied over a column family over a time 
Compacts all the sstables of a CF in to 1 

Compacts the SSTables and marks delete over unneeded SSTables. GC takes care of freeing up that space 

Saluti, Tamil

+0

c'è un modo per ottenere i dati di sstables dopo la compattazione? Voglio dire c'è qualche API Java per ottenere i dati compattati appena prima che sia scritto in tabelle cassandra? –

3

sono due modi per eseguire la compattazione:

A- compattazione Minore. Esegui automaticamente. B- Compattazione maggiore. Eseguire mannualy.

In entrambi i casi prende x file (per CF) ed elaborarli. In questo processo, contrassegna le righe con ttl scaduto come lapidi e cancella le lapidi esistenti. Con questo genera un nuovo file. Le pietre tombali generate in questa compattazione saranno eliminate nella successiva compattazione (se trascorrono il periodo di prova, gc_grace).

La differenza tra A e B è la quantità di file presi e il file finale. A prende alcuni file simili (dimensioni simili) e genera un nuovo file. B prende TUTTI i file e genera solo un grande file.