public class SecondaryIndexManager extends java.lang.Object implements IndexRegistry
Modifier and Type | Field and Description |
---|---|
ColumnFamilyStore |
baseCfs
The underlying column family containing the source data for these indexes
|
Constructor and Description |
---|
SecondaryIndexManager(ColumnFamilyStore baseCfs) |
Modifier and Type | Method and Description |
---|---|
java.util.concurrent.Future<?> |
addIndex(IndexMetadata indexDef)
Adds and builds a index
|
void |
buildAllIndexesBlocking(java.util.Collection<SSTableReader> sstables) |
void |
buildIndexBlocking(Index index) |
void |
deletePartition(UnfilteredRowIterator partition,
int nowInSec)
Delete all data from all indexes for this partition.
|
void |
flushAllIndexesBlocking()
Perform a blocking flush all indexes
|
void |
flushAllNonCFSBackedIndexesBlocking()
Performs a blocking flush of all custom indexes
|
void |
flushIndexesBlocking(java.util.Set<Index> indexes)
Perform a blocking flush of selected indexes
|
java.util.Set<ColumnFamilyStore> |
getAllIndexColumnFamilyStores() |
Index |
getBestIndexFor(ReadCommand command)
Called at query time to choose which (if any) of the registered index implementations to use for a given query.
|
java.util.List<java.lang.String> |
getBuiltIndexNames() |
java.util.Set<IndexMetadata> |
getDependentIndexes(ColumnDefinition column) |
Index |
getIndex(IndexMetadata metadata) |
Index |
getIndexByName(java.lang.String indexName) |
static java.lang.String |
getIndexName(ColumnFamilyStore cfs)
Returns the index name
|
static java.lang.String |
getIndexName(java.lang.String cfName)
Returns the index name
|
static ColumnFamilyStore |
getParentCfs(ColumnFamilyStore cfs)
Returns the parent of the specified
ColumnFamilyStore . |
static java.lang.String |
getParentCfsName(java.lang.String cfName)
Returns the parent name of the specified
ColumnFamilyStore . |
boolean |
hasIndexes() |
void |
indexPartition(UnfilteredRowIterator partition,
OpOrder.Group opGroup,
java.util.Set<Index> indexes,
int nowInSec)
When building an index against existing data in sstables, add the given partition to the index
|
void |
invalidateAllIndexesBlocking()
Remove all indexes
|
static boolean |
isIndexColumnFamily(java.lang.String cfName)
Checks if the specified
ColumnFamilyStore is the one secondary index. |
static boolean |
isIndexColumnFamilyStore(ColumnFamilyStore cfs)
Checks if the specified
ColumnFamilyStore is a secondary index. |
java.util.Collection<Index> |
listIndexes() |
void |
markAllIndexesRemoved()
Called when dropping a Table
|
CleanupTransaction |
newCleanupTransaction(DecoratedKey key,
PartitionColumns partitionColumns,
int nowInSec)
Transaction for use when removing partitions during cleanup
|
CompactionTransaction |
newCompactionTransaction(DecoratedKey key,
PartitionColumns partitionColumns,
int versions,
int nowInSec)
Transaction for use when merging rows during compaction
|
UpdateTransaction |
newUpdateTransaction(PartitionUpdate update,
OpOrder.Group opGroup,
int nowInSec)
Transaction for updates on the write path.
|
void |
rebuildIndexesBlocking(java.util.Collection<SSTableReader> sstables,
java.util.Set<java.lang.String> indexNames)
Does a full, blocking rebuild of the indexes specified by columns from the sstables.
|
void |
registerIndex(Index index)
IndexRegistry methods
|
void |
reload()
Drops and adds new indexes associated with the underlying CF
|
void |
removeIndex(java.lang.String indexName) |
void |
truncateAllIndexesBlocking(long truncatedAt)
Truncate all indexes
|
void |
unregisterIndex(Index index) |
void |
validate(PartitionUpdate update)
Called at write time to ensure that values present in the update
are valid according to the rules of all registered indexes which
will process it.
|
public final ColumnFamilyStore baseCfs
public SecondaryIndexManager(ColumnFamilyStore baseCfs)
public void reload()
public java.util.concurrent.Future<?> addIndex(IndexMetadata indexDef)
indexDef
- the IndexMetadata describing the indexpublic void removeIndex(java.lang.String indexName)
public java.util.Set<IndexMetadata> getDependentIndexes(ColumnDefinition column)
public void markAllIndexesRemoved()
public void rebuildIndexesBlocking(java.util.Collection<SSTableReader> sstables, java.util.Set<java.lang.String> indexNames)
sstables
- the data to build fromindexNames
- the list of indexes to be rebuiltpublic void buildAllIndexesBlocking(java.util.Collection<SSTableReader> sstables)
public void buildIndexBlocking(Index index)
public static boolean isIndexColumnFamilyStore(ColumnFamilyStore cfs)
ColumnFamilyStore
is a secondary index.cfs
- the ColumnFamilyStore
to check.true
if the specified ColumnFamilyStore
is a secondary index,
false
otherwise.public static boolean isIndexColumnFamily(java.lang.String cfName)
ColumnFamilyStore
is the one secondary index.cfs
- the name of the ColumnFamilyStore
to check.true
if the specified ColumnFamilyStore
is a secondary index,
false
otherwise.public static ColumnFamilyStore getParentCfs(ColumnFamilyStore cfs)
ColumnFamilyStore
.cfs
- the ColumnFamilyStore
ColumnFamilyStore
public static java.lang.String getParentCfsName(java.lang.String cfName)
ColumnFamilyStore
.cfName
- the ColumnFamilyStore
nameColumnFamilyStore
public static java.lang.String getIndexName(ColumnFamilyStore cfs)
cfName
- the ColumnFamilyStore
namepublic static java.lang.String getIndexName(java.lang.String cfName)
cfName
- the ColumnFamilyStore
namepublic Index getIndexByName(java.lang.String indexName)
public void truncateAllIndexesBlocking(long truncatedAt)
public void invalidateAllIndexesBlocking()
public void flushAllIndexesBlocking()
public void flushIndexesBlocking(java.util.Set<Index> indexes)
public void flushAllNonCFSBackedIndexesBlocking()
public java.util.List<java.lang.String> getBuiltIndexNames()
public java.util.Set<ColumnFamilyStore> getAllIndexColumnFamilyStores()
public boolean hasIndexes()
public void indexPartition(UnfilteredRowIterator partition, OpOrder.Group opGroup, java.util.Set<Index> indexes, int nowInSec)
public void deletePartition(UnfilteredRowIterator partition, int nowInSec)
public Index getBestIndexFor(ReadCommand command)
command
- ReadCommand to be executedpublic void validate(PartitionUpdate update) throws InvalidRequestException
update
- PartitionUpdate containing the values to be validated by registered Index implementationsInvalidRequestException
public void registerIndex(Index index)
registerIndex
in interface IndexRegistry
public void unregisterIndex(Index index)
unregisterIndex
in interface IndexRegistry
public Index getIndex(IndexMetadata metadata)
getIndex
in interface IndexRegistry
public java.util.Collection<Index> listIndexes()
listIndexes
in interface IndexRegistry
public UpdateTransaction newUpdateTransaction(PartitionUpdate update, OpOrder.Group opGroup, int nowInSec)
public CompactionTransaction newCompactionTransaction(DecoratedKey key, PartitionColumns partitionColumns, int versions, int nowInSec)
public CleanupTransaction newCleanupTransaction(DecoratedKey key, PartitionColumns partitionColumns, int nowInSec)
Copyright © 2015 The Apache Software Foundation