2011-10-03 16 views
8

Sé que cassandra fusiona sstables, row-keys, remove tombstone y todo.¿Qué hace Casandra durante la compactación?

  1. Pero estoy realmente interesado en saber cómo se realiza la compactación?

  2. Como los elementos inestables son inmutables ¿copian todos los datos relevantes al nuevo archivo? y al escribir en este nuevo archivo descarta los datos marcados como lápidas.

Sé lo compactación no hace más que quieren saber cómo hacer que esto suceda (T)

Respuesta

7

espero que este hilo de ayuda, siempre si se siguen todos los mensajes y comentarios en que

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

yo sepa

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 

Saludos, Tamil

+0

¿hay alguna forma de OBTENER los datos de inestables después de la compactación? Quiero decir, ¿hay alguna API de Java para obtener los datos compactados justo antes de que estén escritos en las tablas de cassandra? –

3

dos formas de ejecutar la compactación:

A- compactación Menor. Ejecutar automáticamente B- Compactación principal. Ejecuta manual.

En ambos casos toma x archivos (por CF) y los procesa. En este proceso, marque las filas con ttl caducado como lápidas sepulcrales y elimine las lápidas sepulcrales existentes. Con esto genera un nuevo archivo. Los tombostones generados en esta compactación se eliminarán en la siguiente compactación (si pasas el período de gracia, gc_grace).

La diferencia entre A y B es la cantidad de archivos tomados y el archivo final. A toma unos pocos archivos similares (tamaño similar) y genera un nuevo archivo. B toma TODOS los archivos y genera un solo archivo grande.