Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra 计算列中的实例_Cassandra_Cql - Fatal编程技术网

Cassandra 计算列中的实例

Cassandra 计算列中的实例,cassandra,cql,Cassandra,Cql,我有下表 mykey.mytable id | user | item ------------------ 0 | 'matt' | 'ball' 1 | 'bob' | 'bat' 2 | 'bill' | 'fridge' 3 | 'matt' | 'beer' 例如,我想要的是用户数量 user | count -------------- 'matt' | 2 'bob' | 1 'bill' | 1 在卡桑德拉我该怎么做 FWIW,我已经用count*、ba

我有下表

mykey.mytable

id | user   | item
------------------
 0 | 'matt' | 'ball'
 1 | 'bob'  | 'bat'
 2 | 'bill' | 'fridge'
 3 | 'matt' | 'beer'
例如,我想要的是用户数量

user   | count
--------------
'matt' | 2
'bob'  | 1
'bill' | 1
在卡桑德拉我该怎么做


FWIW,我已经用count*、batch、counter和使用一个select的结果进行了实验。文档并没有多大帮助,我的GoogleFoo也找不到任何例子。我有点沮丧了

不幸的是,Cassandra CQL没有聚合框架。因此,虽然您可以在具有GROUPBY和COUNT的关系数据库中轻松地执行此操作,但Cassandra没有这样的机制

非关系型NoSQL数据建模的主要原则之一是构建表以匹配查询模式。如果您需要查询用户项的数量,则可以创建另一个表来保存该信息:

CREATE TABLE userItemCount (
user text,
itemCount counter,
PRIMARY KEY (user)
);
通过CQL,假设Matt获得另一项,您可以像这样递增计数器:

UPDATE userItemCount SET itemCount=itemCount+1 WHERE user='matt';
当然,缺点是,当条目存储在原始表中时,需要构建一种机制来添加/增加适当的数据


有关此和其他Cassandra开发概念的视频演练,请查看Datastax Academy上的免费Java/Cassandra类:。第2课时,单元43介绍了计数器表的使用。

文档在哪些方面没有太大帮助。你有SQL的知识吗?@Raedwald CQL是SQL的一个子集。因此,SQL的知识在这里没有多大帮助。@BryceAtNetwork23它有助于基础知识,例如SELECT是什么。@Raewald我对SQL和RDBMS的知识证明是一个更大的问题。从RDB获取此信息是很简单的。我没想到要花5个小时来解释Cassandra的CQL实现。不过一切都很好,多亏了布莱塞特网络23,我又搬家了。谢谢,这正是我需要的。你知道一个在线教程,涵盖了这个和其他实际实现的东西吗?“我听到了一些理论,但找不到详细介绍或示例。@MattStevens编辑中包含了对DataStax Academy的Java开发中使用Apache Cassandra类的视频模块的引用。