MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
|
一个DB实例负责管理一批表 更多...
#include <db.h>
Public 成员函数 | |
RC | init (const char *name, const char *dbpath) |
初始化一个数据库实例 更多... | |
RC | create_table (const char *table_name, int attribute_count, const AttrInfoSqlNode *attributes) |
Table * | find_table (const char *table_name) const |
Table * | find_table (int32_t table_id) const |
const char * | name () const |
void | all_tables (std::vector< std::string > &table_names) const |
RC | sync () |
RC | recover () |
CLogManager * | clog_manager () |
Private 成员函数 | |
RC | open_all_tables () |
Private 属性 | |
std::string | name_ |
std::string | path_ |
std::unordered_map< std::string, Table * > | opened_tables_ |
std::unique_ptr< CLogManager > | clog_manager_ |
int32_t | next_table_id_ = 0 |
给每个table都分配一个ID,用来记录日志。这里假设所有的DDL都不会并发操作,所以相关的数据都不上锁 | |
一个DB实例负责管理一批表
当前DB的存储模式很简单,一个DB对应一个目录,所有的表和数据都放置在这个目录下。 启动时,从指定的目录下加载所有的表和元数据。
RC Db::init | ( | const char * | name, |
const char * | dbpath | ||
) |
初始化一个数据库实例
从指定的目录下加载指定名称的数据库。这里就会加载dbpath目录下的数据。
name | 数据库名称 |
dbpath | 当前数据库放在哪个目录下 |