Skip to content

Charles-T-T/Skiplist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基于跳表的轻量级KV存储引擎(C++)

本项目用c++实现了一个基于跳表的轻量级键值型存储引擎,提供数据插入、删除、查询、展示和读写接口。同时,尝试加入了一些c++11新特性,如智能指针、移动语义、 constexpr 、多线程等。

存储引擎数据表现

以下为跳表树高设置为20、单线程、本地笔记本上测试的结果。

插入操作

插入数据规模(万条) 耗时(秒)
10 0.401
50 2.113
100 4.341

每秒可处理写请求数(IPS): 23.34w

查询操作

查询数据规模(万条) 耗时(秒)
10 0.127
50 0.821
100 2.059

每秒可处理读请求数(QPS): 53.21w

启用多线程后,大规模数据的查询效率会有明显提高:本地测试8线程查询一千万条数据,耗时5.68s,QPS约为176w。

运行和测试

Windows下:

./build.bat    // 编译
./run.bat      // 运行menu.exe,手动操作跳表
./run.bat -t   // 运行stress_test.exe,执行压力测试

Linux下:

./build.sh    // 编译
./run.sh      // 运行menu.exe,手动操作跳表
./run.sh -t   // 运行stress_test.exe,执行压力测试

主要接口

  • InsertNode(插入)
  • DeleteNode(删除)
  • SearchNode(查询)
  • DisplayList(展示)
  • DumpFile(转储)
  • LoadFile(加载)

About

🚀 A KV store engine based on skiplist, written in C++

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors