0.9.8.10
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
Hypertable::CellStoreV0 Class Reference

#include <CellStoreV0.h>

Inheritance diagram for Hypertable::CellStoreV0:
Inheritance graph
[legend]
Collaboration diagram for Hypertable::CellStoreV0:
Collaboration graph
[legend]

Public Member Functions

 CellStoreV0 (Filesystem *filesys)
 
virtual ~CellStoreV0 ()
 
void create (const char *fname, size_t max_entries, PropertiesPtr &props, const TableIdentifier *table_id=0) override
 Creates a new cell store. More...
 
void add (const Key &key, const ByteString value) override
 Inserts a key/value pair into the cell list. More...
 
void finalize (TableIdentifier *table_identifier) override
 Finalizes the creation of a cell store, by writing block index and metadata trailer. More...
 
void open (const String &fname, const String &start_row, const String &end_row, int32_t fd, int64_t file_length, CellStoreTrailer *trailer) override
 Opens a cell store with possibly a restricted view. More...
 
int64_t get_blocksize () override
 Returns the block size used for this cell store. More...
 
bool may_contain (const void *ptr, size_t len)
 
bool may_contain (const String &key)
 
bool may_contain (ScanContext *scan_ctx) override
 Bloom filter lookup. More...
 
uint64_t disk_usage () override
 Returns the disk used by this cell store. More...
 
float compression_ratio () override
 Returns block compression ratio of this cell store. More...
 
int64_t get_total_entries () override
 Returns the number of key/value pairs in the cell store. More...
 
std::string & get_filename () override
 Pathname of cell store file. More...
 
int get_file_id () override
 Returns a unique identifier which identifies the underlying file for caching purposes. More...
 
CellListScannerPtr create_scanner (ScanContext *scan_ctx) override
 Creates a scanner on this cell list. More...
 
BlockCompressionCodeccreate_block_compression_codec () override
 Creates a block compression codec suitable for decompressing the cell store's blocks. More...
 
void display_block_info () override
 Displays block information to stdout. More...
 
int64_t end_of_last_block () override
 Returns the offset of the end of the last block in the cell store. More...
 
size_t bloom_filter_size () override
 Return Bloom filter size. More...
 
int64_t bloom_filter_memory_used () override
 Returns the amount of memory consumed by the bloom filter. More...
 
int64_t block_index_memory_used () override
 Returns the amount of memory consumed by the block index. More...
 
uint64_t purge_indexes () override
 Purges bloom filter and block indexes. More...
 
bool restricted_range () override
 Returns true if the cellstore was opened with a restricted range. More...
 
int32_t get_fd () override
 Returns the open file descriptor for the CellStore file. More...
 
int32_t reopen_fd () override
 Closes and reopens the underlying CellStore file. More...
 
CellStoreTrailerget_trailer () override
 Return a pointer to the trailer object for this cell store. More...
 
uint16_t block_header_format () override
 
- Public Member Functions inherited from Hypertable::CellStore
 CellStore ()
 
virtual ~CellStore ()
 
virtual void split_row_estimate_data (SplitRowDataMapT &split_row_data)
 Populates split_row_data with unique row and count estimates from block index. More...
 
virtual void populate_index_pseudo_table_scanner (CellListScannerBuffer *scanner)
 Populates scanner with key/value pairs generated from CellStore index. More...
 
virtual void rescope (const String &start_row, const String &end_row)
 
virtual size_t block_count ()
 Returns the number of CellStore blocks covered by this object. More...
 
virtual KeyDecompressorcreate_key_decompressor ()
 Creates a key decompressor suitable for decompressing the keys stored in this cell store. More...
 
virtual void set_replaced_files (const std::vector< String > &old_files)
 Sets the cell store files replaced by this CellStore. More...
 
virtual const std::vector
< String > & 
get_replaced_files ()
 Returns all the cell store files replaced by this CellStore. More...
 
virtual void get_index_memory_stats (IndexMemoryStats *statsp)
 Returns amount of purgeable index memory available. More...
 
uint64_t bytes_read ()
 Returns the number of "uncompressed" bytes read from the underlying filesystem. More...
 
void decrement_index_refcount ()
 Decrement index reference count. More...
 
- Public Member Functions inherited from Hypertable::CellList
virtual ~CellList ()
 
virtual const char * get_start_row ()
 Returns the start row of this cell list. More...
 
virtual const char * get_end_row ()
 Returns the end row of this cell list. More...
 

Protected Types

typedef std::map
< SerializedKey, uint32_t > 
IndexMap
 
typedef BlobHashSet BloomFilterItems
 

Protected Member Functions

void add_index_entry (const SerializedKey key, uint32_t offset)
 
void create_bloom_filter (bool is_approx=false)
 
void load_index ()
 

Protected Attributes

Filesystemm_filesys
 
int32_t m_fd
 
