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

ydb的内存模型

 2009-09-10 00:00:00 来源:WEB开发网   
核心提示: 先来看它的几个数据结构: 首先就是db,它表示了当前的一个db对象,ydb的内存模型(2),包括了索引,以及log文件的表示,也就是写入的数据文件的number以及在当前文件的偏移,intcommited_last_record_logno;u64commited_last_record_off

先来看它的几个数据结构:

首先就是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; 
};

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

Tags:ydb 内存 模型

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