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

Roadmap #1

Open
ndragazis opened this issue Jun 19, 2024 · 2 comments
Open

Roadmap #1

ndragazis opened this issue Jun 19, 2024 · 2 comments

Comments

@ndragazis
Copy link
Owner

ndragazis commented Jun 19, 2024

Task

Implement a simple persistent key/value store using the seastar framework

Requirements

  1. Dataset:
    1. Keys: UTF-8 strings, up to 255 bytes
    2. Values: UTF-8 strings, unlimited length
    3. Data sharded among core based on keys
  2. API:
    1. Insert / update key-value
    2. Query a key
    3. Query sorted list of keys
    4. Delete a key
  3. LRU cache
@ndragazis
Copy link
Owner Author

ndragazis commented Jun 22, 2024

Backlog

Adding here some random things that I thought of while writing code (these should be organized in existing or new issues):

  • Do not flush an empty memtable into an SSTable upon termination.
  • The list of active/immutable memtables is broken right now. First of all, it needs to become asynchronous (the KVStore should be able to serve requests while flushing them in the background) and the flushes should happen in chronological order (mutable memtable included).
  • Update the memtable size on key updates.
  • Improve the file format for WALs and SSTables. The values can be any kind of string. Currently, my code assumes that they do not contain newlines.
  • Can we combine async with RAII? For example, create async constructors/destructors? Alternatively, can we call async code from synchronous code (i.e., block until the async operation resolves)?
  • Proper exception handling.
  • Do we need any synchronization for the memtable and sstable lists?

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

No branches or pull requests

1 participant