WEB开发网
开发学院软件开发Java ydb的内存模型 阅读

ydb的内存模型

 2009-09-10 00:00:00 来源:WEB开发网   
核心提示: item表示了索引的红黑树的叶子节点: Java代码 structitem{structrb_nodenode;///当前key对应的数据所在的文件的number,intlogno;///当前key所对应的数据所在的文件的偏移u64value_offset;///数据的大小,ydb的内存模型(3

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结构,它结构很简单,就是表示了一个数据文件的句柄,文件名以及大小:

上一页  1 2 3 4 5 6 7  下一页

Tags:ydb 内存 模型

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接