KV DB Awesome
使用场景
- 缓存
- 数据引擎
- NoSQL 底层
- SQL 底层
- KV 最容易实现分布式
- 数据库都是某种形式上的 KV
- Redis
- redis/node-redisGitHubredis/node-redis
- Redis 官方/主流 Node.js client。
- go-redis/redis_rateGitHubgo-redis/redis_rate
- 基于 go-redis 的限流库。
- redis/node-redisGitHubredis/node-redis
Redis Compatible
- kvrocks 是目前唯一支持 多租户/namespace 的 Redis 兼容数据库
- 但只兼容到了 4.0, 部分客户端要求 5.0+
- BullMQ 要求 Redis 5+
- Redis笔记Redisredis/redis · RSALv2, SSPLv1, C · 7.2 BSD-3 -> RSALv2, SSPLv1 · BSD fork · valkey · https://codeberg.org/redict/redict · 支持的数据类型: string, bitmap, hll, list, pub/sub, hash, set,...打开:/notes/db/kv/redis
- RSALv2, SSPLv1, C
- forks
- valkey笔记valkeyBSD-3, C · placeholderkv -> valkey · Redis 7.2 BSD fork · valkey-io/valkey-glide · Apache-2.0, Rust, Java, Python, Go, TypeScript打开:/notes/db/kv/valkey
- supported by Linux Foundation
- Redis 最后的 BSD fork
KeyDB笔记KeyDBBSD-3, C++,C · ⚠️ 开发缓慢 · 多线程 Redis - IO 多线程,事务单线程 · ModJS - 可以通过 V8 扩展 · 同步 redis 源码 - 版本匹配 · active-replication, multi-master, flash, s3 backup打开:/notes/db/kv/keydb- BSD-3, C++,C
- ⚠️ 开发缓慢
- 被 Snapchat 收购 - 2022-05-11 - 开源之前的 Pro 特性
- 多线程 Redis - IO 多线程,事务单线程
- 完整 Redis 兼容 - 持续使用 Redis 代码
- ModJS - 可以通过 V8 扩展
- HASH KEY 支持 TTL
- WIP
- JSON
- Migrating from Redis or KeyDB
- valkey笔记valkeyBSD-3, C · placeholderkv -> valkey · Redis 7.2 BSD fork · valkey-io/valkey-glide · Apache-2.0, Rust, Java, Python, Go, TypeScript打开:/notes/db/kv/valkey
- protocol compatible server
- apache/kvrocksGitHubapache/kvrocksApache KvRocks · sicne 2019 · distributed, RocksDB, Redis protocol · 支持 Namespace · apache/kvrocks-controller · Apache-2.0, Go笔记:KvRocks
- Apache-2.0, C++, Go, RocksDB
- distributed KV
- kvrocks.apache.org/users
- dragonflydb/dragonfly笔记dragonflydbdragonflydb/dragonfly · BSL 1.1, C++, C · 兼容 Redis, Memcached 接口 · 多线程 · 6379 · http://127.0.0.1:6379 · - · 参考 · Dragonfly API Compatibility打开:/notes/db/kv/dragonflydb
- BSL 1.1, C++,C
- 兼容 Redis 接口 - 不完整
- 兼容 Memcached 接口
- 多线程
- 类似 KeyDB
- 不完全使用 Redis
- 完整多线程 - 事务也多线程
- io_uring - 要求 linux 5.1+ 内核
- 性能优于 KeyDB - 不同的 trade off
- sabledb-io/sabledbGitHubsabledb-io/sabledb
- BSD-3, Rust
- RocksDB
- OpenAtomFoundation/pikaGitHubOpenAtomFoundation/pika
- BSD-3, C++, Golang
- by Qihu 360
- RocksDB
- Redis 兼容命令GitHubOpenAtomFoundation/pika/wiki/pika-支持的redis接口及兼容情况
- 兼容程度很低,需要做区别对待
- skytable/skytableGitHubskytable/skytable
- AGPL-3.0, Rust
- 不完全兼容 docs.skytable.io/all-actions
doyoubi/undermoonGitHubdoyoubi/undermoon- Apache-2.0, Rust
- Mordern Redis Cluster solution
ideawu/ssdbGitHubideawu/ssdb- BSD-3, C++
- nalgeon/redkaGitHubnalgeon/redka
- BSD-3, Go, SQLite
- Tencent/TendisGitHubTencent/Tendis
- GPLv3, C++
- by 腾讯
- ⚠️ 开发不活跃
- apache/kvrocksGitHubapache/kvrocksApache KvRocks · sicne 2019 · distributed, RocksDB, Redis protocol · 支持 Namespace · apache/kvrocks-controller · Apache-2.0, Go笔记:KvRocks
- proxy server
- codis
- tweemproxy
- redis cluster
- redis module
- RedisJSONGitHubRedisJSON/RedisJSON
- alibaba/TairHashGitHubalibaba/TairHash
- Apache-2.0, C
- HASH KEY 支持 TTL
- by 阿里
Awesome
- FoundationDB笔记FoundationDBApache-2.0, C++ · by Apple · Cassandra -> FDB · 分布式、事务、KV · 作为 DynamoDB, Cassandra, HBase 的替代 · 可以作为别的服务的存储底层: 上层实现 SQL、Document打开:/notes/db/kv/foundationdb
- 结构复杂,功能强大
- FoundationDB/awesome-foundationdbGitHubFoundationDB/awesome-foundationdbApache-2.0, C++ · by Apple · Cassandra -> FDB · 分布式、事务、KV · 作为 DynamoDB, Cassandra, HBase 的替代 · 可以作为别的服务的存储底层: 上层实现 SQL、Document笔记:FoundationDB
- microsoft/FASTERGitHubmicrosoft/FASTER
- MIT C++,C#
- recoverable log, key-value store + cache
- Asynchronous Prefix Recoverability for Fast Distributed Stores
- Memcache
- TiKV笔记TiKVtikv/tikv · Apache-2.0, Rust · 目前就 Java 和 Go 客户端相对稳定 https://tikv.org/docs/dev/develop/clients/introduction/ · https://tikv.org/adopters/打开:/notes/db/kv/tikv
- Ehcache
- Infinispan
- Geode
- flower-corp/rosedbGitHubflower-corp/rosedb
- Apache-2.0, Go
- 类似于 Redis 但存储在文件
- distributed, consistent key-value store
- etcd笔记etcdetcd.conf.yml · adopters: · kubernetes · vitess · Apache APISIX · https://discovery.etcd.io · 发现阶段 · - · 存储 etcd-io/bbolt打开:/notes/db/kv/etcd
- zookeeper
- consul
- 服务、Node 为 first class
- 使用场景
- 配置共享
- 服务发现
- scheduler coordination
- consistent
- raft
- paxios
存储引擎
- LMDB笔记LMDBLMDB/lmdb · OpenLDAP Public License, BSD-3, C · from OpenLDAP · by Symas Corporation · adopted by · OpenLDAP · meilisearch打开:/notes/db/kv/lmdb
- BSD-3, C
- from OpenLDAP
- by Symas Corporation
- 2011-11
- hadow paging
- www.lmdb.tech/bench/microbench/benchmark.html
- LevelDB笔记LevelDBc.h - C API · 可看到核心接口和能力,其他语言的封装主要基于 C · KV 读写删、迭代器、批量写、快照、压缩、比较器 · 没有暴露 Slice 类型 · 原子操作通过批量操作实现 · 文件单线程,DB 对象线程安全 · 基于 LevelDB 做 KKV 的一般是使用 Prefix 实现,查询时使用迭代器打开:/notes/db/kv/leveldb
- BSD-3, C++
- by Google
- 2011-10
- inspired by Bigtable
- adopted by
- IndexedDB in Google Chrome
- Riak
- Bitcoin Core, go-ethereum
- RocksDB笔记RocksDBfacebook/rocksdb · fork 自 LevelDB · 参考 · used by: AragonDB, MySQL/MariaDB/MyRocks, Ceph BlueStore, FusionDB, TiDB, YugabyteDB打开:/notes/db/kv/rocksdb
- by Facebook
- a fork of LevelDB
- for server workloads
- 支持 多核心
- SSD 优化
- IO 优化
- Bloom filter, TTL, Statistics, GeoSpatial Indexcing, Column family, Backup, Compaction, Merge Operator
- adopted by
- MyRocks - RocksDB + MySQL
- ArangoDB
- Cassandra
- MariaDB
- Kafka Streams
- TiDB
- YugabyteDB
- KvRocks笔记KvRocksApache KvRocks · sicne 2019 · distributed, RocksDB, Redis protocol · 支持 Namespace · apache/kvrocks-controller · Apache-2.0, Go打开:/notes/db/kv/kvrocks
- 2012-05
- Badger
- BoltDB
- H2
- BDB - Berkeley DB
- features
- Key Types
- byte array in lexicographical order
- Value Types
- byte array
- Iteration
- lexicographical order
- reverse order
- seeking to a key
- ACID
- Atomicity
- Consistency
- Isolation
- 同步
- 多线程
- COW/MVCC
- Durability
- Key Types
- 参考
FAQ
redis vs memcache
- HN #28830007Hacker NewsHacker News #28830007Hacker News
关联信息
反向链接、本文链接的其他页面和外部资料。
站内链接
- dragonflydb笔记 · dragonflydb/dragonfly
dragonflydb/dragonfly · BSL 1.1, C++, C · 兼容 Redis, Memcached 接口 · 多线程 · 6379 · http://127.0.0.1:6379 · - · 参考 · Dragonfly API Compatibility
- etcd笔记 · etcd
etcd.conf.yml · adopters: · kubernetes · vitess · Apache APISIX · https://discovery.etcd.io · 发现阶段 · - · 存储 etcd-io/bbolt
- FoundationDB笔记 · FoundationDB
Apache-2.0, C++ · by Apple · Cassandra -> FDB · 分布式、事务、KV · 作为 DynamoDB, Cassandra, HBase 的替代 · 可以作为别的服务的存储底层: 上层实现 SQL、Document
- KeyDB笔记 · KeyDB
BSD-3, C++,C · ⚠️ 开发缓慢 · 多线程 Redis - IO 多线程,事务单线程 · ModJS - 可以通过 V8 扩展 · 同步 redis 源码 - 版本匹配 · active-replication, multi-master, flash, s3 backup
- KvRocks笔记 · KvRocks
Apache KvRocks · sicne 2019 · distributed, RocksDB, Redis protocol · 支持 Namespace · apache/kvrocks-controller · Apache-2.0, Go
- LevelDB笔记 · LevelDB
c.h - C API · 可看到核心接口和能力,其他语言的封装主要基于 C · KV 读写删、迭代器、批量写、快照、压缩、比较器 · 没有暴露 Slice 类型 · 原子操作通过批量操作实现 · 文件单线程,DB 对象线程安全 · 基于 LevelDB 做 KKV 的一般是使用 Prefix 实现,查询时使用迭代器
- LMDB笔记 · LMDB
LMDB/lmdb · OpenLDAP Public License, BSD-3, C · from OpenLDAP · by Symas Corporation · adopted by · OpenLDAP · meilisearch
- Redis笔记 · Redis
redis/redis · RSALv2, SSPLv1, C · 7.2 BSD-3 -> RSALv2, SSPLv1 · BSD fork · valkey · https://codeberg.org/redict/redict · 支持的数据类型: string, bitmap, hll, list, pub/sub, hash, set,...
- RocksDB笔记 · RocksDB
facebook/rocksdb · fork 自 LevelDB · 参考 · used by: AragonDB, MySQL/MariaDB/MyRocks, Ceph BlueStore, FusionDB, TiDB, YugabyteDB
- TiKV笔记 · TiKV
tikv/tikv · Apache-2.0, Rust · 目前就 Java 和 Go 客户端相对稳定 https://tikv.org/docs/dev/develop/clients/introduction/ · https://tikv.org/adopters/
- valkey笔记 · valkey
BSD-3, C · placeholderkv -> valkey · Redis 7.2 BSD fork · valkey-io/valkey-glide · Apache-2.0, Rust, Java, Python, Go, TypeScript
参考资料
GitHub16 条
- alibaba/TairHashgithub.com/alibaba/TairHash
- apache/kvrocksgithub.com/apache/kvrocks
- doyoubi/undermoongithub.com/doyoubi/undermoon
- flower-corp/rosedbgithub.com/flower-corp/rosedb
- FoundationDB/awesome-foundationdbgithub.com/FoundationDB/awesome-foundationdb
- go-redis/redis_rategithub.com/go-redis/redis_rate
- ideawu/ssdbgithub.com/ideawu/ssdb
- microsoft/FASTERgithub.com/microsoft/FASTER
- nalgeon/redkagithub.com/nalgeon/redka
- OpenAtomFoundation/pikagithub.com/OpenAtomFoundation/pika
- OpenAtomFoundation/pika/wiki/pika-支持的redis接口及兼容情况github.com/OpenAtomFoundation/pika/wiki/pika-%E6%94%AF%E6%8C%81%E7%9A%84redis%E6%8E%A5%E5%8F%A3%E5%8F%8A%E5%85%BC%E5%AE%B9%E6%83%85%E5%86%B5
- redis/node-redisgithub.com/redis/node-redis
- RedisJSON/RedisJSONgithub.com/RedisJSON/RedisJSON
- sabledb-io/sabledbgithub.com/sabledb-io/sabledb
- skytable/skytablegithub.com/skytable/skytable
- Tencent/Tendisgithub.com/Tencent/Tendis
Hacker News1 条
- Hacker News #28830007HN #28830007
其他外链6 条
- docs.keydb.dev/docs/migrationdocs.keydb.dev/docs/migration
- docs.skytable.io/all-actionsdocs.skytable.io/all-actions
- kvrocks.apache.org/userskvrocks.apache.org/users
- mozilla.github.io/firefox-browser-architecture/text/0017-lmdb-vs-leveldb.htmlmozilla.github.io/firefox-browser-architecture/text/0017-lmdb-vs-leveldb.html
- tli2.github.io/assets/pdf/dpr-sigmod2021.pdftli2.github.io/assets/pdf/dpr-sigmod2021.pdf
- www.lmdb.tech/bench/microbench/benchmark.htmlwww.lmdb.tech/bench/microbench/benchmark.html