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

Chr*_*s H 3 timestamp cql cassandra

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

Aar*_*web 9

我们每天在我们的Cassandra集群中存储数百万个时间戳和时区.

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

  1. 将时间戳本身存储为时间戳类型或bigint并始终将其与UTC对齐(我们使用.NET日期时间,从0年开始而不是UNIX时期,因此我们必须使用bigint.)
  2. 将UTC偏移量存储为bigint,以微秒为单位

这样,我们所有的时间戳默认情况下都使用相同的时区.但是,每当我们需要在本地时间做某事时,我们只需获取UTC偏移列并从时间戳中减去它以获得本地时间.