ToplingDB Zero Copy

2023-09-22
阅读 5 分钟
578
背景ToplingDB 是 topling 开发的 KV 存储引擎,fork 自 RocksDB,进行了很多改造,其中最重要的部件是 ToplingZipTable, 是 BlockBasedTable 的代替品,性能更高而内存占用更低。ToplingZipTable 使用 CO-Index 与 PA-Zip 实现索引和数据的存储。CO-Index 指 Compressed Ordered Index, 是一类内存压缩的索引,无需解压...

ToplingDB NestLoudsTrie 索引

2023-09-21
阅读 6 分钟
657
背景ToplingDB 是 topling 开发的 KV 存储引擎,fork 自 RocksDB,进行了很多改造,其中最重要的部件是 ToplingZipTable, 是 BlockBasedTable 的代替品,性能更高而内存占用更低。ToplingZipTable 使用 CO-Index 与 PA-Zip 实现索引和数据的存储。CO-Index 指 Compressed Ordered Index, 是一类内存压缩的索引,无需解压...

ToplingDB 分布式 Compact 与 BlockBasedTable

2023-09-18
阅读 2 分钟
467
背景ToplingDB 是 topling 开发的 KV 存储引擎,fork 自 RocksDB,进行了很多改造,其中最重要的部件是 ToplingZipTable, 是 BlockBasedTable 的代替品,性能更高而内存占用更低。

ToplingDB posix aio

2023-09-15
阅读 3 分钟
285
(一)背景MyTopling 是基于 ToplingDB 的 MySQL,分叉自 MyRocks,ToplingDB 则分叉自 RocksDB,兼容 RocksDB 接口,从而 MyTopling 可以复用 MyRocks 的大部分成果。ToplingDB 和 MyTopling 都已开源。在 ToplingDB 中,我们通过 fiber + io uring 实现了高效 MultiGet IO 并发,为 MyTopling 的 MRR(Multi Range Read...

ToplingZipTable Key Value 分离存储

2023-09-14
阅读 3 分钟
357
(一)背景ToplingDB 是 topling 开发的 KV 存储引擎,fork 自 RocksDB,进行了很多改造,其中最重要的部件是 ToplingZipTable, 是 BlockBasedTable 的代替品,性能更高而内存占用更低!(二)Key Value 存储方式KV 相邻存储是最常见的存储方式,其优点是结构简单,逻辑内聚性高,易于理解,便于实现,原版 RocksDB 用的...

ToplingDB 顺序扫描中 Value 的延迟加载

2023-09-13
阅读 2 分钟
267
(一)背景ToplingDB 是 topling 开发的 KV 存储引擎,fork 自 RocksDB,进行了很多改造,其中最重要的部件是 ToplingZipTable, 是 BlockBasedTable 的代替品,性能更高而内存占用更低!(二)顺序扫描流程RocksDB 中,同一个 UserKey 会有多个版本的 Value,而特定时刻(snapshot)对外合法可见的 Value 只有一个,DBIt...

ToplingDB 分布式 Compact:天然的协同

2023-09-12
阅读 2 分钟
632
(一)背景ToplingDB 是 topling 开发的 KV 存储引擎,fork 自 RocksDB,进行了很多改造,其中一个最重要的功能是分布式 Compact,将 Compact 从 DB 结点转移到由多个 DB 共享的计算集群中执行,实现了降本增效的目的。系列文章:

db_bench: ToplingDB vs RocksDB

2023-09-11
阅读 2 分钟
548
(一)背景ToplingDB,虽然 fork 自 RocksDB 并且兼容其 API,但实现了脱胎换骨的改进,最重要的就是实现了性能更高的 MemTable 和 SST,其次是对 RocksDB 本身进行了很多代码级优化,再通过 SidePlugin 将所有的组件和配置组织起来,应用代码只需要关心业务逻辑,和 RocksDB 复杂的配置说再见(TableFactory, BlockCach...

ToplingDB CSPP MemTable 有多快

2023-09-08
阅读 3 分钟
659
(一)背景ToplingDB,虽然 fork 自 RocksDB 并且兼容其 API,但实现了脱胎换骨的改进,最重要的就是实现了性能更高的 MemTable 和 SST。我们在 db_bench: ToplingDB vs RocksDB 测试中,看到了 cspp memtable 的单线程性能,本文中,我们测试它的多线程性能。(二)配置参数cspp memtable 的写性能太强,我们必须配置多...

ToplingDB CSPP MemTable 设计精要

2023-09-07
阅读 3 分钟
629
(一)背景ToplingDB,虽然 fork 自 RocksDB 并且兼容其 API,但实现了脱胎换骨的改进,最重要的就是实现了性能更高的 CSPP MemTable(Rep) 和 SST。CSPP MemTable 基于 Topling CSPP Trie,无论读写,CSPP Trie 的单线程性能都很高,并且多线程性能近乎线性扩展。本文详细介绍如何将 CSPP Trie 的能力应用到 MemTable。...

大道至简,事半功倍:MultiGet IO 并发在 ToplingDB 中的协程实现,以及在 MyTopling 中的落地应用

2023-09-06
阅读 8 分钟
737
(一)背景三年前,我用 Fiber(协程) 实现了 TerarkDB 中 MultiGet 的 IO 并发,因为 TerarkDB 分叉自 RocksDB 5.18,其 MultiGet 实现简单直接,所以我可以用 10 行代码就对其完成 Fiber(协程) 改造,并获得数量级的性能提升。但是在 ToplingDB 中,为了充分借助社区力量,吸收社区成果,我们总是在 RocksDB 的最新版上...
封面图

ToplingDB 如何减小写放大:功大欺理

2023-09-05
阅读 2 分钟
523
背景ToplingDB,虽然 fork 自 RocksDB 并且兼容其 API,但实现了脱胎换骨的改进,最重要的就是实现了性能更高的 CSPP MemTable(Rep) 和 SST。ToplingDB CSPP MemTable 设计精要 对 CSPP MemTable 进行了初步介绍。关于共享内存shm和内存映射mmap的区别是什么? 介绍了 CSPP 直接将 MemTable 转化为 SST。2. 减小写放大实...
封面图

ToplingDB 的 SidePlugin 配置系统

2023-09-05
阅读 7 分钟
413
概要ToplingDB 配置系统采用 json/yaml 格式定义配置项,将 ToplingDB/RocksDB 的所有元对象均纳入此配置系统。总体而言,ToplingDB 配置系统实现了以下目标: