如何在卡桑德拉最好地存储时间戳或日期

时间:2017-09-21 17:30:49

标签: cql cassandra-3.0

我需要在Cassandra中存储最后推送日期,并想知道最好的方法是什么,因为它只是一列和一行。请指教。

2 个答案:

答案 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是为了快速存储数据而制作的,并且具有处理一致性和复制的内部方法。