std::string m_filename
 
IndexMap m_index
 
CellStoreBlockIndexArray
< uint32_t > 
m_index_map32
 
CellStoreTrailerV0 m_trailer
 
BlockCompressionCodecm_compressor
 
DynamicBuffer m_buffer
 
DynamicBuffer m_fix_index_buffer
 
DynamicBuffer m_var_index_buffer
 
uint32_t m_memory_consumed
 
DispatchHandlerSynchronizer m_sync_handler
 
uint32_t m_outstanding_appends
 
uint32_t m_offset
 
ByteString m_last_key
 
int64_t m_file_length
 
int64_t m_disk_usage
 
int m_file_id
 
float m_uncompressed_data
 
float m_compressed_data
 
uint32_t m_uncompressed_blocksize
 
BlockCompressionCodec::Args m_compressor_args
 
size_t m_max_entries
 
BloomFilterMode m_bloom_filter_mode
 
BloomFilterm_bloom_filter
 
BloomFilterItemsm_bloom_filter_items
 
uint32_t m_max_approx_items
 
- Protected Attributes inherited from Hypertable::CellStore
std::mutex m_mutex
 
IndexMemoryStats m_index_stats
 
std::vector< Stringm_replaced_files
 
uint64_t m_bytes_read
 
size_t m_block_count
 
uint32_t m_index_refcount
 
- Protected Attributes inherited from Hypertable::CellList
std::string m_start_row
 
std::string m_end_row
 

Additional Inherited Members

- Public Types inherited from Hypertable::CellList
typedef std::pair< const char
*, int64_t > 
SplitRowDataValue
 
typedef StlAllocator
< SplitRowDataValue
SplitRowDataAlloc
 
typedef std::map< const char
*, int64_t, LtCstr,
SplitRowDataAlloc
SplitRowDataMapT
 
- Static Public Attributes inherited from Hypertable::CellStore
static const char DATA_BLOCK_MAGIC [10]
 
static const char INDEX_FIXED_BLOCK_MAGIC [10]
 
static const char INDEX_VARIABLE_BLOCK_MAGIC [10]
 

Detailed Description

Definition at line 55 of file CellStoreV0.h.

Member Typedef Documentation

Definition at line 119 of file CellStoreV0.h.

typedef std::map<SerializedKey, uint32_t> Hypertable::CellStoreV0::IndexMap
protected

Definition at line 118 of file CellStoreV0.h.

Constructor & Destructor Documentation

CellStoreV0::CellStoreV0 ( Filesystem filesys)

Definition at line 56 of file CellStoreV0.cc.

CellStoreV0::~CellStoreV0 ( )
virtual

Definition at line 69 of file CellStoreV0.cc.

Member Function Documentation

void CellStoreV0::add ( const Key key,
const ByteString  value 
)
overridevirtual

Inserts a key/value pair into the cell list.

Parameters
keykey object
valueByteString representing value

Implements Hypertable::CellStore.

Definition at line 192 of file CellStoreV0.cc.

void CellStoreV0::add_index_entry ( const SerializedKey  key,
uint32_t  offset 
)
protected

Definition at line 429 of file CellStoreV0.cc.

uint16_t CellStoreV0::block_header_format ( )
overridevirtual

Implements Hypertable::CellStore.

Definition at line 661 of file CellStoreV0.cc.

int64_t Hypertable::CellStoreV0::block_index_memory_used ( )
inlineoverridevirtual

Returns the amount of memory consumed by the block index.

Returns
memory used by block index

Implements Hypertable::CellStore.

Definition at line 92 of file CellStoreV0.h.

int64_t Hypertable::CellStoreV0::bloom_filter_memory_used ( )
inlineoverridevirtual

Returns the amount of memory consumed by the bloom filter.

Returns
memory used by bloom filter

Implements Hypertable::CellStore.

Definition at line 91 of file CellStoreV0.h.

size_t Hypertable::CellStoreV0::bloom_filter_size ( )
inlineoverridevirtual

Return Bloom filter size.

Returns
size of bloom filter

Implements Hypertable::CellStore.

Definition at line 90 of file CellStoreV0.h.

float Hypertable::CellStoreV0::compression_ratio ( )
inlineoverridevirtual

Returns block compression ratio of this cell store.

Returns
compression ratio

Implements Hypertable::CellStore.

Definition at line 82 of file CellStoreV0.h.

void CellStoreV0::create ( const char *  fname,
size_t  max_entries,
PropertiesPtr props,
const TableIdentifier table_id = 0 
)
overridevirtual

Creates a new cell store.

Parameters
fnamename of file to contain the cell store
max_entriesmaximum number of entries the cell store is expected to have
propscellstore specific properties
table_idTable identifier

Implements Hypertable::CellStore.

Definition at line 102 of file CellStoreV0.cc.

