apache cassandra阅读说明

qyyhg6bp  于 2021-06-15  发布在  Cassandra
关注(0)|答案(3)|浏览(297)

我目前正在管理一个由5个节点组成的percona xtradb集群,每天有数百万的insert。写性能很好,但读取速度不是很快,特别是当我请求一个大数据集时。
插入的记录是传感器时间序列。
我想尝试用apachecassandra代替percona集群,但我不明白数据读取是如何工作的。我正在寻找一些能够分裂查询周围的所有节点和读取并行从一个以上的节点。
我知道Cassandra碎片可以有碎片复制品。如果我有5个节点,并且我将复制因子设置为5,那么读取速度是否会快5倍?

jm2pwxwz

jm2pwxwz1#

如果我有5个节点,并且我将复制因子设置为5,那么读取速度是否会快5倍?
不可以。这意味着您将拥有多达5个数据副本,以确保在节点关闭时可以满足您的查询。Cassandra不为阅读而分工合作。相反,它试图迫使您以一种使读取高效和快速的方式来设计数据。

xzlaal3s

xzlaal3s2#

Cassandra读取路径
客户机发起的读取请求被发送到协调器节点,协调器节点检查分区器哪些副本负责数据以及是否满足一致性级别。
协调员将检查它是否对数据负责。如果是,将满足请求。如果没有,它会将请求发送到最快的应答副本(这是使用动态告密器确定的)。此外,请求摘要会发送到其他副本。
节点将比较返回的数据摘要,如果所有摘要都相同并且满足一致性级别,则从最快的应答副本返回数据。如果摘要不相同,协调器将发出一些读取修复操作。
在节点上执行了几个步骤:check row cache、check memtables、check sstables。更多信息:如何读取数据?和readpathforusers。
负载平衡查询
由于复制因子等于节点数,这意味着每个节点将保存所有数据。因此,当协调器节点将接收到一个read查询时,它将从自身满足它。特别是(如果您使用本地一致性级别,请求将非常快)。
客户机驱动程序实现负载平衡策略,这意味着您可以在客户机上配置查询在集群中的分布方式。更多的阅读客户端

z0qdvdin

z0qdvdin3#

读取cassandra的最佳方法是确保生成的每个查询都命中cassandra分区。这意味着简单主键(x,y,z)的第一部分和复合主键((x,y,z)的第一个括号将作为查询参数提供。这又回到了cassandra表设计原则,即根据查询需要进行表设计。
复制是关于数据的拷贝,分区是关于分发数据。https://docs.datastax.com/en/cassandra/3.0/cassandra/architecture/archpartitionerabout.html
关于Cassandra模型的一些参考资料,https://www.datastax.com/dev/blog/the-most-important-thing-to-know-in-cassandra-data-modeling-the-primary-key
https://www.datastax.com/dev/blog/basic-rules-of-cassandra-data-modeling
建议使用100 mb的分区,但不是强制的。
您可以使用cassandra stress实用程序生成一个look报告,报告您的读写情况。

相关问题