如何在Cassandra中使用集群键内的静态列

如何在Cassandra中使用集群键内的静态列,cassandra,Cassandra,我有一张桌子 CREATE TABLE my_table ( user_id text, add_id text, other_user_id text, date timestamp, PRIMARY KEY (user_id, add_id, other_user_id) ); 我想共享的列日期不是孔分区(即用户id),而是用户ud/add\u id级别 因此,我想要的是类似于将日期设置为静态列的东西,但是要考虑添加id 所需表格的示例: 'use


我有一张桌子

CREATE TABLE my_table (
    user_id text,
    add_id  text,
    other_user_id text,
    date timestamp,
    PRIMARY KEY (user_id, add_id, other_user_id)
);
我想共享的列日期不是孔分区(即用户id),而是用户ud/add\u id级别

因此,我想要的是类似于将日期设置为静态列的东西,但是要考虑添加id

所需表格的示例:

'user1'  'add1'  'otheruser1' date1
'user1'  'add1'  'otheruser2' date1
'user1'  'add1'  'otheruser3' date1

'user1'  'add2'  'otheruser4' date2
'user1'  'add2'  'otheruser5' date2
'user1'  'add2'  'otheruser6' date2
(*中间的空格用于解释)

这是可能的吗?如果是,怎么做?


更多解释:

关系数据库中关系将是一个表:
[用户id(pk)|添加id(pk)|日期]

主键

Cassandra表中的另一个用户id是我正在做的一个实验,目的是提高Cassandra的读取时间,代价是惩罚写入时间


谢谢

如果每个
add\u id
的日期保持不变,那么我建议使用
date
作为主键,而不是
其他用户id

CREATE TABLE my_table (
    user_id text,
    add_id  text,
    date timestamp,
    other_user_id text,
    PRIMARY KEY (user_id, add_id, date)
);
它将创建具有单个键的分区
(user1,add1,date1)

记录将是:

'otheruser1'
'otheruser2'
'otheruser3'

目前,在群集级别上不可能有静态列。我在这里创建了一个,但它被驳回了

谢谢@doanduyhai!,我希望有一个解决办法:(@George你可以投这张票。如果有足够多的人要求这个功能,他们可能会重新打开它。我相信静态集群列对于某些用例是合理的。我不会让你对很快获得这个功能抱有希望。我认为现在实现的静态列可以被称为“优雅的黑客”在现有存储引擎的基础上。要按照建议实现静态列,需要对存储引擎进行大量的重新工作才能正确实现。您好@Vitthal,我不想将日期作为主键,因为这样可能会使我有两个(或更多)用户id,请添加具有不同日期的id。您能描述一下您的用例吗您将如何从该表中读取数据(查询模式)。我认为上下文将有助于开发一些替代数据模型。例如:根据您的用例,您可以将add_id设置为timeuuid,并且它可以(潜在地)作为唯一id和时间戳提供双重任务。Hi@fromanator我不想将时间作为主键的一部分,因为我想防止两行具有相同的用户id和添加id,但具有不同的时间。谢谢您的提问!如果您使用复合分区键
(用户id,添加id),对您有效吗
?您的静态列将与
(用户id,添加id)
对相关联。因此,您的完整主键看起来像
主键((用户id,添加id),其他用户id)