BlockCompressionCodec * CellStoreV0::create_block_compression_codec ( )
overridevirtual

Creates a block compression codec suitable for decompressing the cell store's blocks.

Returns
pointer to compression codec

Implements Hypertable::CellStore.

Definition at line 90 of file CellStoreV0.cc.

void CellStoreV0::create_bloom_filter ( bool  is_approx = false)
protected

Definition at line 165 of file CellStoreV0.cc.

CellListScannerPtr CellStoreV0::create_scanner ( ScanContext scan_ctx)
overridevirtual

Creates a scanner on this cell list.

Parameters
scan_ctxsmart pointer to scan context
Returns
pointer to newly allocated scanner

Reimplemented from Hypertable::CellStore.

Definition at line 96 of file CellStoreV0.cc.

uint64_t Hypertable::CellStoreV0::disk_usage ( )
inlineoverridevirtual

Returns the disk used by this cell store.

If the cell store is opened with a restricted range, then it returns an estimate of the disk used by that range.

Returns
disk used by this cell store or portion thereof

Implements Hypertable::CellStore.

Definition at line 76 of file CellStoreV0.h.

void CellStoreV0::display_block_info ( )
overridevirtual

Displays block information to stdout.

Implements Hypertable::CellStore.

Definition at line 637 of file CellStoreV0.cc.

int64_t Hypertable::CellStoreV0::end_of_last_block ( )
inlineoverridevirtual

Returns the offset of the end of the last block in the cell store.

Returns
offset of end of last block

Implements Hypertable::CellStore.

Definition at line 89 of file CellStoreV0.h.

void CellStoreV0::finalize ( TableIdentifier table_identifier)
overridevirtual

Finalizes the creation of a cell store, by writing block index and metadata trailer.

Parameters
table_identifiertable identifier

Chop the Index buffers down to the exact length

Write fixed index

Write variable index

Set up m_index_map32

close file for writing

Set file length

Re-open file for reading

Implements Hypertable::CellStore.

Definition at line 271 of file CellStoreV0.cc.

int64_t Hypertable::CellStoreV0::get_blocksize ( )
inlineoverridevirtual

Returns the block size used for this cell store.

The block size is the amount of uncompressed key/value pairs to collect before compressing and storing as a compressed block in the cell store.

Returns
block size

Implements Hypertable::CellStore.

Definition at line 68 of file CellStoreV0.h.

int32_t Hypertable::CellStoreV0::get_fd ( )
inlineoverridevirtual

Returns the open file descriptor for the CellStore file.

Returns
open file descriptor

Implements Hypertable::CellStore.

Definition at line 96 of file CellStoreV0.h.

int Hypertable::CellStoreV0::get_file_id ( )
inlineoverridevirtual

Returns a unique identifier which identifies the underlying file for caching purposes.

Returns
unique file id

Implements Hypertable::CellStore.

Definition at line 85 of file CellStoreV0.h.

std::string& Hypertable::CellStoreV0::get_filename ( )
inlineoverridevirtual

Pathname of cell store file.

Returns
string reference to the cell store path name

Implements Hypertable::CellStore.

Definition at line 84 of file CellStoreV0.h.

int64_t Hypertable::CellStoreV0::get_total_entries ( )
inlineoverridevirtual

Returns the number of key/value pairs in the cell store.

Returns
Number of key/value pairs in list

Implements Hypertable::CellStore.

Definition at line 83 of file CellStoreV0.h.

CellStoreTrailer* Hypertable::CellStoreV0::get_trailer ( )
inlineoverridevirtual

Return a pointer to the trailer object for this cell store.

Returns
pointer to the internal trailer of this cell store

Implements Hypertable::CellStore.

Definition at line 109 of file CellStoreV0.h.

void CellStoreV0::load_index ( )
protected

Read index data

inflate fixed index

inflate variable index

Set up m_index_map32

Definition at line 473 of file CellStoreV0.cc.

bool CellStoreV0::may_contain ( const void *  ptr,
size_t  len 
)

Definition at line 630 of file CellStoreV0.cc.

bool Hypertable::CellStoreV0::may_contain ( const String key)
inline

Definition at line 70 of file CellStoreV0.h.

bool CellStoreV0::may_contain ( ScanContext scan_ctx)
overridevirtual

Bloom filter lookup.

Parameters
scan_ctxScan context
Returns
true if cell store may contain row referenced by scan_ctx

Implements Hypertable::CellStore.

Definition at line 601 of file CellStoreV0.cc.

void CellStoreV0::open ( const String fname,
const String start_row,
const String end_row,
int32_t  fd,
int64_t  file_length,
CellStoreTrailer trailer 
)
overridevirtual

Opens a cell store with possibly a restricted view.

When a range splits, the cell stores that comprise the range get shared between the two newly created ranges. This method allows each of the two ranges to open the same cell store but view different portions of it.

