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

remove single delete elements during memtable flush #363

Closed
ayulas opened this issue Jan 15, 2023 · 3 comments · Fixed by #418
Closed

remove single delete elements during memtable flush #363

ayulas opened this issue Jan 15, 2023 · 3 comments · Fixed by #418
Assignees
Labels
enhancement New feature or request

Comments

@ayulas
Copy link
Contributor

ayulas commented Jan 15, 2023

Background:
Ceph code uses RocksDB to store MD objects and the change-log entries.
Ceph change-log entries are written once and removed when the primary receives ACK from all the replicas.
The reason Ceph uses RocksDB for the change log is to be able to share the WAL used by Ceph Metadata objects (which are using RocksDB in a more traditional way).
The operations happen together (we create/update a MD object/s with every write operation and create a temporary change-log-entry describing the operation) so Ceph code can commit the Metadata and the change-log in a single transaction to the WAL.

Suggested change:
Take advantage of the Singleton property of the change-log-entries which are created once, never updated and eventually deleted and use RocksDB::SingleDelete() instead of RocksDB::Delete().
This by itself doesn't help since SingleDelete entries are pushed to the SST and only there they should be processed.

We would like to filter out all Objects hit by SingleDelete() during RocksDB::Flush() and never commit them to the disk.
Ideally we should be removing Objects hit by SingleDelete() while in the Memtable, but that is impossible in RocksDB because their Memtable are immutable.

@Guyme Guyme added the enhancement New feature or request label Jan 16, 2023
@Guyme Guyme added the Working on it A feature request that is being actively worked on label Jan 18, 2023
@Guyme Guyme moved this to 🏗️ Working on it in Speedb Roadmap Jan 18, 2023
@Guyme
Copy link

Guyme commented Feb 22, 2023

Ayelet is opening a new pull request with a different branch and attach it to here.

@erez-speedb
Copy link

@ayulas ayulas closed this as completed Mar 20, 2023
@github-project-automation github-project-automation bot moved this from 🏗️ Working on it to 📖 Need your Opinion! in Speedb Roadmap Mar 20, 2023
@ayulas
Copy link
Contributor Author

ayulas commented Mar 20, 2023

411 is the right one

@bosmatt bosmatt moved this from 📖 Need your Opinion! to 🏗️ Working on it in Speedb Roadmap Apr 25, 2023
@bosmatt bosmatt moved this from 🏗️ Working on it to ✅ Shipped in Speedb Roadmap Jul 17, 2023
@bosmatt bosmatt removed the Working on it A feature request that is being actively worked on label Oct 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: ✅ Shipped
Development

Successfully merging a pull request may close this issue.

4 participants