暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Apache Cassandra 4.1特性:可插拔的Memtable实现

原创 简单 2022-08-30
866

Apache Cassandra 4.1的新特性之一支持可选memtable的实现,这是在增强提案#11(CEP-11)中提出的。这个特性使开发人员能够实现新的memtable方案,同时使用户可以为数据库每张表选择memtable的实现和配置。这是由CREATE TABLEALTER TABLE语句中新的memtable选项实现的,并在cassandra.yaml中定义了很多memtable的配置选项。例如:

CREATE TABLE heavy_use … WITH memtable = 'sharded';

其中 "shared"在cassandra.yaml中配置为:

Memtable: Configurations: Sharded: class_name: ShardedSkipListMemtable Parameters: shards: 32 serialize_writes: false

Apache Cassandra 4.1附带了一个用于概念验证的可选memtable实现,这是个sharded skip-list的方案,它将memtable拆分成若干分片,这些分片基本覆盖了节点所包含的token空间。这让不同分片的写入可以独立,并在修改数据结构的过程中不会阻塞,众所周知,这比常见Cassandra工作负载的memtable性能更高。下面例子展示了如何选择这种实现方式。它有两个参数:

  • shards — 拆分memtable的分片数量。
  • serialize_writes - 修改时是否对memtable分片加锁。

加锁是可选的。这可以避免当拥塞时,无锁多个并发修改同一个分区而产生冲突,从而浪费处理时间和内存空间。加锁将导致较低的峰值写入吞吐量,但可能会改善长期的持续吞吐量,因为在每个刷新的SSTable中存储了更多的信息,并将更多的CPU时间用于压缩。下表展示了当写入100GB的键值数据时的平均吞吐量,其中有10%的读请求,以及给定的百分比,同一行的访问命中率。

image.png

这个平均吞吐量的测试使用了fallout脚本,你可以在这里找到

该项目将基于这个特性发展,在不久的将来,该API将被用于实现两个令人兴奋的开发:

  • 英特尔的持久性内存memtable(CASSANDRA-13981),这是一个仅有memtable的存储系统,在使用合适的硬件时有望实现极低的延迟。
  • 基于Trie的memtable(CEP-19CASSANDRA-17240),保证了在性能和垃圾回收开销方面有明显的改善。

原文标题:Apache Cassandra 4.1 Features: Pluggable Memtable Implementations
原文作者:Branimir Lambov
原文地址:https://cassandra.apache.org/_/blog/Apache-Cassandra-4.1-Features-Pluggable-Memtable-Implementations.html

最后修改时间:2022-08-30 18:37:52
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论