gpt4 book ai didi

cassandra - 如何设置cassandra读写一致性

转载 作者:行者123 更新时间:2023-12-03 13:33:48 26 4
gpt4 key购买 nike

我找不到这方面的文档。我知道cqlsh中有一致性命令,但是读写一致性没有区别。我如何为读写设置不同的一致性级别?

此外,还提到了“默认”一致性级别。默认设置在哪里?是读还是写?

最佳答案

我如何为读写设置不同的一致性级别?

如果您只想更改当前 session 的一致性级别,请使用 CONSISTENCY .

如果要以编程方式更改一致性级别,请使用客户端语言的 cassandra 驱动程序。

由于可以为每个语句设置一致性级别,因此您可以在每个语句上设置它,或者使用 PreparedStatements。如果您使用的是 Java 驱动程序,则可以为 BOTH 读取和写入(但不仅仅是读取和仅写入)配置全局一致性级别。

默认的 [一致性级别] 在哪里设置?是读还是写?

如果要为读取设置与写入不同的一致性级别,则必须在每个语句的基础上进行设置。使用 QueryOptions().setConsistencyLevel设置全局一致性级别(对于 Java 驱动程序)。它用于读取和写入。

为当前 session 设置一致性级别 ,使用 CONSISTENCY命令
来自 cassandra shell (CQLSH)。

例如:

设置一致性以强制大多数节点响应:
CONSISTENCY QUORUM

要查看您当前的一致性级别,只需运行 CONSISTENCY;从 shell :

ty@cqlsh> consistency;
Current consistency level is ONE.

用于编程客户端应用程序 ,使用适当的驱动程序设置一致性级别。

例如,要使用 Java 驱动程序设置每个插入的一致性级别,请调用 QueryBuilder.insertIntosetConsistencyLevel .

例如:
PreparedStatement pstmt = session.prepare(
"INSERT INTO product (sku, description) VALUES (?, ?)");
pstmt.setConsistencyLevel(ConsistencyLevel.QUORUM);

要使用 Java 驱动程序为读取和写入设置全局一致性级别,请执行以下操作:
QueryOptions qo = new QueryOptions().setConsistencyLevel(ConsistencyLevel.ALL);

  • 由于Java驱动只执行CQL语句,对Cassandra既可以读也可以写,所以不可能全局配置Consistency Level只读或者只写。为此,由于可以为每个语句设置一致性级别,因此您可以在每个语句上设置它,或者使用 PreparedStatements。更多信息在 Queries and Results文档。

  • 更多关于读/写一致性级别的资源
  • How consistency level is configured
  • 这里也解释了不同的一致性级别^
  • Cassandra's Java Driver documentation
  • 请参阅 configuring consistency with the Java Driver 中的“一致性级别”部分

  • 关于一致性的其他资源:
    您可能还想查看您的副本放置策略和复制因子(这是其他形式的一致性)。
    我在下面包含了链接以进行很好的衡量:
  • Background on data replication in Cassandra
  • How to update replica strategy and replication factor using CREATE KEYSPACE
  • How consistency affects performance
  • 关于cassandra - 如何设置cassandra读写一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35731452/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com