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

ydb的内存模型

 2009-09-10 00:00:00 来源:WEB开发网   
核心提示: Java代码 structlog{intfd;char*fname;u64file_size;};然后我们主要来看ydb_open的实现,其他的方法就大概描述下: Java代码 #defineYDB_CREAT(0x01)#defineYDB_RDONLY(0x02)#defineYDB_GCD

Java代码

struct log { 
 int fd; 
 char *fname; 
 u64 file_size; 
};

然后我们主要来看ydb_open的实现,其他的方法就大概描述下:

Java代码

#define YDB_CREAT    (0x01) 
#define YDB_RDONLY   (0x02) 
#define YDB_GCDISABLE  (0x04) 
YDB ydb_open(char *top_dir, 
   int overcommit_ratio, 
   unsigned long long min_log_size, 
   int flags)

其中第一个参数是索引以及数据文件的目录,第二个参数表示,第三个参数表示数据文件的最小值,最后一个也就是上面的事个宏。意思基本就是字面的意思。

这次我们将代码分片(省略了一些合法性判断)来看。

首先新建一个db对象,然后将传递进来的参数赋值给它,并

Java代码

 struct db *db = (struct db *)zmalloc(sizeof(struct db)); 
 db->magic = YDB_STRUCT_MAGIC; 
 db->top_dir = strdup(top_dir); 
 db->overcommit_ratio = overcommit_ratio; 
 db->lock = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER; 
 db->flags = flags; 
 

然后通过top_dir,来得到索引的文件名,这里可以看到索引的文件名为top_dir/index.ydb.得到文件名后,进入 tree_open,将索引加载到内存中,这里可以看到传递给tree_open的logno是一个指针,这标明当它返回后会修改这个值,最终这个值会被修改为当前的写的那个数据文件的number。

最后调用loglist_open来初始化loglist,也就是数据文件的链表。

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

Tags:ydb 内存 模型

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