1、leveldb::DB的成员函数
基类leveldb::DB,提供面向用户的接口,用户主要使用其提供的接口来操作数据库,最重要的操作为增、删、查找。
class DB {
public:
static Status Open(const Options& options,const std::string& name,DB** dbptr);//打开一个名为name的数据库,并存放在dbptr中,会调用Recover()
DB() { }//构造数据库
virtual ~DB();
virtual Status Put(const WriteOptions& options,const Slice& key,const Slice& value) = 0;//向数据库中写一条KV数据
virtual Status Delete(const WriteOptions& options, const Slice& key) = 0;//从数据库中删除一条记录
virtual Status Write(const WriteOptions& options, WriteBatch* updates) = 0;//批量写入数据
virtual Status Get(const ReadOptions& options,const Slice& key, std::string* value) = 0;//在数据库中查找key对应的value
virtual Iterator* NewIterator(const ReadOptions& options) = 0;
virtual const Snapshot* GetSnapshot() = 0;
virtual void ReleaseSnapshot(const Snapshot* snapshot) = 0;
virtual bool GetProperty(const Slice& property, std::string* value) = 0;
virtual void GetApproximateSizes(const Range* range, int n,uint64_t* sizes) = 0;
virtual void CompactRange(const Slice* begin, const Slice* end) = 0;
private:
// No copying allowed
DB(const DB&);
void operator=(const DB&);
};
2、leveldb::DBImpl
类leveldb::DBImpl派生自leveldb::DB,是leveldb最核心的部分。
leveldb::DBImpl中包含了大量的函数,包括派生自leveldb::DB的接口,一些用于测试的函数,还有一些用于后台处理的内部函数,用于完成后台合并等操作。下面是它的成员函数,暂时忽略测试函数和用于数据库恢复的函数以及错误处理的函数。