Cassandra表结构建议和查询方式

时间:2014-04-14 10:41:32

标签: cassandra cassandra-cli

我正在尝试创建以下层次结构: UserId 作为rowKey,每小时时间序列作为列,在每小时列中,我希望有一个用户特定信息,例如每小时活动。

{
   UserId:long
   {
      Timestamp:datetime{
         pageview: integer,
         clicks:integer
      }
   }

我读过可以使用supercolumns来实现它,但与此同时提到supercolumns现在已经过时了。如果是真的,我可以使用任何替代品吗?

你能不能给我提供CQL / Java thrift示例我应该如何在Cassandra中创建和插入这种类型的结构?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以为此使用复合主键,我为表添加表创建CQL查询。您可以使用计数器列进行点击。

CREATE TABLE user_click_by_hour(
userid long,
time_stamp timestamp,
clicks int,
pageview int,
PRIMARY KEY(userid,time_stamp)

答案 1 :(得分:0)

如果您的信息受特定使用和一起访问。例如,如果您在任何时候,需要点击和网页浏览,我建议您将其用作json商店

CREATE TABLE user_click_by_hour(
userid long,
time_stamp timestamp,
val text,
PRIMARY KEY(userid,time_stamp)
)

val是一个包含点击次数,综合浏览量等的json对象。

<强>优势

1.您无需担心更改表格以添加额外的列,这会为每个前一个条目添加空值

  1. 如果指定此数据增长,则必然会节省大量空间,因为每个节点中的列元数据少一个