ydb的内存模型
2009-09-10 00:00:00 来源:WEB开发网先来看它的几个数据结构:
首先就是db,它表示了当前的一个db对象,包括了索引,以及log文件的表示。
Java代码
struct db {
u32 magic;
///这个就是你的数据以及index的存储文件的目录。
char *top_dir;
///tree用来表示index。
struct tree tree;
///保存了当前的所有的数据文件的信息。
struct loglist loglist;
///
int overcommit_ratio;
int flags;
///下面这几个是用来gc。
int gc_enabled;
int gc_running;
int gc_finished;
pthread_t gc_thread;
pthread_mutex_t lock; /**/
};
接下来就是tree结构,它用来表示数据index的根结点。。
Java代码
struct tree {
char *fname; /* Base name of index file. */
///这里是为了防止索引文件被破坏,因此会有个备份。
char *fname_new; /* Name of new index file, *.new */
char *fname_old; /* Name of previous index, *.old */
///红黑树的根结点。
struct rb_root root;
///表示最后一次提交,也就是写入的数据文件的number以及在当前文件的偏移。
int commited_last_record_logno;
u64 commited_last_record_offset;
///和上面的区别就是这里的两个值是没有提交的。
int last_record_logno;
u64 last_record_offset;
///key的个数和大小。
u64 key_counter;
u64 key_bytes; /* used to store keys (incl header and padding) */
u64 value_bytes; /* used to store values (incl header and padding) */
///这个域包含了每个数据文件的引用计数(也就是每个数据文件所包含的元数据的个数)
r_arr refcnt;
};
更多精彩
赞助商链接