如何在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)
。