Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/skyzh/BPlusTree
🌲 Fully unit-tested B+ tree with basic paging implemented in C++
https://github.com/skyzh/BPlusTree
bplus-tree bplustree clion cmake cpp
Last synced: 2 months ago
JSON representation
🌲 Fully unit-tested B+ tree with basic paging implemented in C++
- Host: GitHub
- URL: https://github.com/skyzh/BPlusTree
- Owner: skyzh
- License: mit
- Created: 2019-05-24T05:40:25.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-07-08T14:54:11.000Z (over 5 years ago)
- Last Synced: 2024-10-30T06:57:07.921Z (3 months ago)
- Topics: bplus-tree, bplustree, clion, cmake, cpp
- Language: C++
- Homepage:
- Size: 346 KB
- Stars: 12
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-cs - @skyzh, 2019 Spring
README
# BPlusTree
[![Build Status](https://travis-ci.com/SkyZH/bplustree.svg?token=szB6fz2m5vb2KyfAiZ3B&branch=master)](https://travis-ci.com/SkyZH/bplustree)
A simple B+ tree implemented in cpp. Fully unit-tested.
## Implementations
`BTree.cpp` is automatically generated with source file from `src/` folder.
For original implementation, you should refer to `src/`.Container: some basic containers implementation including `Vector` and `Set`.
LRU: least recently used cache, eliminating memory usage when processing huge chunks.
Persistence: manage so-called 'pages', which store BTree data.
Iterator: B+Tree iterators
Partially ported to upstream https://github.com/peterzheng98/CS158-DS_Project
## Limitations
Number of pages in memory must be larger than those required for a single search, because page swapping is done after one operation.
## Todo
- [x] Reduce overhead in serialize and deserialize by passing istream as argument
- [x] 4k align
- [x] Reduce page offload overhead by introducing read-only page request
- [ ] Use HashMap to store pages in memory to store larger dataset.
- [ ] Implement copy constructor and assign
- [x] Implement iterator and const iterator
- [x] Reuse deleted pages
- [ ] Port to upstream: size, empty, iterator, return value of query and insert.