RocksdbIterator
2017-04-09 11:40:28 0 举报
登录查看完整内容
为你推荐
查看更多
抱歉,暂无相关内容
RocksdbIterator是C++编程语言中,RocksDB数据库的迭代器类。它提供了一种高效的方式,用于遍历数据库中的键值对。通过使用迭代器,可以按照一定的顺序访问数据库中的数据,而无需知道数据的确切位置或存储方式。 迭代器的主要功能包括:获取当前键值对、前进到下一个键值对、判断是否到达数据库末尾等。在使用迭代器时,需要注意避免同时修改数据库和迭代器的状态,以免引发错误或不一致的结果。 总之,RocksdbIterator是一个强大的工具,可以帮助开发者更加灵活地处理和管理RocksDB数据库中的数据。
作者其他创作
大纲/内容
Cleanable
# Cleanup cleanup_;
IteratorWapper
- InternalIterator* iter_- bool valid_- Slice key_
LevelFileIteratorState
InternalIterator* NewSecondaryIterator(const Slice& meta_handle)
- TableCache* table_cache_- bool for_compaction_- int level_
BlockBasedTable::BlockEntryIteratorState
+ InternalIterator* NewSecondaryIterator(const Slice& index_value)
- BlockBasedTable* table_
InternalIterator
Iterator
TwoLevelIterator
+ virtual void Seek(const Slice& target)+ virtual void SeekForPrev(const Slice& target)+ virtual void SeekToFirst()+ virtual void SeekToLast()+ virtual void Next()+ virtual void Prev()+ virtual bool Valid() const+ virtual Slice key() const+ virtual Slice value() const+ virtual Status status() const+ virtual void SetPinnedItersMgr(...)+ virtual bool IsKeyPinned() const+ virtual bool IsValuePinned() const- void SaveError(const Status& s)- void SkipEmptyDataBlocksForward()- void SkipEmptyDataBlocksBackward()- void SetSecondLevelIterator(InternalIterator* iter)- void InitDataBlock()
- TwoLevelIteratorState* state_- IteratorWrapper first_level_iter_- IteratorWrapper second_level_iter_- PinnedIteratorsManager* pinned_iters_mgr_- std::string data_block_handle_
某一层的Iterator是一个TwoLevelIterator,包括:1. first_level_iter_是LevelFileNumIterator2. state_是LevelFileIteratorState,调用NewSecondaryIterator可以通过first_level_iter_拿到对应sst文件的Iterator
TableReader
MergeIterator
+ virtual void AddIterator(InternalIterator* iter)+ virtual bool Valid() const+ virtual void SeekToFirst()+ virtual void SeekToLast()+ virtual void Seek(const Slice& target)+ virtual void SeekForPrev(const Slice& target)+ virtual void Next()+ virtual void Prev()+ virtual Slice key() const+ virtual Slice value() const+ virtual Status status() const+ virtual void SetPinnedItersMgr( PinnedIteratorsManager* pinned_iters_mgr)+ virtual bool IsKeyPinned() const+ virtual bool IsValuePinned() const- void ClearHeaps()- void InitMaxHeap()
单个sst文件的Iterator是一个TwoLevelIterator,包含:1. first_level_iter_是(Index)BlockIter2. state_是BlockEntryIteratorState,调用NewSecondaryIterator可以通过first_level_iter_拿到对应的(Data)BlockIter
first_level_iter_: (Index)BlockIter
BlockBaseTable
+ static Status Open(...)+ InternalIterator* NewIterator(...)+ Status Get(...)- static InternalIterator* NewDataBlockIterator(...)- InternalIterator* NewIndexIterator(...)- Status CreateIndexReader(...)- static Status ReadMetaBlock(...)- static FilterBlockReader* ReadFilter(Rep* rep)
first_level_iter_
LevelFileNumIterator
- const LevelFilesBrief* flevel_- uint32_t index_- mutable FileDescriptor current_value_
BlockIter
ArenaWrappedDBIter
+ virtual Arena* GetArena()+ virtual RangeDelAggregator* GetRangeDelAggregator()+ virtual void SetDBIter(DBIter* iter)+ virtual void SetIterUnderDBIter(InternalIterator* iter)
- DBIter* db_iter_- Arena arena_
TwoLevelIteratorState
+ virtual InternalIterator* NewSecondaryIterator(const Slice& handle) = 0
MemTableIterator
MemTableRep::Iterator* iter_
DBIter
- InternalIterator* iter_- PinnedIteratorsManager pinned_iters_mgr_
0 条评论
回复 删除
下一页