17#include "common/sys/rc.h"
18#include "common/lang/vector.h"
19#include "common/lang/string.h"
20#include "common/lang/unordered_map.h"
21#include "common/lang/memory.h"
22#include "common/lang/span.h"
23#include "sql/parser/parse_defs.h"
24#include "storage/buffer/disk_buffer_pool.h"
25#include "storage/clog/disk_log_handler.h"
26#include "storage/buffer/double_write_buffer.h"
27#include "oblsm/include/ob_lsm.h"
61 RC
init(
const char *
name,
const char *dbpath,
const char *trx_kit_name,
const char *log_handler_name,
62 const char *storage_engine =
"heap");
70 RC
create_table(
const char *table_name, span<const AttrInfoSqlNode> attributes,
const vector<string> &primary_keys,
71 const StorageFormat storage_format = StorageFormat::ROW_FORMAT);
83 const char *
name()
const;
86 void all_tables(vector<string> &table_names)
const;
103 string path()
const {
return path_; }
121 StorageEngine get_storage_engine()
123 StorageEngine engine = StorageEngine::UNKNOWN_ENGINE;
124 if (storage_engine_.length() == 0) {
125 engine = StorageEngine::HEAP;
126 }
else if (0 == strcasecmp(storage_engine_.c_str(),
"heap")) {
127 engine = StorageEngine::HEAP;
128 }
else if (0 == strcasecmp(storage_engine_.c_str(),
"lsm")) {
129 engine = StorageEngine::LSM;
131 engine = StorageEngine::UNKNOWN_ENGINE;
149 string storage_engine_;
BufferPool的管理类
Definition: disk_buffer_pool.h:323
一个DB实例负责管理一批表
Definition: db.h:46
RC open_all_tables()
打开所有的表。在数据库初始化的时候会执行
Definition: db.cpp:198
LogHandler & log_handler()
获取当前数据库的日志处理器
Definition: db.cpp:415
string name_
数据库名称
Definition: db.h:137
oceanbase::ObLsm * lsm_
当前数据库的 LSM-Tree 存储引擎
Definition: db.h:143
RC init_dblwr_buffer()
初始化数据库的double buffer pool
Definition: db.cpp:403
unique_ptr< TrxKit > trx_kit_
当前数据库的事务管理器
Definition: db.h:142
RC init_meta()
初始化元数据。在数据库初始化的时候,加载元数据
Definition: db.cpp:318
unordered_map< string, Table * > opened_tables_
当前所有打开的表
Definition: db.h:139
BufferPoolManager & buffer_pool_manager()
获取当前数据库的buffer pool管理器
Definition: db.cpp:416
unique_ptr< BufferPoolManager > buffer_pool_manager_
当前数据库的buffer pool管理器
Definition: db.h:140
RC flush_meta()
刷新数据库的元数据到磁盘中。每次执行sync时会执行此操作
Definition: db.cpp:358
RC create_table(const char *table_name, span< const AttrInfoSqlNode > attributes, const vector< string > &primary_keys, const StorageFormat storage_format=StorageFormat::ROW_FORMAT)
创建一个表
Definition: db.cpp:153
LSN check_point_lsn_
当前数据库的检查点LSN。会记录到磁盘中。
Definition: db.h:148
TrxKit & trx_kit()
获取当前数据库的事务管理器
Definition: db.cpp:417
RC init(const char *name, const char *dbpath, const char *trx_kit_name, const char *log_handler_name, const char *storage_engine="heap")
初始化一个数据库实例
Definition: db.cpp:52
string path_
数据库文件存放的目录
Definition: db.h:138
const char * name() const
当前数据库的名称
Definition: db.cpp:237
unique_ptr< LogHandler > log_handler_
当前数据库的日志处理器
Definition: db.h:141
Table * find_table(const char *table_name) const
根据表名查找表
Definition: db.cpp:179
void all_tables(vector< string > &table_names) const
列出所有的表
Definition: db.cpp:239
RC recover()
恢复数据。在数据库初始化的时候运行。
Definition: db.cpp:285
int32_t next_table_id_
给每个table都分配一个ID,用来记录日志。这里假设所有的DDL都不会并发操作,所以相关的数据都不上锁
Definition: db.h:146
RC sync()
将所有内存中的数据,刷新到磁盘中。
Definition: db.cpp:246
对外提供服务的CLog模块
Definition: log_handler.h:40
事务管理器
Definition: trx.h:99
ObLsm is a key-value storage engine for educational purpose. ObLsm learned a lot about design from le...
Definition: ob_lsm.h:29