我需要在Cassandra中存储最后推送日期,并想知道最好的方法是什么,因为它只是一列和一行。请指教。
答案 0 :(得分:1)
您可以创建一个以bucket
作为分区键的表。
这种方式使用常量存储区ID 0,您可以仅通过INSERT
操作更新该值。这被称为" upsert"在卡桑德拉。
CREATE TABLE last_push_date (
bucket INT,
last_push_date DATE,
PRIMARY KEY (bucket)
);
要插入和更新相同的last_push_date
值,您只需使用存储桶0插入命令:
INSERT INTO last_push_date (bucket, last_push_date) VALUES (0, '2017-11-11');
INSERT INTO last_push_date (bucket, last_push_date) VALUES (0, '2017-11-13');
选择last_push_date
将返回上次插入的结果:
SELECT * FROM last_push_date WHERE bucket = 0;
bucket | last_push_date
--------+----------------
0 | 2017-11-13
如果您想让另一个last_push_date
使用另一个存储桶ID。
答案 1 :(得分:0)
有点不清楚你真正要求的是什么......但是我会试一试。
我认为你已经回答了你的问题 - 只有一列和一行,这对Cassandra的运作方式没有任何实际影响。根据我的经验,没有任何最佳的存储此类信息的特定方式--Cassandra是为了快速存储数据而制作的,并且具有处理一致性和复制的内部方法。