此文件为leveldb的c++接口文件,用c++的方式调用leveldb只需要包含此文件即可。
在此文件中定义了leveldb对外的接口DB,其具体的实现由db/db_impl.h中的DBImpl类实现。
DB的定义如下:
class LEVELDB_EXPORT DB {
public:
//打开数据库
static Status Open(const Options& options, //options为打开的方式
const std::string& name, //文件名
DB** dbptr); //数据库实例对象
DB() = default;//设置默认构造函数
DB(const DB&) = delete;//禁止拷贝构造
DB& operator=(const DB&) = delete;//禁止赋值操作符
virtual ~DB();
//写入键值对
virtual Status Put(const WriteOptions& options,
const Slice& key,
const Slice& value) = 0;
//删除键值对
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;
//此函数将返回一个可以迭代遍历数据库的句柄
virtual Iterator* NewIterator(const ReadOptions& options) = 0;
//返回数据库当前状态的快照
virtual const Snapshot* GetSnapshot() = 0;
//释放之前获取的快照
virtual void ReleaseSnapshot(const Snapshot* snapshot) = 0;
//返回相关属性的状态
//属性名包括:
//"leveldb.num-files-at-level<N>"返回level N的文件数目
//"leveldb.stats"返回内部操作的统计情况
//"leveldb.sstables"返回sstables的情况
//"leveldb.approximate-memory-usage"返回数据库所使用的内存的近似字节数
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;
};
//删除数据库
LEVELDB_EXPORT Status DestroyDB(const std::string& name,
const Options& options);
//修复数据库
LEVELDB_EXPORT Status RepairDB(const std::string& dbname,
const Options& options);
该接口的具体实现在db/db_impl.h中,后续会对具体的实现进行分析。
学习是一种慰藉,编程是一种情怀,技术提升永不可辜负!