资源简介
步骤为数据库文件创建一个B+树索引:
(1)生成数据文件,
(2)为数据库文件的属性创建B+ 树文件。
(3)给定键值,通过B+树进行查找。同时比较与直接扫描表的性能差别。(利用B+树时可根据内存大小决定放置多少层次到内存)
(4)给定键值,完成数据插入,并按需更新B+树。
(5)给定键值,完成数据删除,并按需更新B+树
资源包括:Java源码及实验报告!
代码片段和文件信息
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;//总记录数100000
private static int sizePerBlock = 40;//由于磁盘上每个block大小是4KB每条记录大小100B所以每个block上记录条数为40
private static int blockSize = (size%sizePerBlock)==0?(size/sizePerBlock):(size/sizePerBlock)+1; //总的块数
private static String fileDirectory = “F:\\Records\\“;
private static String recordFile = fileDirectory+“record.txt“;
/** 根节点 */
protected Node root;
/** 阶数,M值 */
protected int order;
/** 叶子节点的链表头*/
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();
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 219490 2016-01-12 13:37 Java实现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的电影推荐系统
- 下一篇:NSSM v2.23
评论
共有 条评论