2011-10-03 15 views
8

Wiem, że Kasandra scala sstables, row-keys, usunąć nagrobek i wszystko.Co robi kasandra podczas zagęszczania?

  1. Ale jestem naprawdę zainteresowany, aby wiedzieć, jak wykonuje zagęszczanie?

  2. Ponieważ sstables są niezmienne, kopiuje wszystkie istotne dane do nowego pliku? i podczas zapisywania do tego nowego pliku odrzuca dane oznaczone jako nagrobek.

wiem co zagęszczania ma jednak chcesz wiedzieć, jak to zrobić to się stało (t)

Odpowiedz

7

Mam nadzieję, że ten wątek nie pomaga, pod warunkiem, jeśli śledzić wszystkie posty i komentarze w nim

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 

Pozdrawiam, Tamil

+0

Czy jest jakiś sposób, aby uzyskać dane z sstables po zagęszczeniu? Chodzi mi o to, czy istnieje jakiś API Java, aby uzyskać skompaktowane dane tuż przed zapisaniem ich w tabelach cassandra? –

3

Są dwa sposoby, aby uruchomić zagęszczenia

A- Minor ugniatanie. Uruchom automatycznie. B- Duże zagęszczanie. Uruchom mannualy.

W obu przypadkach bierze x plików (na CF) i przetwarza je. W tym procesie oznacz rzędy z przeterminowanymi ttl jako nagrobki i usuń istniejące nagrobki. Z tym generuje nowy plik. Tombostony wygenerowane w tym zagęszczeniu zostaną usunięte w następnym zagęszczeniu (jeśli wydasz okres karencji, gc_grace).

Różnica między A i B to liczba pobranych plików i ostateczny plik. A wykonuje kilka podobnych plików (podobny rozmiar) i generuje nowy plik. B wykonuje WSZYSTKIE pliki i generuje tylko jeden duży plik.