org.apache.hadoop.hbase.regionserver
Interface StoreFileManager

All Known Implementing Classes:
StripeStoreFileManager

@InterfaceAudience.Private
public interface StoreFileManager

Manages the store files and basic metadata about that that determines the logical structure (e.g. what files to return for scan, how to determine split point, and such). Does NOT affect the physical structure of files in HDFS. Example alternative structures - the default list of files by seqNum; levelDB one sorted by level and seqNum. Implementations are assumed to be not thread safe.


Method Summary
 void addCompactionResults(Collection<StoreFile> compactedFiles, Collection<StoreFile> results)
          Adds compaction results into the structure.
 com.google.common.collect.ImmutableCollection<StoreFile> clearFiles()
          Clears all the files currently in use and returns them.
 Iterator<StoreFile> getCandidateFilesForRowKeyBefore(KeyValue targetKey)
          Gets initial, full list of candidate store files to check for row-key-before.
 double getCompactionPressure()
           
 Collection<StoreFile> getFilesForScanOrGet(boolean isGet, byte[] startRow, byte[] stopRow)
          Gets the store files to scan for a Scan or Get request.
 byte[] getSplitPoint()
          Gets the split point for the split of this set of store files (approx.
 int getStoreCompactionPriority()
           
 int getStorefileCount()
          Returns the number of files currently in use.
 Collection<StoreFile> getStorefiles()
          Gets the snapshot of the store files currently in use.
 Collection<StoreFile> getUnneededFiles(long maxTs, List<StoreFile> filesCompacting)
           
 void insertNewFiles(Collection<StoreFile> sfs)
          Adds new files, either for from MemStore flush or bulk insert, into the structure.
 void loadFiles(List<StoreFile> storeFiles)
          Loads the initial store files into empty StoreFileManager.
 Iterator<StoreFile> updateCandidateFilesForRowKeyBefore(Iterator<StoreFile> candidateFiles, KeyValue targetKey, KeyValue candidate)
          Updates the candidate list for finding row key before.
 

Method Detail

loadFiles

void loadFiles(List<StoreFile> storeFiles)
Loads the initial store files into empty StoreFileManager.

Parameters:
storeFiles - The files to load.

insertNewFiles

void insertNewFiles(Collection<StoreFile> sfs)
                    throws IOException
Adds new files, either for from MemStore flush or bulk insert, into the structure.

Parameters:
sfs - New store files.
Throws:
IOException

addCompactionResults

void addCompactionResults(Collection<StoreFile> compactedFiles,
                          Collection<StoreFile> results)
                          throws IOException
Adds compaction results into the structure.

Parameters:
compactedFiles - The input files for the compaction.
results - The resulting files for the compaction.
Throws:
IOException

clearFiles

com.google.common.collect.ImmutableCollection<StoreFile> clearFiles()
Clears all the files currently in use and returns them.

Returns:
The files previously in use.

getStorefiles

Collection<StoreFile> getStorefiles()
Gets the snapshot of the store files currently in use. Can be used for things like metrics and checks; should not assume anything about relations between store files in the list.

Returns:
The list of StoreFiles.

getStorefileCount

int getStorefileCount()
Returns the number of files currently in use.

Returns:
The number of files.

getFilesForScanOrGet

Collection<StoreFile> getFilesForScanOrGet(boolean isGet,
                                           byte[] startRow,
                                           byte[] stopRow)
Gets the store files to scan for a Scan or Get request.

Parameters:
isGet - Whether it's a get.
startRow - Start row of the request.
stopRow - Stop row of the request.
Returns:
The list of files that are to be read for this request.

getCandidateFilesForRowKeyBefore

Iterator<StoreFile> getCandidateFilesForRowKeyBefore(KeyValue targetKey)
Gets initial, full list of candidate store files to check for row-key-before.

Parameters:
targetKey - The key that is the basis of the search.
Returns:
The files that may have the key less than or equal to targetKey, in reverse order of new-ness, and preference for target key.

updateCandidateFilesForRowKeyBefore

Iterator<StoreFile> updateCandidateFilesForRowKeyBefore(Iterator<StoreFile> candidateFiles,
                                                        KeyValue targetKey,
                                                        KeyValue candidate)
Updates the candidate list for finding row key before. Based on the list of candidates remaining to check from getCandidateFilesForRowKeyBefore, targetKey and current candidate, may trim and reorder the list to remove the files where a better candidate cannot be found.

Parameters:
candidateFiles - The candidate files not yet checked for better candidates - return value from getCandidateFilesForRowKeyBefore(KeyValue), with some files already removed.
targetKey - The key to search for.
candidate - The current best candidate found.
Returns:
The list to replace candidateFiles.

getSplitPoint

byte[] getSplitPoint()
                     throws IOException
Gets the split point for the split of this set of store files (approx. middle).

Returns:
The mid-point, or null if no split is possible.
Throws:
IOException

getStoreCompactionPriority

int getStoreCompactionPriority()
Returns:
The store compaction priority.

getUnneededFiles

Collection<StoreFile> getUnneededFiles(long maxTs,
                                       List<StoreFile> filesCompacting)
Parameters:
maxTs - Maximum expired timestamp.
filesCompacting - Files that are currently compacting.
Returns:
The files which don't have any necessary data according to TTL and other criteria.

getCompactionPressure

double getCompactionPressure()
Returns:
the compaction pressure used for compaction throughput tuning.
See Also:
Store.getCompactionPressure()


Copyright © 2007–2015 The Apache Software Foundation. All rights reserved.