Skip to content
This repository has been archived by the owner on Aug 28, 2019. It is now read-only.

Latest commit

 

History

History
51 lines (44 loc) · 2.96 KB

README.en.md

File metadata and controls

51 lines (44 loc) · 2.96 KB

this repo is not updated any more,please go to aili


Mushroom: Distributed In-Memory Index

中文版 README

Author Version Build License

Mushroom is a Linux light-weight distributed in-memory index written in C++11, consists of concurrent Blink tree, TCP communication library, RPC framework and Raft consensus algorithm.

Behold, the power of Mushroom!

Try Mushroom

first run gen_test_data.sh to generate test data, then enter src directory
./run index 100, test distributed index on single machine,100 represents index number(raft is not well optimized, please limit number to 1-1000)
./run blink thread 100, test multi-thread b link tree, number can be 1 to 10 million
./run blink queue 100, test multi-thread b link tree, number can be 1 to 10 million
./run art 100, test adaptive radix tree, number can be 1 to 10 million

Version Information

Version Improvements
0.1.0
0.2.0 two-phase lock based concurrent index
0.2.1 latch manager optimization
0.3.0 implement prefix compaction, reducing Blink tree memory about 9.1 %
0.4.0 implement Mapping Queue, reducing total program memory up to 50 %
0.4.1 merge latch manager and page manager,reduce 1 lock per operation
0.4.2 change the way B link tree root split
0.4.3 new test strategy, threads conduct operations without going through the queue
0.4.4 latch manager refactoring
0.5.0 fix BUG(atomic operation bug) that exists from 0.4.1 to 0.4.4
0.6.0 multi-process supported, fix Blink tree search bug
0.6.1 two-phase hashing page manager, implement lazy page allocation
0.6.2 reduce dependency on standard library, speed up compile, reduce program size about 42.1%
0.6.4 using posix spin lock, Optimize MushroomDB and BLinkTree structure
0.7.0 Log-Structured Merge Tree
0.8.0 TCP Communication Library & RPC Framework
0.9.0 Raft
0.9.1 ACID (batch operation) & modify locking strategy
0.9.2 optimize Raft state transfer, improve liveness
1.0.0 distributed in-memory index
1.1.0 Blink tree node occupies 2/3 of node's space, originally 1/2, reducing memory use about 12%
1.1.1 optimize raft memory use
1.2.0 Adaptive Radix Tree
1.2.1 remove latch manager, each page has its own latch, improve performance by 10%
1.2.2 introducing bloom filter for write/read optimization