本文共 3973 字,大约阅读时间需要 13 分钟。
cassandra 优化
Apache Cassandra是一个数据库。 但这不仅仅是任何数据库; 它是一个为可伸缩性,高可用性,低延迟和性能而设计和调整的复制数据库。 Cassandra可以帮助您的数据在区域中断,硬件故障以及许多管理员认为过多数据的情况下幸免。
掌握完备的数据分区命令可以使您实现出色的Cassandra集群设计,性能和可伸缩性。 在本文中,我将研究如何定义分区以及Cassandra如何使用它们,以及您应注意的最关键的最佳实践和已知问题。
Cassandra作为分布式系统运行,并遵守上述数据分区原则。 使用Cassandra,数据分区取决于在群集级别配置的算法和在表级别配置的分区键。
Cassandra查询语言(CQL)使用熟悉SQL表,行和列术语。 在上面的示例图中,表配置在其主键中包括分区键,其格式为:主键=分区键+ [群集列]。
Cassandra中的主键既代表唯一的数据分区,又代表分区内的数据排列。 数据排列信息由可选的群集列提供。 每个唯一的分区键代表服务器中管理的一组表行以及管理其副本的所有服务器。
以下四个示例演示了如何用CQL语法表示主键。 这些定义所产生的行集通常被视为分区。
CREATE TABLE server_logs ( log_hour TIMESTAMP PRIMARYKEY , log_level text , message text , server text )
在这里,所有共享log_hour的行都进入同一分区。
CREATE TABLE server_logs ( log_hour TIMESTAMP , log_level text , message text , server text , PRIMARY KEY ( log_hour , log_level ) )
此定义使用与定义1相同的分区键,但此处每个分区中的所有行均按log_level升序排列。
CREATE TABLE server_logs ( log_hour TIMESTAMP , log_level text , message text , server text , PRIMARY KEY ( ( log_hour , server ) ) )
在此定义中,所有行将每个不同的服务器共享一个log_hour作为一个分区。
CREATE TABLE server_logs ( log_hour TIMESTAMP , log_level text , message text , server text , PRIMARY KEY ( ( log_hour , server ) , log_level ) ) WITH CLUSTERING ORDER BY ( column3 DESC ) ;
此定义使用与定义3相同的分区,但按log_level降序排列分区中的行。
Cassandra依赖于分区键来确定在哪个节点上存储数据以及在需要时将数据放置在何处。 Cassandra通过查看表中的分区键并使用令牌(范围从-2 ^ 63到+ 2 ^ 63-1的长值)进行数据分配和索引来执行这些读取和写入操作。 这些令牌通过使用分区程序映射到分区键,该分区程序应用了分区功能,该功能将任何分区键转换为令牌。 通过这种令牌机制,Cassandra群集的每个节点都拥有一组数据分区。 然后,分区键将在每个节点上启用数据索引。
仔细的分区键设计对于实现用例的理想分区大小至关重要。 正确设置它可以实现均匀的数据分发和强大的I / O性能。 分区大小对您需要注意的Cassandra群集有几个影响:
尽管这些影响可能会让您很想去简单地设计产生特别小的分区的分区键,但是数据访问模式也对理想的分区大小有很大的影响(有关更多信息,请阅读有关的深入指南)。 可以将数据访问模式定义为如何查询表,包括表的所有选择查询。 理想情况下,CQL选择查询应该在where子句中只有一个分区键-也就是说,当查询可以从单个分区而不是许多较小的分区中获取所需数据时,Cassandra效率最高。
遵循分区键设计的最佳实践可帮助您达到理想的分区大小。 根据经验,Cassandra中的最大分区大小应保持在100MB以下。 理想情况下,它应小于10MB。 虽然Cassandra 3.6版和更高版本使更大的分区大小更可行,但必须对每个工作负载进行仔细的测试和基准测试,以确保分区键设计支持所需的群集性能。
具体来说,这些最佳做法应被视为任何分区键设计的一部分:
有几种工具可用来帮助测试,分析和监视Cassandra分区,以检查所选模式是否有效。 通过精心设计分区键以使其与手头解决方案的数据和需求很好地匹配,并遵循最佳实践来优化分区大小,您可以利用数据分区,从而更充分地发挥Cassandra部署的可伸缩性和性能潜力。
翻译自:
cassandra 优化
转载地址:http://cnszd.baihongyu.com/