在本文中,我们将讨论如何在 Cassandra 中创建计数器类型列以及将计数器列用作表中的数据类型时有哪些限制,我们将了解如何使用更新查询来更新计数器列。让我们一一讨论。
计数器是一个特殊的列,用于存储此更改后递增的数字。例如,您可以使用计数器列来计算页面被查看的次数。因此,我们只能在专用表中定义一个计数器并使用该计数器数据类型。
对计数器列的限制:
- 计数器列不能索引、删除或重新添加计数器列。
- 表中的所有非计数器列都必须定义为主键的一部分。
- 要在计数器列中加载数据或增加或减少计数器的值,请使用更新命令。
现在,我们将创建带有 Counter 列的表。我们来看一下。
Create table View_Counts
(
count_view counter,
name varchar,
blog_name text,
primary key(name, blog_name)
);
让我们看看表架构。
describe table View_Counts;
输出:
现在,我们将在 Update 子句的帮助下为计数器列插入值。
我们来看一下。
update View_counts set count_view = count_view+1
where name = 'Ashish'and blog_name = 'cassandra';
让我们看看结果。
select *
from View_Counts;
输出:
现在,我们将在 Update 子句的帮助下更新计数器列的值。
我们来看一下。
update View_counts set count_view = count_view + 4
where name = 'Ashish'and blog_name = 'cassandra';
让我们看看结果。
select *
from View_Counts;
输出:
我们还可以在 Update 子句的帮助下递减计数器列的值。我们来看一下。
update View_counts set count_view = count_view - 4
where name = 'Ashish'and blog_name = 'cassandra';
让我们看看结果。
select *
from View_Counts;
输出:
Cassandra 拒绝在命令中使用时间星或使用 TTL 来更新计数器列。因此,让我们创建一个 View_Counts 表。所以,我们创建了 count_view,这是一个 counter 类型的计数器值。这很重要,我们有一个名字和 blog_name,我们可以看到主键是有一个名字和 blog_name。
如果我们尝试创建一个类似的表,假设 – copy_View_Counts 并且主键将是唯一的名称,我们将收到错误消息。因为如果它们不是主键,则不能在同一个表中混合计数器和非计数器列。我们来看一下。
让我们通过一个例子来理解。
Create table copy_View_Counts
(
count_view counter,
name varchar,
blog_name text,
primary key(name)
);
在这里,所有非计数器列都必须是主键的一部分。但是,唯一的名称是主列的唯一部分,这就是它给出错误的原因。我们来看一下。
让我们看看结果。
select *
from View_Counts;
输出: