ToplingDB的分布式Compact和RocksDB的RemoteCompaction有什么不同

首页 / 常见问题 / 低代码开发 / ToplingDB的分布式Compact和RocksDB的RemoteCompaction有什么不同
作者:低代码系统定制 发布时间:2025-05-09 17:38 浏览量:2823
logo
织信企业级低代码开发平台
提供表单、流程、仪表盘、API等功能,非IT用户可通过设计表单来收集数据,设计流程来进行业务协作,使用仪表盘来进行数据分析与展示,IT用户可通过API集成第三方系统平台数据。
免费试用

ToplingDB的分布式Compact和RocksDB的RemoteCompaction不同之处:1、可靠性不同;2、可观测性不同等。可靠性不同是指 RocksDB 的 RemoteCompaction 还处在 Experimental 状态,ToplingDB 的分布式 Compact 已在托管 Todis 中使用多时。

一、ToplingDB的分布式Compact和RocksDB的RemoteCompaction不同之处

1、可靠性不同

  • RocksDB 的 RemoteCompaction:还处在 Experimental 状态。
  • ToplingDB 的分布式 Compact:已在托管 Todis 中使用多时,得到了充分的验证。

2、可观测性不同

  • RocksDB 的 RemoteCompaction:只能查看 LOG。
  • ToplingDB:通过引擎内嵌 Web,支持分布式 Compact 在线观测(长时间运行的演示实例)。

3、分布式 Compact 实现方式不同

  • ToplingDB 的分布式 Compact:是通过将整个数据集分为多个分片,每个节点上都进行 Partial Compaction 操作来实现的。Partial Compaction 仅对每个分片进行压缩,压缩完成后,将新的分片发送给其他节点进行合并,最终形成整体的压缩结果。
  • RocksDB 的 Remote Compaction:是将需要压缩的 SST 文件从源节点传输到目标节点,并在目标节点上执行 Compaction 操作。这种方式允许在远程节点上执行 Compaction 操作,在网络传输和数据合并方面也更加有效率。

4、数据传输方式不同

  • ToplingDB 的分布式 Compact:采用点对点的方式进行数据传输,即将数据块直接从一个节点传输到另一个节点进行合并。在大规模分布式集群中,数据传输复杂度较高,可能会影响整个系统的性能。
  • RocksDB 的 Remote Compaction:通过使用基于 TCP 的流式传输协议来实现数据传输。该协议允许数据在网络上传输时进行压缩和流式处理,同时减少了数据复制和存储所需的空间。

5、自适应压缩策略不同

  • ToplingDB 的分布式 Compact:通过使用自适应压缩策略来调整 Compaction 操作的执行时间和频率。该策略根据定期测量的读写负载动态调整 Compaction 的执行时间和频率,以最大化的优化数据库的性能。
  • RocksDB 的 Remote Compaction:则采用了类似的自适应压缩策略,但该策略还考虑了目标节点的 CPU 和磁盘 I/O 负载等因素,以最小化对目标节点的负载影响。

二、RocksDB介绍

1、简介

Rocksdb 是基于Google LevelDB研发的高性能kv持久化存储引擎,以库组件形式嵌入程序中,为大规模分布式应用在ssd上运行提供优化。RocksDB不提供高层级的操作,例如备份、负载均衡、快照等,而是选择提供工具支持将实现交给上层应用。正是这种高度可定制化能力,允许RocksDB对广泛的需求和工作负载场景进行定制。

2、架构

RocksDB 是一个基于键值对存储接口的存储引擎库,其中键和值是任意字节流。RocksDB 将所有数据按排序顺序组织起来,常用的操作有Get(key), NewIterator(), Put(key, val), Delete(key), 和SingleDelete(key)。

RocksDB 的三个基本结构是memtable、sstfile和logfile。memtable是一种内存数据结构 – 新的写入被插入到memtable中,并且可以选择写入日志文件(又名。Write Ahead Log(WAL))。日志文件是存储上按顺序写入的文件。当 memtable 填满时,它会被刷新到存储上的sstfile,并且可以安全地删除相应的日志文件。对 sstfile 中的数据进行排序以方便查找键。

RocksDB使用布隆过滤器来判定键在哪个sst文件中。为了避免随机写,它将数据积累到内存中的memtable中,然后一次性刷写到硬盘中。RocksDB的文件是不可变的,一旦生成就不会继续写该文件。记录不会被更新或者删除,会生成一个新文件。这会在硬盘生成一些多余的数据,会需要数据库Compaction(压缩),Compaction文件会移除冗余的键值对并腾出空间。

