我一直在与 Cassandra 合作,但遇到了一些绊脚石。对于我需要如何搜索数据,我发现复合主键非常适合我需要的内容,但是此列族中记录的插入时间随它而去,我不完全确定为什么。
表定义:
CREATE TABLE exampletable (
clientid int,
filledday int,
filledtime bigint,
id uuid,
...etc...
PRIMARY KEY (clientid, filledday, filledtime, id)
);
clientid = 客户端的内部 id。fillday = 自 1900 年 1 月 1 日以来的天数。填充时间 = 接收记录的当天的刻度数。id = 指导。
存在日期和时间结构是因为我需要能够轻松快速地按天过滤。
我知道 Cassandra 以完全不同的方式存储具有复合主键的列族。据我了解,它将所有内容作为新列存储在主键主要组件的基本行之外。这是插入速度慢的原因吗?当我说慢时,我的意思是,如果我在 id 上只有一个主键,则插入将花费约 200 毫秒,并且使用复合主键(或它的任何子集,我只尝试了 clientid 和 id 以达到相同的效果)它将需要1000 条记录超过 32 秒。复合键表中的选择时间更快,因为我必须应用二级索引并使用“ALLOW FILTERING”
我是否声明列族或主键对于我正在尝试做的事情是错误的?对于所有未列出的非主键列,该表的宽度为 37 列,这会是问题吗?在这一点上,我很困惑。我无法真正找到其他人遇到类似问题的任何信息。