A Java implementation of an in-memory B-Tree indexing engine for efficient storage and retrieval of key-value datasets.
Originally developed for an Advanced Databases course, the project is being refactored into a more complete indexing/storage-engine study with automated testing, benchmarking, and persistent storage as future milestones.
- Key-value insertion
- Exact search
- Range queries
- Case-insensitive prefix search
- Accent-insensitive prefix search
- Leaf and internal node splitting
- Duplicate-key replacement
minKey/maxKeybased range pruning- JUnit 5 regression tests
- Gradle build system
The project focuses on practical concepts used by database indexing systems:
- B-Tree algorithms
- Data indexing and retrieval
- Tree balancing and node splitting
- Query optimization
- Regression testing
- Performance engineering
- Storage-engine fundamentals
More technical details are available here:
Run with the run task, which assembles and executes the application
-
./gradlew run
Runs the simple B-Tree insertion and search demo
-
./gradlew run --args="simple"
Runs the B-Tree demo using the communes dataset
-
./gradlew run --args="communes"
-
Builds the project and runs the tests
-
./gradlew build
-
./gradlew clean
Runs the test task for all subprojects when invoked from the root project
-
./gradlew test
To see the details of the tests on the browser.
-
build/reports/tests/test/index.html
-
The project uses JUnit 5 to protect insertion, search, split, range-query, prefix-search and regression behavior during refactoring.
See Testing Strategy for the full test plan.
Current development focuses on:
Correctness → Refactoring → Invariant Tests → Dataset Integration → Benchmarks → Persistence
See the full roadmap.
Java · Gradle · JUnit 5 · Git
The current version is an in-memory B-Tree index.
Persistent page-based storage and performance benchmarking are planned future milestones and will only be documented as completed once implemented.