Parameters
fnamepathname of file containing cell store
start_rowrestricts view of this store to key/value pairs that are greater than this value
end_rowrestricts view of this store to key/value pairs that are less than or equal to this value
fdcell store file descriptor
file_lengthlength of cell store file
trailerpointer to trailer object

Sanity check trailer

Implements Hypertable::CellStore.

Definition at line 446 of file CellStoreV0.cc.

uint64_t Hypertable::CellStoreV0::purge_indexes ( )
inlineoverridevirtual

Purges bloom filter and block indexes.

Returns
amount of memory purged

Implements Hypertable::CellStore.

Definition at line 93 of file CellStoreV0.h.

int32_t Hypertable::CellStoreV0::reopen_fd ( )
inlineoverridevirtual

Closes and reopens the underlying CellStore file.

Returns
new file descriptor

Implements Hypertable::CellStore.

Definition at line 101 of file CellStoreV0.h.

bool Hypertable::CellStoreV0::restricted_range ( )
inlineoverridevirtual

Returns true if the cellstore was opened with a restricted range.

Returns
true if cellstore opened with restricted range

Implements Hypertable::CellStore.

Definition at line 94 of file CellStoreV0.h.

Member Data Documentation

BloomFilter* Hypertable::CellStoreV0::m_bloom_filter
protected

Definition at line 146 of file CellStoreV0.h.

BloomFilterItems* Hypertable::CellStoreV0::m_bloom_filter_items
protected

Definition at line 147 of file CellStoreV0.h.

BloomFilterMode Hypertable::CellStoreV0::m_bloom_filter_mode
protected

Definition at line 145 of file CellStoreV0.h.

DynamicBuffer Hypertable::CellStoreV0::m_buffer
protected

Definition at line 128 of file CellStoreV0.h.

float Hypertable::CellStoreV0::m_compressed_data
protected

Definition at line 140 of file CellStoreV0.h.

BlockCompressionCodec* Hypertable::CellStoreV0::m_compressor
protected

Definition at line 127 of file CellStoreV0.h.

BlockCompressionCodec::Args Hypertable::CellStoreV0::m_compressor_args
protected

Definition at line 142 of file CellStoreV0.h.

int64_t Hypertable::CellStoreV0::m_disk_usage
protected

Definition at line 137 of file CellStoreV0.h.

int32_t Hypertable::CellStoreV0::m_fd
protected

Definition at line 122 of file CellStoreV0.h.

int Hypertable::CellStoreV0::m_file_id
protected

Definition at line 138 of file CellStoreV0.h.

int64_t Hypertable::CellStoreV0::m_file_length
protected

Definition at line 136 of file CellStoreV0.h.

std::string Hypertable::CellStoreV0::m_filename
protected

Definition at line 123 of file CellStoreV0.h.

Filesystem* Hypertable::CellStoreV0::m_filesys
protected

Definition at line 121 of file CellStoreV0.h.

DynamicBuffer Hypertable::CellStoreV0::m_fix_index_buffer
protected

Definition at line 129 of file CellStoreV0.h.

IndexMap Hypertable::CellStoreV0::m_index
protected

Definition at line 124 of file CellStoreV0.h.

CellStoreBlockIndexArray<uint32_t> Hypertable::CellStoreV0::m_index_map32
protected

Definition at line 125 of file CellStoreV0.h.

ByteString Hypertable::CellStoreV0::m_last_key
protected

Definition at line 135 of file CellStoreV0.h.

uint32_t Hypertable::CellStoreV0::m_max_approx_items
protected

Definition at line 148 of file CellStoreV0.h.

size_t Hypertable::CellStoreV0::m_max_entries
protected

Definition at line 143 of file CellStoreV0.h.

uint32_t Hypertable::CellStoreV0::m_memory_consumed
protected

Definition at line 131 of file CellStoreV0.h.

uint32_t Hypertable::CellStoreV0::m_offset
protected

Definition at line 134 of file CellStoreV0.h.

uint32_t Hypertable::CellStoreV0::m_outstanding_appends
protected

Definition at line 133 of file CellStoreV0.h.

DispatchHandlerSynchronizer Hypertable::CellStoreV0::m_sync_handler
protected

Definition at line 132 of file CellStoreV0.h.

CellStoreTrailerV0 Hypertable::CellStoreV0::m_trailer
protected

Definition at line 126 of file CellStoreV0.h.

uint32_t Hypertable::CellStoreV0::m_uncompressed_blocksize
protected

Definition at line 141 of file CellStoreV0.h.

float Hypertable::CellStoreV0::m_uncompressed_data
protected

Definition at line 139 of file CellStoreV0.h.

DynamicBuffer Hypertable::CellStoreV0::m_var_index_buffer
protected

Definition at line 130 of file CellStoreV0.h.


The documentation for this class was generated from the following files: