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

Implement everything needed for replication #53

Open
3 of 4 tasks
Tracked by #92
maxux opened this issue Aug 28, 2018 · 0 comments
Open
3 of 4 tasks
Tracked by #92

Implement everything needed for replication #53

maxux opened this issue Aug 28, 2018 · 0 comments
Assignees

Comments

@maxux
Copy link
Collaborator

maxux commented Aug 28, 2018

Summary

In order to have a proper first external replication support, some feature still needs to be implemented:

  • Improve SCAN with more than one response
  • Improve SCAN to support key which could be deleted
  • Implement a command to get binary key from any key
  • Add an admin command which can do SET with specified timestamp

Details

  • To make the SCAN more efficient, returning multiple values in a row seems obvious. The implementation will returns as much as possible key in a fixed amount of time, to not disturb other clients.
  • If we do a SCAN from a key which was updated recently, in order to walk over the database, we could miss lot of data. Assume a key is overwritten, doing a SCAN from that key will ends with No more data since it's the last in the index entry. A better approach is giving a client a binary key which contains enough data to resume the walk from an exact point and not a variable position based on key name.
  • If we want to do a SCAN from any key (eg: in the middle of the set), we need to know the argument to give to SCAN to start from that key. A command which returns this id is needed.
  • Since we want to add keys from another database (for replication) the timestamp should match the original timestamp, we need a way to specify the timestamp when doing a SET, only available to administrator right.
@maxux maxux self-assigned this Aug 28, 2018
@rkhamis rkhamis added this to the 1.5.0 milestone Sep 11, 2018
@zaibon zaibon removed this from the 1.5.0 milestone Nov 26, 2019
@zaibon zaibon modified the milestones: now, next Apr 7, 2020
@maxux maxux modified the milestones: next, later Dec 14, 2020
@maxux maxux removed this from the later milestone Jul 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants