NEUStore: A Simple Java
Package for the Construction of Disk-based, Paginated, and
Buffered Indices
What is it?
NEUStore is a Java package that aims to support the development of
disk-based, paginated, and buffered index structures. Three
classes, namely
DBPage,
DBBuffer and
DBIndex,
are the core of the package. Some other packages such as the
HeapFile and the
LRUBuffer are provided. But beyond
that, the package does not go very far. For instance, the package
does not implement well-know index structures like the B+-tree and
the R-tree. On the other hand, this is a perfect teaching tool. A
database or storage course instructor, who wants the students to
learn how to design disk-based indices, may find the package very
useful. A Ph.D. advisor may want to let the new Ph.D. students
know about this package, in order to help them learn the concept of
designing disk-based index structures and to save their
development time.
How to download?
The latest version is version 1.5.
Java code including Javadoc is
neustoreroot.tgz.
PDF manual is
NEUStore.pdf.
PPT slides is
NEUStore.ppt.
But before you download, you must agree with the following
terms:
- Commercial usage of the package is prohibited, unless you get permission from
Prof. Donghui Zhang <donghui AT ccs.neu.edu>.
- The authors should not be held liable for errors. In fact, please do let us know if you find some error or something to improve.
How to compile to a jar file?
Place
build.xml in the same directory as doc, neustore and test. If you call ant jar it will compile
the .java classes in the neustore directory into the target/classes and then create a jar file of the compiled classes. You can then add the jar to the build path of your project in Eclipse. Thank Joshua Serrin <nirres01 AT gmail.com> for creating this build file.
Change history.
- Version 1.5 (released on December 3, 2008)
In this version, the functionality to scan through a heap file has been added. Check TestHeapFile::TestScan() to see an example. Thank Joshua Serrin <nirres01 AT gmail.com> and Yan Su <su.y AT neu.edu> for the suggestion.
- Version 1.4 (released on September 29, 2008)
In this version, a minor mistake in version 1.3 has been fixed. In more detail, the HeapFile::delete function in version 1.3 forgot to write the page to buffer in two places. Thanks Jiangjiang Li <quintet AT ccs.neu.edu> for pointing this out.
- Version 1.3 (released on January 22, 2008)
In version 1.3, the LRU buffer uses a hash table. Thanks Wei Wang <weiw AT cse.unsw.edu.au> from the University of New South Wales for pointing this out.
- Version 1.2 (released on December 9, 2006)
In version 1.2, two minor mistakes in verion 1.1 are fixed. One is in the constructor of NaiveHeapFile where lastPage used to get a wrong value. The other is in DBIndex::freePage(), where numPages was not decreased. Thanks Zhenmin Lin <ZhenminLin AT uky.edu> from the University of Kentucky for helping identifying the errors.
- Version 1.1 (released on January 6, 2006)
In version 1.1, the buffer managers (DBBuffer and LRUBuffer) can handle multiple files. And the responsibility of opening/closing a file is detached from the buffer manager. Therefore a buffer manager now can handle multiple indices.
- Version 1.0 (released on September 14, 2005)
Acknowledgement
This project was partially supported by NSF CAREER Award IIS-0347600. Thank Tian Xia for helping with coding. Thank Zhenmin Lin and Jiangjiang for helping identifying bugs. Thank Wei Wang for comments on more efficient buffer implementation. Thank Joshua Serrin for creating the ant build file. Thank Joshua Serrin and Yan Su for suggesting to add the scan functionality for the HeapFile.
Whom to contact?
In case you have questions or concerns, send email to
donghui AT ccs.neu.edu.
Home