在Cassandra中存储时间戳的时区信息

时间:2013-12-04 22:42:56

标签: cassandra timestamp cql

据我所知,Cassandra将时间戳存储为自纪元以来的秒(或微秒)。因此,如果我关心特定事件发生的时区,我是否需要将其存储在单独的列中?有关于如何存储的最佳实践或建议吗? GMT的整数偏移量?

1 个答案:

答案 0 :(得分:9)

我们每天在Cassandra集群中存储数百万个时间戳及其时区。

我们建议的做法是将时间戳存储为两个值:

  1. 将时间戳本身存储为时间戳类型或bigint并始终将其与UTC对齐(我们使用.NET datetimes,从0年开始而不是UNIX纪元,所以我们必须使用bigint。)
  2. 将UTC偏移量存储为bigint,以微秒为单位
  3. 这样,默认情况下,我们所有的时间戳都使用相同的时区。但是,每当我们需要在本地时间做某事时,我们只需获取UTC偏移列并从时间戳中减去它以获得当地时间。