leveldb学习笔记之三——include/leveldb/db.h

此文件为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中,后续会对具体的实现进行分析。

学习是一种慰藉,编程是一种情怀,技术提升永不可辜负!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值