3、RocskDB和LevelDB的区别

RocskDB结构和levelDB大同小异,只是多了一些改进:

  • 增加了column family,有了列簇的概念,可把一些相关的key存储在一起
  • 内存中有多个immute memtalbe,可防止Leveldb中的 write stall(写停顿)
  • 可支持多线程同时compaction,理论上多线程同时compction会比一个线程compaction要快
  • 支持TTL过期淘汰机制
  • flush与compation分开不同的线程池来调度,并具有不同的优先级,flush要优于compation,这样可以加快flush,防止stall
  • 对SSD存储做了优化,可以以in-memory方式运行
  • 增加了对 write ahead log(WAL)的管理机制,更方便管理WAL,WAL是binlog文件
  • 支持多种不同的compaction策略

三、ToplingDB介绍

1、简介

ToplingDB 是 较好ling 开发的 KV 存储引擎,fork 自 RocksDB,进行了很多改造,其中一个最重要的功能是分布式 Compact,将 Compact 从 DB 结点转移到由多个 DB 共享的计算集群中执行,实现了降本增效的目的。

2、Compact 中反查 DB

在一些应用中(例如 pika、kvrocks 等等),CompactionFilter 需要反查 DB(使用 DB::Get) 获取元数据,而在 Compact 服务中,只有 SST,没有 DB 对象,这就使得 CompactionFilter 无法在 Compact 服务中工作。

在 Todis 中,我们通过事先把 CompactionFilter 反查会用到的元数据捞出来,然后在 Compact 服务中访问,代替原本的 DB::Get,为此我们还对 Todis 的数据进行了针对性的编码。

在 kvrocks 中,因为数据的组织方式,无法通过编码在 Compact 服务中有效地代替原本的 DB::Get,所以,只有 metadata 才能支持分布式 Compact。kvrocks 中各种数据类型的 metadata 保存在一起,如果照搬 todis 的方案,事先捞数据,捞到的元数据很可能 99.9% 都是无用的元数据,例如 compact hash 数据时,事先捞出来的元数据可能大都是 string 数据。

延伸阅读1:数据库存储引擎是什么

存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。

最后建议,企业在引入信息化系统初期,切记要合理有效地运用好工具,这样一来不仅可以让公司业务高效地运行,还能最大程度保证团队目标的达成。同时还能大幅缩短系统开发和部署的时间成本。特别是有特定需求功能需要定制化的企业,可以采用我们公司自研的企业级低代码平台织信Informat。 织信平台基于数据模型优先的设计理念,提供大量标准化的组件,内置AI助手、组件设计器、自动化(图形化编程)、脚本、工作流引擎(BPMN2.0)、自定义API、表单设计器、权限、仪表盘等功能,能帮助企业构建高度复杂核心的数字化系统。如ERP、MES、CRM、PLM、SCM、WMS、项目管理、流程管理等多个应用场景,全面助力企业落地国产化/信息化/数字化转型战略目标。 版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们微信:Informat_5 处理,核实后本网站将在24小时内删除。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系邮箱:hopper@cornerstone365.cn 处理,核实后本网站将在24小时内删除。

最近更新

企业数字化转型进入深水区:一位CIO亲述选型低代码平台的血泪史
05-25 16:44
探路中台、RPA、低代码引领企业级IT服务未来式
05-22 09:43
低代码AI实战指南:从"拖拽搭应用"到"对话即开发"的底层逻辑到底是什么?
05-21 15:00
2026企业级低代码平台TOP10实测:附选型评分表
05-20 14:12
低代码/无代码是什么,能干什么,有何区别?
05-19 11:13
2026年十大低代码平台深度测评,95分以上的低代码产品推荐
04-23 14:28
国内十大低代码平台本地部署
04-22 13:41
低代码平台概念股
04-22 12:00
源代码管理软件哪个好
04-19 19:38
  • 深圳市基石协作科技有限公司
  • 地址:深圳市南山区科发路8号金融基地1栋5F5
  • 手机:137-1379-6908
  • 电话:0755-86660062
  • 邮箱:sales@cornerstone365.cn
  • 微信公众号二维码

© copyright 2019-2026. 织信INFORMAT 深圳市基石协作科技有限公司 版权所有 | 粤ICP备15078182号

前往Gitee仓库
微信公众号二维码
咨询织信数字化顾问获取最新资料
客服咨询热线1
0755-86660062
客服咨询热线2
137-1379-6908
申请预约演示
立即与行业专家交流