导读:随着大数据的进一步发展,NoSQL 数据库系统迅速发展并得到了广泛的应用。其中,Apache Cassandra 是最广泛使用的数据库之一。对于 Cassandra 的优化是大家研究的热点,而 ScyllaDB 则为其提供了一个新的思路。ScyllaDB 是一个基于 C 的开源的高性能的 Cassandra 的实现,较之 Cassandra 在性能上有了很大的提升。Nodetool repair 是 Cassandra 日常维护的重要一环,今天主要和大家分享一下 ScyllaDB 在这方面的优化。
今天的介绍会围绕下面五点展开:
ScyllaDB 介绍
Row level repair 介绍
Row level repair 实现
实验结果
总结
▌ScyllaDB 介绍
首先给大家简单介绍一下 ScyllaDB:
- ScyllaDB 的产生背景
我们公司是一家具有较多的底层软件开发经验的公司,团队创始人是 KVM 和 OSv 的作者。对于 Cassandra 数据库的优化,我们进行了一系列尝试。最开始是从操作系统的角度,通过提高操作系统的性能来提高 Cassandra 应用的性能,其效果是提高了 Cassandra 约20%的性能而无法再获得更高的性能提升。为了更好地优化 Cassandra,团队开始思考是否可以重新实现 Cassandra。我们首先开发了一个非常高性能的 C 的开源框架 Seastar,然后基于 Seastar 框架改写的 Cassandra 数据库,即 ScyllaDB。
- ScyllaDB 的特点

ScyllaDB 是一个开源的高性能的 Cassandra 的实现,具有以下几个特点:
一个速度极快的 NoSQL 数据库
单个节点的 QPS 可以达到1000000;可以扩展多个节点以提高性能,99%情况下延迟低于1毫秒。
使用 C 开发,没有 GC
每个物理 CPU 只部署一个线程,线程间无共享,无锁
每个物理 CPU 只部署一个线程,每个线程内部会有自己的 task,scheduler。每个线程跑完全独立的 Cassandra 的任务,因此不同线程之间没有共享,从而也没有锁。这样的效果是获得了较大的性能提升,并且在有较多物理核的时候具有较高的可扩展性。
在用户态实现 CPU 和 DISK scheduler,以及可选 TCP/IP 协议栈
在用户态实现 CPU scheduler,不同的任务设定不同的优先级,分配不同的 CPU 资源;进行了磁盘的优化,不使用操作系统的 page cache,完全 DMA 操作,实现 DISK scheduler,精确控制各个模块 DISK 的使用情况;实现了可选的用户态的 TCP/IP 协议栈。
提供 Apache Cassandra 和 Amazon DynamoDB 的 API
▌Row level repair ( 行级修复 )
- 什么是 repair

首先介绍一下什么是 repair

最低0.47元/天 解锁文章
962

被折叠的 条评论
为什么被折叠?



