现代信息系统的主要要求之一是高数据处理率。在解决此问题的解决方案中,最受欢迎的解决方案是使用高性能数据库。本文将以性能术语回顾和比较两个流行的数据库: Scylla 和 Cassandra:
Cassandra是基于NoSQL存储原理构建的分布式,可扩展且安全的数据库,没有单点故障保证。
Scylla是Cassandra NoSQL的一个高可用性和高性能的嵌入式数据库,可实现超低延迟和高吞吐量的数据处理。
这些数据库使用相同的结构,从而可以更轻松地从一个数据库迁移到另一个数据库。它们之间的主要区别在于,当Cassandra使用Java时,Scylla是用C ++编写的。
因此Scylla具有以下性能优势:
通过避免将程序加载到JVM中来减少CPU资源消耗,
具有更灵活,更复杂的内存管理(C ++设计的程序的属性),
提供自定义网络配置,通过来自用户空间的直接请求而不使用系统内核来最大程度地减少资源使用。
因此,从理论上讲,Scylla应该是比Cassandra更高性能的数据库。但是由于数据和查询的特殊性,理论结果可能与实际结果有所不同。因此,让我们通过访问Scylla和Cassandra数据库中的数据来执行比较基准测试。
标杆选择
两个数据库的性能基准测试过程遵循以下原则:
使用多个数据库版本(修订版)进行更有效的性能比较:
Scylla版本– 2.1.2(Cassandra版本3.0.8),
Cassandra版本– 3.0.16和3.11.2。
对基准测试使用相同的硬件选项:
具有4GB RAM的Scylla和Cassandra,
Linux作业系统(Ubuntu 16.10)。
确定基准测试流程:
编写数据测试
编写和读取数据测试。
基准参数和指标选项:
速率参数:操作,分区,行;
延迟选项:平均值,中位数,百分位数和最大值;
分区:数据分区的总值;
操作时间:所有数据操作的总时间。
使用相同的数据集获得正确和有效的基准测试结果。
基准程序
基准测试流程代表一个迭代过程:预定义算法的循环执行流程-通常是最简单的算法。在我们的例子中,这些算法包括每个数据库的写和读数据过程:Sylla和Cassandra。一般基准流程的结构如下所示。
另外,应注意,所有基准数据操作将使用相同的数据执行。结果将以表格和图表的形式呈现,以便更好地进行分析和比较。
让我们省略基准测试过程的技术细节,只介绍其结果。
写测试
写入测试包括将数据写入数据库并测量描述其性能的许多参数。这些参数根据描述的数据过程进行分组,并具有数值:
速率 参数–描述操作,分区和行的数据速率;
延迟 参数–定义数据库访问过程的反应时间,并以统计形式表示:平均值,中位数,五分位数;
total 参数–通过操作次数及其总时间显示结果值。
我们将基于通常描述数据库性能的参数构建图表。图表显示为每组参数的条形图。
第一张图描述了等待时间参数。我们可以看到,所有数据库的平均延迟值大致相等,但是Cassandra的最大延迟值更高。最大等待时间值仅对少量数据有效,因此通常无法描述数据库的性能。这意味着该参数的数据库性能大致相同。
其余图表描述了运行速率参数及其总时间测量。我们可以看到,通过这些参数,Scylla数据库的性能是Cassandra数据库的6倍以上。
通常,我们可以得出结论,Scylla数据库的数据写入性能要大一个数量级。为了更全面地分析数据库性能,让我们为写入/读取数据过程执行类似的测试。
写/读测试
写入/读取测试包括与先前测试相同的所有数据处理。唯一的区别仅在于测试的简单操作-它包括写入数据和随后的读取。因此,让我们仅以表格和图表形式显示测试结果,然后进行分析。
通过分析结果,我们可以得出结论,读写测试结果的分布模式与之前的测试相匹配:延迟性能大致相同,而操作速率和总时间大约高2.5倍。因此,可以说Scylla数据库的写/读过程性能要比Cassandra高。
结论
在本文中,我们使用基准过程比较了两个流行的Scylla和Cassandra数据库的性能。根据所需参数组对数据写入和写入/读取过程进行了测试,结果表明,通常Scylla比Cassandra更快。
关注 CDA人工智能学院 ,回复“录播”获取更多人工智能精选直播视频!