Cassandra - 对分区日期键使用 "date" 与 "text" 类型



我们有一个模式,分区密钥将是日期(yyyy-mm-dd),我们正在考虑在 text> text 和<之间选择数据类型strong> date 对于此分区密钥。

一种数据类型是否会提供比另一种数据的好处,并且它们在查询/存储方面有何不同?

这是一个示例模式。

CREATE TABLE test.user_sessions (
    sess_date date (or text),
    sess_starttime timestamp,
    event_type text,
    total_req int,
    ended_at timestamp
    PRIMARY KEY (sess_date, sess_starttime)
);

cassandra日期类型:

值是没有相应时间值的日期;卡桑德拉(Cassandra)编码日期为32位整数,代表以来(1970年1月1日)

以来的天数

卡桑德拉文本类型:

UTF-8编码字符串;每个字符16位

如果将日期(YYYY-MM-DD)存储为日期数据类型,则每个条目只需32位。另一方面,如果将日期存储为文本,则需要10*16 = 160位存储。

根据您的评论,如果您需要最大的可移植性,请将信息存储为时间戳(即64位编号),与yyyy-mm-dd 00:00相对应:00(截断的时间戳)。"通用"号码不会出错...

相关内容

最新更新