文档中关于CQL计数器类型的矛盾信息

2lpgd968  于 2022-09-27  发布在  Cassandra
关注(0)|答案(1)|浏览(137)

我一直在寻找柜台上的一些信息,关于你可以用它们做什么,似乎有一些相当矛盾的信息。
根据官方DataStax文档(https://docs.datastax.com/en/cql-oss/3.x/cql/cql_reference/counter_type.html),“您不能设置计数器的值,它支持两种操作:递增和递减。”。
然而,如果我们查看BATCH CQL文档(https://docs.datastax.com/en/dse/6.0/cql/cql/cql_reference/cql_commands/cqlBatch.html#cqlBatch__batch-更新),底部的示例包括设置、添加和减去批处理中的计数器变量。
这个例子也可能打破了一条规则,即在一个表中有一个计数器应该只为该表的其余部分有计数器。
那么cassandra DataStax中计数器的限制/可用性到底是什么?似乎没有一个明确的定义。

flmtquvp

flmtquvp1#

我认为这只是一个误会。这些页面并不相互矛盾。
CQL Counter type页面正确地声明不可能设置counter列的值。例如,这是无效的:

UPDATE ks.counter_table
    SET count = 10
    WHERE pk = ?

counter列上唯一有效的操作是递增和递减。以下是一些示例:
b1a1ab

UPDATE ks.counter_table
  SET count = count - 1
  WHERE pk = ?

在BATCH命令页面中,前两个示例是递增操作:

UPDATE cycling.popular_count
  SET popularity = popularity + 1
  WHERE id = 6ab09bec-e68e-48d9-a5f8-97e6fb4c9b47;
UPDATE cycling.popular_count
  SET popularity = popularity + 125
  WHERE id = 6ab09bec-e68e-48d9-a5f8-97e6fb4c9b47;

最后一个示例是减量操作:

UPDATE cycling.popular_count
  SET popularity = popularity - 64
  WHERE id = 6ab09bec-e68e-48d9-a5f8-97e6fb4c9b47;

我看不出这些例子如何打破了计数器表中只有计数器的规则。从示例中,我可以推断表模式是:

CREATE TABLE cycling.popular_count
    id uuid,
    popularity counter,
    PRIMARY KEY(id)
)

表中可以有任意多个非counter列,只要它们是PRIMARY KEY的一部分。
作为补充说明,将软件称为“Cassandra DataStax”或“DataStax Cassandra”是不正确的,因此我相应地更新了标题。DataStax(公司)不拥有Cassandra。更合适的引用是“Apache Cassandra”或简单的“Cassandra”。干杯

相关问题