https://github.com/youngyangyang04/skiplist-java
A tiny KV storage based on skiplist written in Java language| 使用Java开发,基于跳表实现的轻量级键值数据库🔥🔥 🚀
https://github.com/youngyangyang04/skiplist-java
Last synced: 7 months ago
JSON representation
A tiny KV storage based on skiplist written in Java language| 使用Java开发,基于跳表实现的轻量级键值数据库🔥🔥 🚀
- Host: GitHub
- URL: https://github.com/youngyangyang04/skiplist-java
- Owner: youngyangyang04
- Created: 2024-02-26T01:59:35.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-22T08:40:02.000Z (over 1 year ago)
- Last Synced: 2025-06-04T03:57:50.589Z (7 months ago)
- Language: Java
- Homepage:
- Size: 11.7 KB
- Stars: 28
- Watchers: 2
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Skiplist-Java
## KV 存储引擎
众所周知,levedb,rockdb 其核心存储引擎的数据结构就是跳表。
在 Redis 中,跳表被用于实现有序集合(sorted sets)数据类型。
本项目就是基于跳表实现的轻量级键值型存储引擎,使用 Java 实现。插入数据、删除数据、查询数据、数据展示、数据落盘、文件加载数据等功能。
## 项目中文件
* SkipList.java:跳表的核心实现
* StressTest.java:对跳表进行压力测试
## 存储引擎数据表现
* 跳表最大树高为 32
* 在单线程环境下测试(多线程反而会消耗更多时间以及资源,因为在插入操作时进行加锁操作
* 机器配置:MacOS(14.3.1) M1 芯片 + 16 GB 内存
### 插入操作
| 插入数据规模(万条) | 耗时(毫秒) | QPS |
| ----------------- | --------- | ------- |
| 10 | 129 | 775,194 |
| 50 | 935 | 534,759 |
| 100 | 2198 | 454,959 |
### 读取操作
| 读取数据规模(万条) | 耗时(毫秒) | QPS |
| ----------------- | --------- | ------- |
| 10 | 101 | 990,099 |
| 50 | 813 | 615,006 |
| 100 | 2130 | 469,484 |