資源簡(jiǎn)介
步驟為數(shù)據(jù)庫文件創(chuàng)建一個(gè)B+樹索引:
(1)生成數(shù)據(jù)文件,
(2)為數(shù)據(jù)庫文件的屬性創(chuàng)建B+ 樹文件。
(3)給定鍵值,通過B+樹進(jìn)行查找。同時(shí)比較與直接掃描表的性能差別。(利用B+樹時(shí)可根據(jù)內(nèi)存大小決定放置多少層次到內(nèi)存)
(4)給定鍵值,完成數(shù)據(jù)插入,并按需更新B+樹。
(5)給定鍵值,完成數(shù)據(jù)刪除,并按需更新B+樹
資源包括:Java源碼及實(shí)驗(yàn)報(bào)告!

代碼片段和文件信息
package?com.csz.btree;
import?java.io.BufferedReader;
import?java.io.BufferedWriter;
import?java.io.File;
import?java.io.FileReader;
import?java.io.FileWriter;
public?class?BPTree?implements?Tree?{
private?static?int?size?=?100000;//總記錄數(shù)100000
private?static?int?sizePerBlock?=?40;//由于磁盤上每個(gè)block大小是4KB每條記錄大小100B所以每個(gè)block上記錄條數(shù)為40
private?static?int?blockSize?=?(size%sizePerBlock)==0?(size/sizePerBlock):(size/sizePerBlock)+1;?//總的塊數(shù)
private?static?String?fileDirectory?=?“F:\\Records\\“;
private?static?String?recordFile?=?fileDirectory+“record.txt“;
/**?根節(jié)點(diǎn)?*/
protected?Node?root;
/**?階數(shù),M值?*/
protected?int?order;
/**?葉子節(jié)點(diǎn)的鏈表頭*/
protected?Node?head;
public?Node?getHead()?{
return?head;
}
public?void?setHead(Node?head)?{
this.head?=?head;
}
public?Node?getRoot()?{
return?root;
}
public?void?setRoot(Node?root)?{
this.root?=?root;
}
public?int?getOrder()?{
return?order;
}
public?void?setOrder(int?order)?{
this.order?=?order;
}
@Override
public?object?get(Comparable?key)?{
return?root.get(key);
}
@Override
public?boolean?remove(Comparable?key)?{
return?root.remove(key?this);
}
@Override
public?void?insertOrUpdate(Comparable?key?object?obj)?{
root.insertOrUpdate(key?obj?this);
}
public?BPTree(int?order){
if?(order?3)?{
System.out.print(“order?must?be?greater?than?2“);
System.exit(0);
}
this.order?=?order;
root?=?new?Node(true?true);
head?=?root;
}
public?void?creatRecords()?throws?Exception{
File?file?=?new?File(recordFile);
BufferedWriter?out?=?new?BufferedWriter(new?FileWriter(file));
System.out.println(“Creating?records...“);
for(int?j?=?0;j for(int?i?=0;i if(!(i?==?0?&&?j?==?0)){
out.newLine();
}
out.write(new?Record().getRecordString());
}
}
out.close();
}
public?static?void?readRecords(BPTree?btree)?throws?Exception{
BufferedReader?in?=?new?BufferedReader(?new?FileReader(recordFile));
String?line;
System.out.println(“Building?B+?Tree...“);
for(int?j?=?0;j for(int?i?=0;i line?=?in.readLine();
Record?r?=?new?Record(line);
int?key?=?r.getA();
btree.insertOrUpdate(key?key);
}
}
in.close();
}
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件?????219490??2016-01-12?13:37??Java實(shí)現(xiàn)B+Tree.docx
?????文件????????301??2015-12-31?08:23??B+Tree-Java源碼\.classpath
?????文件????????382??2015-12-31?08:24??B+Tree-Java源碼\.project
?????文件????????629??2014-12-18?19:39??B+Tree-Java源碼\.settings\org.eclipse.jdt.core.prefs
?????文件???????4152??2015-12-24?18:40??B+Tree-Java源碼\bin\com\csz\btree\BPTree.class
?????文件??????11557??2015-12-24?18:40??B+Tree-Java源碼\bin\com\csz\btree\Node.class
?????文件???????1642??2015-12-24?18:40??B+Tree-Java源碼\bin\com\csz\btree\Record.class
?????文件???????2466??2015-12-24?18:40??B+Tree-Java源碼\bin\com\csz\btree\TestMain.class
?????文件????????496??2015-12-24?18:40??B+Tree-Java源碼\bin\com\csz\btree\Tree.class
?????文件???????2456??2015-12-31?08:21??B+Tree-Java源碼\src\com\csz\btree\BPTree.java
?????文件??????17613??2015-12-31?08:22??B+Tree-Java源碼\src\com\csz\btree\Node.java
?????文件????????802??2015-12-31?08:22??B+Tree-Java源碼\src\com\csz\btree\Record.java
?????文件???????1803??2015-12-31?08:22??B+Tree-Java源碼\src\com\csz\btree\TestMain.java
?????文件????????279??2015-12-31?08:22??B+Tree-Java源碼\src\com\csz\btree\Tree.java
?????目錄??????????0??2016-01-12?13:40??B+Tree-Java源碼\bin\com\csz\btree
?????目錄??????????0??2016-01-12?13:40??B+Tree-Java源碼\src\com\csz\btree
?????目錄??????????0??2016-01-12?13:40??B+Tree-Java源碼\bin\com\csz
?????目錄??????????0??2016-01-12?13:40??B+Tree-Java源碼\src\com\csz
?????目錄??????????0??2016-01-12?13:40??B+Tree-Java源碼\bin\com
?????目錄??????????0??2016-01-12?13:40??B+Tree-Java源碼\src\com
?????目錄??????????0??2016-01-12?13:40??B+Tree-Java源碼\.settings
?????目錄??????????0??2016-01-12?13:40??B+Tree-Java源碼\bin
?????目錄??????????0??2016-01-12?13:40??B+Tree-Java源碼\src
?????目錄??????????0??2016-01-12?13:40??B+Tree-Java源碼
-----------?---------??----------?-----??----
???????????????264068????????????????????24
- 上一篇:基于Mahout的電影推薦系統(tǒng)
- 下一篇:NSSM v2.23
評(píng)論
共有 條評(píng)論