如果我想按时间窗口划分我的主键,那么(为了存储和检索效率)使用时间的文本表示还是截断的本机时间戳(例如
CREATE TABLE user_data (
user_id TEXT,
log_day TEXT, -- store as 'yyyymmdd' string
log_timestamp TIMESTAMP,
data_item TEXT,
PRIMARY KEY ((user_id, log_day), log_timestamp));或
CREATE TABLE user_data (
user_id TEXT,
log_day TIMESTAMP, -- store as (timestamp-in-milli - (timestamp-in-mills mod 86400)
log_timestamp TIMESTAMP,
data_item TEXT,
PRIMARY KEY ((user_id, log_day), log_timestamp));发布于 2013-07-05 07:46:55
关于您的列键"log_timestamp":如果您正在使用多个编写客户机--我建议这样做,因为否则您可能无法接近像C*这样的分布式写优化数据库中的可能吞吐量--您应该考虑使用时间而不是时间戳,因为它们是无冲突的(假设MAC地址是唯一的)。否则,您必须保证不会同时发生两个插入,否则您将丢失此数据。您可以在TimeUUID和其他基于时间的操作上执行列切片查询。
发布于 2013-05-23 12:32:09
我会在任何一种格式上使用unix时间 (即1234567890) --指向一整天,您只需在00:00使用时间戳。
但是,我非常推荐在DataStax开发博客上阅读DataStax。它涵盖了在您的模型中需要考虑的一些重要事项,涉及到斗/分。
https://stackoverflow.com/questions/16709874
复制相似问题