ydb的内存模型
2009-09-10 00:00:00 来源:WEB开发网item表示了索引的红黑树的叶子节点:
Java代码
struct item {
struct rb_node node;
///当前key对应的数据所在的文件的number。
int logno;
///当前key所对应的数据所在的文件的偏移
u64 value_offset;
///数据的大小。
u32 value_sz;
///key的大小以及key的值。
u16 key_sz;
char key[];
};
还有一个index_item,它就是索引文件的直接映射,它和上面的item很类似就是加了校验位,以及magic,我们最终要通过这个结构来生成item。
Java代码
struct index_item{
u32 magic;
u32 checksum;
int logno;
u64 value_offset;
u16 key_sz;
u32 value_sz;
char key[];
};
然后是loglist,它其实是包含了log数据结构的一个数组。
Java代码
struct loglist {
///这里包含了log(也就是数据文件)的数组。
r_arr logs;
char *top_dir;
char *unlink_base;
///当前最新的一个文件的number,以及fd。(由于ydb的结构类似log,因此每次写都是写在最新的那个文件)
int write_logno;
int write_fd;
u64 min_log_size;
u64 total_bytes; /* total size of all logs */
u64 appended_bytes;
}
然后来看log结构,它结构很简单,就是表示了一个数据文件的句柄,文件名以及大小:
更多精彩
赞助商链接