首页 > 其他分享 >leveldb学习笔记之三——include/leveldb/db.h

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

时间:2022-11-07 13:06:12浏览次数:66  
标签:Status leveldb const db DB virtual include options


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

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


标签:Status,leveldb,const,db,DB,virtual,include,options
From: https://blog.51cto.com/u_15862521/5828912

相关文章

  • leveldb学习笔记之二——源码目录结构
    说明从今天开始,将正式进入leveldb源码的学习。leveldb主要采用c++实现,整体代码比较规范,除了学习存储相关的原理,还可以学习c++相关的知识,提升c++的技巧。目录leveldb的目录结......
  • leveldb学习笔记之六——db/memtable.h
    db数据在内存中的存储格式,写操作的数据都会先写到memtable中类classMemTable{public://构造函数,不允许隐式转换,参数为内部key比较器explicitMemTable(constInte......
  • leveldb学习笔记之一——clion调用leveldb使用示例
    前言2018年杀入区块链,算是接触了分布式、数据存储这一系列的知识,前段时间接触某手机厂商的技术人员,才发现自己在存储方面知识的不足,因此这段时间准备沉下心来学习学习。接下......
  • leveldb学习笔记之十——leveldb/util/cache.cc
    cache.cc中的代码是Cache的实现代码,其中主要涉及到LRUHandle、HandleTable、LRUCache以及ShardedLRUCache。它们与Cache的关系如下:ShardedLRUCache是抽象类Cache的实现,提供......
  • nginx 代理mongodb redis 配置
    worker_processes1;events{worker_connections1024;}stream{ upstreamapp-ssh{ server192.168.25.130:22; } upstreamapp-redis{ serve......
  • 9个GaussDB常用的对象语句
    摘要:本文介绍了9个GaussDB常用的对象语句,希望对大家有帮助。本文分享自华为云社区《GaussDB对象相关语句》,作者:酷哥。1.常用函数pg_database_size()--数据库使用的......
  • ubuntu下adb devices显示unauthorized解决方法
    找了好几篇文章,发现​​这篇文章​​的解决方式是靠谱的,解决方式如下:rm~/.android/adbkeyaptupdateaptinstalladb......
  • Rust 编程中使用 leveldb 的简单例子
    前言最近准备用Rust写一个完善的blockchain的教学demo,在持久化时考虑到使用leveldb。通过查阅文档,发现Rust中已经提供了使用leveldb的接口。将官方的例子修改了下,能够运行通......
  • JDBC和JPA关系
    1.JDBC和JPA的区别不同标准:jdbc是数据库的统一接口标准;jpa是orm框架的统一接口标准。用法区别:jdbc更注重数据库,orm则更注重于java代码,但是实际上jpa实现的框架底层还是......
  • redis的rdb与aof
    Redis持久化提供了多种不同级别的持久化方式:RDB持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-timesnapshot)。AOF持久化记录服务器执行的所有写操作......