Show HN: SNKV – SQLite 的 B 树作为键值存储(C/C++ 和 Python 绑定)
发布: (2026年2月24日 GMT+8 20:59)
2 分钟阅读
原文: Hacker News
Source: Hacker News
架构
SQLite 有六层:SQL 解析器 → 查询规划器 → VDBE → B‑tree → pager → OS
(SQLite 架构)。
对于键值工作负载,你只需要底部的三层。SNKV 剔除顶部三层,直接与 SQLite 的 B‑tree 引擎交互。没有 SQL 字符串、没有查询规划器、没有虚拟机——只是在驱动 SQLite 存储核心的同一套 put/get/delete 上操作。
Python
pip install snkv
from snkv import KVStore
with KVStore("mydb.db") as db:
db["hello"] = "world"
print(db["hello"]) # b"world"
C / C++
#define SNKV_IMPLEMENTATION
#include "snkv.h"
KVStore *db;
kvstore_open("mydb.db", &db, KVSTORE_JOURNAL_WAL);
kvstore_put(db, "key", 3, "value", 5);
性能(相对提升)
| 操作 | 提升 |
|---|---|
| 顺序写入 | +57% |
| 随机读取 | +68% |
| 顺序扫描 | +90% |
| 随机更新 | +72% |
| 随机删除 | +104% |
| 存在性检查 | +75% |
| 混合工作负载 | +84% |
| 批量插入 | +10% |
你将获得
- ACID 保证
- WAL 并发
- 列族
- 崩溃安全
所有这些都在读取密集型键值工作负载下拥有更少的开销。
评论: (32 points, 19 comments)