我有最近历史记录表。它应该只关心在其分区(user_id)中插入的最后100个宽行。
如果要在100之后插入记录,那么我们应该期望它覆盖最旧的数据。
我的桌子就像是
var array1 = ['a', 'b', 'c', 'd'];
var array2 = ['a', 'v', 'n', 'd', 'i', 'f'];
var array3 = ['1', '2', '3', '4', '5', '6'];
var result = array2.map(function(e, i) {
return e == array1[i] ? array3[i] : e;
})
console.log(result)
我很想让Cassandra为我照顾这个。也许设置一个分区列大小,在限制后循环?卡萨桑德拉可以这样做吗?
您会推荐哪种方法?
我现在能想到的想法是: 1)在选择时使用限制100,然后在100范围之外的记录上调用删除。请注意,这似乎很乏味......
答案 0 :(得分:0)
没办法卷起来。
只是一个想法,你可以将bucketing用于此目的:
CREATE TABLE IF NOT EXISTS user_history (
user_id text,
bucket int,
ts timeuuid,
history_data text,
PRIMARY KEY ((user_id, bucket), ts)
)
WITH CLUSTERING ORDER BY (ts DESC);
这是一个反向时间序列,您可以根据某个自定义存储桶ID进行分区。我们的想法是拥有 N 存储桶,并且每个存储区中最多包含 100 项。
这需要一些应用程序编码,但是: