Skip to content

Build a resilient, efficient and user-friendly KV store #89

@zz-jason

Description

@zz-jason

Goals

Currently, recovery from disk and continuous checkpoint is not fully supported, write-ahead logs may missing or incorrect, and tests are needed to guarantee the correctness. The goal of this TODO list is to make the project:

  • Resilient, feel confident to be used in production
  • Efficient: especially for read-mostly workloads
  • User-friendly: easy to integrate, for example, as a storage extension to Redis, MongoDB, PostgreSQL, MySQL

You can join the slack workspace for discussion, any help is welcomed and appreciated!

Logging and recovering

  • Recover from btree merge
  • Recover from BasicKV remove/update/insert
  • Remove transaction-related fields from BasicKV wal entries
  • Support checkpoint

MVCC Transaction and concurrency control

Tests

Checks

Usability

  • Build a simple key-value REPL playground, such as Redis.

Misc

  • Build with clang
  • Cache workflow dependencies to speed up CI
  • Is there a better way to replace setjmp/longjmp since it's error-prone, how about c++20 stackless coroutine (Coroutines (C++20), lewissbaker/cppcoro)?

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions