我想在Cassandra数据库中进行递增操作
简而言之
使用计数器类型。
解释
我想增加/减少
在中文中常见的例子包括PV(页面浏览量)、推文数和收藏数。
经常我们都需要简单地保留这些数据的列,对吧?
比如,我们创建一个类似下面的表(列族)。
CREATE TABLE page_view_counts(
pv int,
url_name varchar,
page_name varchar,
PRIMARY KEY (url_name, page_name)
);
听说你对MySQL很熟悉。
你觉得写下面这样的查询语句没问题吧?
UPDATE page_view_counts
SET pv = pv + 1
WHERE url_name='www.datastax.com' AND page_name='home';
太甜了。CQL并不是那么友善。
UPDATE page_view_counts SET pv = pv + 1 WHERE url_name='www.datastax.com' AND page_name='home';
-> Bad Request: Invalid operation (pv = pv + 1) for non counter column legion
您生气了。
这样做只是为了增加 pv 值,就需要额外地选择当前的 pv 值。
因此,让我们像错误信息中提到的那样使用一个名为 counter 的数据类型。
CREATE TABLE counterks.page_view_counts(
pv counter, // コレ
url_name varchar,
page_name varchar,
PRIMARY KEY (url_name, page_name)
);
再一次。
UPDATE page_view_counts SET pv = pv + 1 WHERE url_name='www.datastax.com' AND page_name='home';
-> OK