public abstract class SecondaryIndex
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
protected ColumnFamilyStore |
baseCfs
Base CF that has many indexes
|
protected java.util.Set<ColumnDefinition> |
columnDefs
The column definitions which this index is responsible for
|
static java.lang.String |
CUSTOM_INDEX_OPTION_NAME |
static AbstractType<?> |
keyComparator |
protected static org.slf4j.Logger |
logger |
Constructor and Description |
---|
SecondaryIndex() |
Modifier and Type | Method and Description |
---|---|
java.util.concurrent.Future<?> |
buildIndexAsync()
Builds the index using the data in the underlying CF, non blocking
|
protected void |
buildIndexBlocking()
Builds the index using the data in the underlying CFS
Blocks till it's complete
|
static SecondaryIndex |
createInstance(ColumnFamilyStore baseCfs,
ColumnDefinition cdef)
This is the primary way to create a secondary index instance for a CF column.
|
protected abstract SecondaryIndexSearcher |
createSecondaryIndexSearcher(java.util.Set<java.nio.ByteBuffer> columns)
Called at query time
Creates a implementation specific searcher instance for this index type
|
abstract void |
forceBlockingFlush()
Forces this indexes in memory data to disk
|
ColumnFamilyStore |
getBaseCfs() |
java.util.Set<ColumnDefinition> |
getColumnDefs() |
abstract ColumnFamilyStore |
getIndexCfs()
Allow access to the underlying column family store if there is one
|
static AbstractType<?> |
getIndexComparator(CFMetaData baseMetadata,
ColumnDefinition cdef)
Returns the index comparator for index backed by CFS, or null.
|
DecoratedKey |
getIndexKeyFor(java.nio.ByteBuffer value)
Returns the decoratedKey for a column value
|
abstract java.lang.String |
getIndexName() |
abstract long |
getLiveSize()
Get current amount of memory this index is consuming (in bytes)
|
abstract java.lang.String |
getNameForSystemKeyspace(java.nio.ByteBuffer columnName)
Return the unique name for this index and column
to be stored in the SystemKeyspace that tracks if each column is built
|
boolean |
indexes(java.nio.ByteBuffer name)
Returns true if the provided column name is indexed by this secondary index.
|
abstract void |
init()
Perform any initialization work
|
abstract void |
invalidate()
Remove the index and unregisters this index's mbean if one exists
|
boolean |
isIndexBuilt(java.nio.ByteBuffer columnName)
Checks if the index for specified column is fully built
|
abstract void |
reload()
Reload an existing index following a change to its configuration,
or that of the indexed column(s).
|
abstract void |
removeIndex(java.nio.ByteBuffer columnName)
Delete all files and references to this index
|
void |
setIndexBuilt() |
void |
setIndexRemoved() |
abstract void |
truncateBlocking(long truncatedAt)
Truncate all the data from the current index
|
abstract boolean |
validate(Column column) |
abstract void |
validateOptions()
Validates the index_options passed in the ColumnDef
|
protected static final org.slf4j.Logger logger
public static final java.lang.String CUSTOM_INDEX_OPTION_NAME
public static final AbstractType<?> keyComparator
protected ColumnFamilyStore baseCfs
protected final java.util.Set<ColumnDefinition> columnDefs
public abstract void init()
public abstract void reload()
public abstract void validateOptions() throws ConfigurationException
ConfigurationException
public abstract java.lang.String getIndexName()
public abstract java.lang.String getNameForSystemKeyspace(java.nio.ByteBuffer columnName)
columnName
- the name of the columnpublic boolean isIndexBuilt(java.nio.ByteBuffer columnName)
columnName
- the columnpublic void setIndexBuilt()
public void setIndexRemoved()
protected abstract SecondaryIndexSearcher createSecondaryIndexSearcher(java.util.Set<java.nio.ByteBuffer> columns)
columns
- the list of columns which belong to this index typepublic abstract void forceBlockingFlush()
public abstract long getLiveSize()
public abstract ColumnFamilyStore getIndexCfs()
public abstract void removeIndex(java.nio.ByteBuffer columnName)
columnName
- the indexed column to removepublic abstract void invalidate()
public abstract void truncateBlocking(long truncatedAt)
truncatedAt
- The truncation timestamp, all data before that timestamp should be rejected.protected void buildIndexBlocking()
public java.util.concurrent.Future<?> buildIndexAsync()
public ColumnFamilyStore getBaseCfs()
public java.util.Set<ColumnDefinition> getColumnDefs()
public DecoratedKey getIndexKeyFor(java.nio.ByteBuffer value)
value
- column valuepublic boolean indexes(java.nio.ByteBuffer name)
public static SecondaryIndex createInstance(ColumnFamilyStore baseCfs, ColumnDefinition cdef) throws ConfigurationException
baseCfs
- the source of data for the Indexcdef
- the meta information about this column (index_type, index_options, name, etc...)ConfigurationException
public abstract boolean validate(Column column)
public static AbstractType<?> getIndexComparator(CFMetaData baseMetadata, ColumnDefinition cdef)
Copyright © 2013 The Apache Software Foundation