Skip to content

lnikon/tinykvpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

199 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tinykvpp

Description

This is my second attempt to build a distributed key-value store. The latest version of the first attempt lives in abandoned and will not be continued. Lots of lessons were learned and I'm going to really try not to produce a mess this time, and come up with something adequate.

Build

ToDo

  • Implement simple memtable rotation and add tests, before moving to event loop'ed approach
  • monotonic clock for timestamp
  • code style document (function, class, file, dir naming), code organization
  • 'max_entries_' needed in memtable?
  • Common 'error' object with error_codes shared for all files
  • Shared linked-list allactor per-engine. Memtables allocate a whole node from it.
  • Update build section with mandatory and optional steps. Optimize the build duration. Build tests only when DBUILD_TESTS is set, same for benchmarks.
  • Keep CMake clean. -Wsign-conversion breaks simd.h build. Introduce per-profile flags, so that these '-O3 -g -fno-omit-frame-pointer' go into RelWithDebugInfo
  • One arena per engine OR <arena, memtable> pairs?
  • Separate 'engine' dir for engine/flush related stuff
  • Put/get/delete/scan inside engine interface
  • Memory leak tracing allocator
  • Shared arena between memtable and skiplist
  • Support tombstones
  • Engine/DB: A fat struct keeping arenas, memtables, sequence number, wal, etc... together
  • Memtable rotation: active and imm memtables

About

Horizontally scalable, highly available, key-value storage service with distributed transaction support written in C++

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages