ScyllaDB:用 C++ 重写后的 Cassandra ,性能提高了十倍

2024-05-15 16:58

本文主要是介绍ScyllaDB:用 C++ 重写后的 Cassandra ,性能提高了十倍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

   转自:  http://blog.jobbole.com/93027/

   在 9 月下旬的 Cassandra 峰会上,Avi Kivity、Dor Laor 和 Benny Schnaider 宣布推出 ScyllaDB,宣称是用 C++ 重写后的 Cassandra,性能提高 10 倍,并且延迟极低。新的 ScyllaDB 每个节点每秒能处理 1 百万交易。

Cassandra 是一个开源的分布式数据库管理系统,一个能处理大负载数据的 NoSQL 数据库,可跨在多个分布在不同地理位置数据中心的集群。

Cassandra 项目诞生于 Facebook,后来团队有人跳到 Amazon 做了另外一个 NoSQL 数据库 DynamoDB。

Cassandra 最终于 2009 年开源,随后转交给 Apache 软件基金会管理并到至今。

和其他大多数 NoSQL 数据库不同,Cassandra 是用 Java 实现的,而 MongoDB 是用 C++,Redis 则是用 C/C++,详见《8 种 NoSQL 数据库系统对比》。

这种特殊性驱使开发者着手做 ScyllaDB,并创建了一个名为 Seaster 的独一无二的 C++ 框架,用于帮助他们把 Java 代码移植到一个基于异步的新架构,并最终取得了惊人的性能提升。

ScyllaDB 官网自称是世界上最快的 NoSQL 列存储数据库。每个节点每秒可处理一百万的交易,完全兼容 Cassandra,在压缩或垃圾回收时无需暂停;快速、可预测地扩展,在常规生产负载时候可以添加或删除节点。

ScyllaDB 的开发团队成员来自于 KVM 虚拟化管理器 ——  Avi Kivity、Dor Laor, Benny Schnaider 和 OSS 老成员。

ScaDByll 和 Seastar 都已经在 GitHub 上开源了。

  • https://github.com/scylladb/scylla
  • https://github.com/scylladb/seastar

这篇关于ScyllaDB:用 C++ 重写后的 Cassandra ,性能提高了十倍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/992397

相关文章

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

JAVA覆盖和重写的区别及说明

《JAVA覆盖和重写的区别及说明》非静态方法的覆盖即重写,具有多态性;静态方法无法被覆盖,但可被重写(仅通过类名调用),二者区别在于绑定时机与引用类型关联性... 目录Java覆盖和重写的区别经常听到两种话认真读完上面两份代码JAVA覆盖和重写的区别经常听到两种话1.覆盖=重写。2.静态方法可andro

C++中全局变量和局部变量的区别

《C++中全局变量和局部变量的区别》本文主要介绍了C++中全局变量和局部变量的区别,全局变量和局部变量在作用域和生命周期上有显著的区别,下面就来介绍一下,感兴趣的可以了解一下... 目录一、全局变量定义生命周期存储位置代码示例输出二、局部变量定义生命周期存储位置代码示例输出三、全局变量和局部变量的区别作用域

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon