-
Notifications
You must be signed in to change notification settings - Fork 87
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
[blog] Qdrant Version 1.14 #1529
base: master
Are you sure you want to change the base?
Conversation
✅ Deploy Preview for condescending-goldwasser-91acf0 ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
First review draft:
|
||
**Ending our Reliance on RocksDB** | ||
|
||
The **mutable ID tracker no longer relies on RocksDB**. This continues our journey toward minimal external dependencies. With our custom-built [**Gridstore**](/articles/gridstore-key-value-storage/), you can expect fewer random compactions and more predictable disk usage. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The new mutable ID tracker does not rely on RocksDB.
It's another kind of custom storage, which is very specialized to its purpose - the mutable ID tracker.
How it works is actually very simple: we have point mappings, and we store all changes to these mappings in a file simply by appending each change as an entry.
If we add a point, we create a mapping, thus we append a 'create point mapping for point x' entry to the file. If we delete a mapping, a 'delete point mapping for point x' is appended to the file. On load we simply walk over all change entries and reconstruct the mappings in memory.
Of course, this could grow forever if there are a lot of changes.
But, this integrates very well with our optimizers. The optimizers ensure that if the ID tracker grows large, it is picked up for optimization. In that case it is transformed into the immutable ID tracker, which benefits from other optimizations. That's why this simple mechanism in the mutable ID tracker is very effective here.
Co-authored-by: Tim Visée <[email protected]>
Co-authored-by: Tim Visée <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice! Just a few nitpicks.
Co-authored-by: Kacper Łukawski <[email protected]>
Co-authored-by: Kacper Łukawski <[email protected]>
Co-authored-by: Kacper Łukawski <[email protected]>
Co-authored-by: Kacper Łukawski <[email protected]>
Rendered