Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementation of Binary B-Tree #9709

Merged
merged 20 commits into from Oct 27, 2021
Merged

Implementation of Binary B-Tree #9709

merged 20 commits into from Oct 27, 2021

Conversation

laa
Copy link
Member

@laa laa commented Oct 27, 2021

What does this PR do?
Implementation of B+Tree which contains keys represented as arrays of bytes.
Those arrays of bytes are keys normalized by the rules which allow preserving lexicographic order of keys using comparison of byte arrays without conversion to original keys.

This B+Tree also implements prefix and suffix compression.

Motivation
The major reason why this tree was implemented is performance improvements both for the cases when all data are placed in memory and partially placed on disk. Compression allows to decrease the size of the index on disk and as a result, increases the speed of IO operations and binary presentation of keys increases the speed of processing of data.

Because CollatorKeys are used to convert string keys, this implementation also fixes collation problems in indexes.

Related issues
#3899 #8698

Additional Notes
This is the implementation of the B+Tree itself, actual integration into system will be done later.

Checklist
[x] I have run the build using mvn clean package command
[x] My unit tests cover both failure and success scenarios

@laa laa merged commit 874639d into 3.1.x Oct 27, 2021
@laa laa deleted the binary-tree-31 branch October 27, 2021 13:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant