资源描述:
《berkeley db 课程设计答辩》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、BerkeleyDB课程设计答辩张天意周冰楠9班第1小组介绍基本数据结构和函数B-Tree设计与逻辑实现UB-Tree设计与逻辑实现性能分析感悟和结语实验环境和性能测试指标实验环境计算机:Intel®Core™i5CPU/4GBRAM操作系统:Ubuntu12.03编译器:gcc程序语言:C已有源代码:BerkeleyDB1.86性能测试指标建立的索引大小建立索引的时间查询时I/O读写情况Intel,IntelCore是英特尔公司在美国和/或其他国家和地区的商标。基本数据结构和函数Berkeley
2、DB课程设计答辩数据结构名描述与用途定义位置DB数据库定义DB.hDBTB-Tree节点结构,包括key,data均是此结构DB.hEPG记录寻址结构,包含pgno和indexbtree.hEPGNO记录寻址结构,包含pgno指针和indexbtree.hBTREEINFOB树建立时候系列参数,包括缓冲大小、页数、支持重复与否等btree.hBTREE保存在内存中的树结构,可调用internal中系列函数btree.hPAGEB-Tree中页属性结构,包含页号、指针等btree.hBerkeley
3、DB1.86数据结构函数名功能dbopen打开数据库dbclose关闭数据库__bt_seq顺序访问B树__bt_ret获取指定记录的信息__bt_put往btree插入数据__bt_defcmp比较key大小函数名功能__bt_first找到指定键值的第一条记录__bt_seqset从指定键值顺序访问__bt_seqadv提前进行顺序访问mpool_put获取页面基本信息在实验过程中,还调用了string系列函数,以及atoi,atof,sscanf等库函数。BerkeleyDB1.86函数B-
4、TREE设计与逻辑实现BerkeleyDB课程设计答辩B-Tree设计与实现根据属性shipdate对lineitem表建立B-Tree索引;在(1)基础上,根据属性discount对lineitem表建立索引;完成范围查询。本质是建立两个索引,其中一个是“索引的索引”。查询条件设计思路index2index1lineitem.tbl共同的问题如何利用Berkeley代码?哪些代码可以用?还需要添加哪些部分?Berkeley代码有几大部分?我需要实现/解决哪些
5、问题?Berkeley中哪些部分是和这个问题相关的?从需求出发,按需调配相关模块建立B-Tree索引Index1如何从lineitem里逐行读取条目,并分离出需要的key和data部分?sscanf(char*buffer,char*format,[argument]...)分离后的key和data应该如何插入?来源:dbtestdbp->put(dbp,&key,&data,0);dbp指向需要插入的索引key,data作为DBT结构传入函数需求分析建立index112345
6、6789101112131415161718DB*dbp=(DB*)malloc(sizeof(DB*)),DBTdata,key;char*fname=“index1_new.db”;charbuf[8*1024];FILE*ifp=fopen(file_name,"r");while(fgets(buf,sizeof(buf),ifp)!=NULL){sscanf(buf,"%*[^
7、]
8、%*[^
9、]
10、%*[^
11、]
12、%*[^
13、]
14、%*[^
15、]
16、%*[^
17、]
18、%*[^
19、]
20、%*[^
21、]
22、%*[^
23、
24、]
25、%*[^
26、]
27、%10[^
28、]",mydata.key);key.data=mydata.key;key.size=strlen(mydata.key)+1;data.data=buf;data.size=strlen(buf)+1;dbp->put(dbp,&key,&data,0);}逻辑实现规格化keydata获得index1index1lineitem.tbl94/1/1
29、0.06
30、XXXXX94/1/194/1/1
31、0.06
32、XXXXX建立B-Tree索引index2如何遍历inde
33、x1?__bt_seq(dbp,key,data,flags)来源:bt_get()如何获取对应的页号和槽号?利用EPG结构,来源:bt_seq()__bt_seqset(t,&e,&key,flags);页号和槽号即构成rid。如何进一步获取index2所需的key呢?__bt_ret(t,&e,&key,&t->bt_rkey,&data,&t->bt_rdata,0);需求分析123456789101112131415//Thedetailsabovehavebeenomit