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

Nebari v0.6: Reimplementing Nebari's Storage Layer #58

Open
Tracked by #251
ecton opened this issue Feb 27, 2023 · 0 comments · May be fixed by #57
Open
Tracked by #251

Nebari v0.6: Reimplementing Nebari's Storage Layer #58

ecton opened this issue Feb 27, 2023 · 0 comments · May be fixed by #57

Comments

@ecton
Copy link
Member

ecton commented Feb 27, 2023

The next release of Nebari will fundamentally change what Nebari is. Today, Nebari uses one-file-per-tree to store data in an append-only format. The Roots type uses an additional file to store a transaction log to coordinate transactions.

In May 2022, I discovered fundamental flaws in my benchmarking which meant the assumptions I made about the performance of how transactions work were incorrect. No matter what, to get Nebari's speed faster, I needed to change the format to allow the tree and transaction files to be fsynced in parallel.

Nebari's append-only format has its own downsides, including the need to occasionally compact to reclaim disk space. Additionally, incorporating a write-ahead log can improve transaction speed significantly, especially when multiple trees are involved.

After a long exploration phase last year, Sediment and OkayWAL were created. Nebari v0.6 will be built atop Sediment.

Sediment is not an append-only format, and it does not offer a single-file storage mechanism. For some users of Nebari, this will be an unwelcome change. However, I feel like it moves this library forward, and if I were to fork this old format to its own library, I wouldn't be maintaining it moving forward. If you have any concerns about your use case, please leave a comment and I can try to address them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant