org.apache.cassandra.io.sstable
Class SSTable

java.lang.Object
  extended by org.apache.cassandra.io.sstable.SSTable
Direct Known Subclasses:
SSTableReader, SSTableWriter

public abstract class SSTable
extends java.lang.Object

This class is built on top of the SequenceFile. It stores data on disk in sorted fashion. However the sorting is upto the application. This class expects keys to be handed to it in sorted order. A separate index file is maintained as well, containing the SSTable keys and the offset into the SSTable at which they are found. Every 1/indexInterval key is read into memory when the SSTable is opened. Finally, a bloom filter file is also kept for the keys in each SSTable.


Field Summary
static java.lang.String COMPONENT_COMPACTED
           
static java.lang.String COMPONENT_DATA
           
static java.lang.String COMPONENT_FILTER
           
static java.lang.String COMPONENT_INDEX
           
static java.util.List<java.lang.String> components
           
protected  Descriptor desc
           
protected  EstimatedHistogram estimatedColumnCount
           
protected  EstimatedHistogram estimatedRowSize
           
protected  CFMetaData metadata
           
protected  IPartitioner partitioner
           
static java.lang.String TEMPFILE_MARKER
           
 
Constructor Summary
protected SSTable(Descriptor desc, CFMetaData metadata, IPartitioner partitioner)
           
protected SSTable(java.lang.String filename, CFMetaData metadata, IPartitioner partitioner)
           
 
Method Summary
 long bytesOnDisk()
           
protected  java.lang.String compactedFilename()
           
protected static java.lang.String compactedFilename(java.lang.String dataFile)
           
static boolean deleteIfCompacted(java.lang.String dataFilename)
          We use a ReferenceQueue to manage deleting files that have been compacted and for which no more SSTable references exist.
 java.lang.String filterFilename()
           
protected static java.lang.String filterFilename(java.lang.String dataFile)
           
 java.lang.String getColumnFamilyName()
           
 Descriptor getDescriptor()
           
 EstimatedHistogram getEstimatedColumnCount()
           
 EstimatedHistogram getEstimatedRowSize()
           
 java.lang.String getFilename()
           
 IPartitioner getPartitioner()
           
 java.lang.String getTableName()
           
static long getTotalBytes(java.lang.Iterable<SSTableReader> sstables)
           
 java.lang.String indexFilename()
           
static java.lang.String indexFilename(java.lang.String dataFile)
           
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

COMPONENT_DATA

public static final java.lang.String COMPONENT_DATA
See Also:
Constant Field Values

COMPONENT_INDEX

public static final java.lang.String COMPONENT_INDEX
See Also:
Constant Field Values

COMPONENT_FILTER

public static final java.lang.String COMPONENT_FILTER
See Also:
Constant Field Values

COMPONENT_COMPACTED

public static final java.lang.String COMPONENT_COMPACTED
See Also:
Constant Field Values

desc

protected final Descriptor desc

metadata

protected final CFMetaData metadata

partitioner

protected final IPartitioner partitioner

TEMPFILE_MARKER

public static final java.lang.String TEMPFILE_MARKER
See Also:
Constant Field Values

components

public static java.util.List<java.lang.String> components

estimatedRowSize

protected EstimatedHistogram estimatedRowSize

estimatedColumnCount

protected EstimatedHistogram estimatedColumnCount
Constructor Detail

SSTable

protected SSTable(java.lang.String filename,
                  CFMetaData metadata,
                  IPartitioner partitioner)

SSTable

protected SSTable(Descriptor desc,
                  CFMetaData metadata,
                  IPartitioner partitioner)
Method Detail

getEstimatedRowSize

public EstimatedHistogram getEstimatedRowSize()

getEstimatedColumnCount

public EstimatedHistogram getEstimatedColumnCount()

getPartitioner

public IPartitioner getPartitioner()

getDescriptor

public Descriptor getDescriptor()

indexFilename

public static java.lang.String indexFilename(java.lang.String dataFile)

indexFilename

public java.lang.String indexFilename()

compactedFilename

protected static java.lang.String compactedFilename(java.lang.String dataFile)

deleteIfCompacted

public static boolean deleteIfCompacted(java.lang.String dataFilename)
We use a ReferenceQueue to manage deleting files that have been compacted and for which no more SSTable references exist. But this is not guaranteed to run for each such file because of the semantics of the JVM gc. So, we write a marker to `compactedFilename` when a file is compacted; if such a marker exists on startup, the file should be removed.

Returns:
true if the file was deleted

compactedFilename

protected java.lang.String compactedFilename()

filterFilename

protected static java.lang.String filterFilename(java.lang.String dataFile)

filterFilename

public java.lang.String filterFilename()

getFilename

public java.lang.String getFilename()

getColumnFamilyName

public java.lang.String getColumnFamilyName()

getTableName

public java.lang.String getTableName()

getTotalBytes

public static long getTotalBytes(java.lang.Iterable<SSTableReader> sstables)

bytesOnDisk

public long bytesOnDisk()

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object


Copyright © 2010 The Apache Software Foundation