2013-12-04 4 views
3

Я понимаю, что Cassandra хранит временные метки как секунды (или микросекунды) с эпохи. Так что, если мне интересно о часовом поясе, в котором произошло конкретное событие, мне нужно сохранить его в отдельном столбце? Есть ли какие-либо рекомендации или рекомендации по их сохранению? Целое смещение от GMT?Хранение информации о часовом поясе для отметки времени в Кассандре

ответ

9

Мы храним миллионы временных меток и их временные интервалы в нашем кластере Cassandra в день.

Наша рекомендуемая практика для хранения временных меток в виде двух значений:

  1. магазин метка времени сама как тип метки времени или BIGINT и всегда привести его в соответствие с UTC (мы используем .NET DateTimes, которые начинаются с нулевого года и не UNIX эпохи, поэтому мы должны использовать BIGINT.)
  2. Хранить UTC смещение как BIGINT, в микросекундах

таким образом, все наши временные метки, по умолчанию, используя тот же часовой пояс по всем направлениям , Однако, когда нам нужно что-то делать по местному времени, мы можем просто получить столбец смещения UTC и вычесть его из метки времени, чтобы получить местное время.

+0

Вам нужно когда-либо работать с временной меткой в ​​произвольном часовом поясе (т. Е. Часовом поясе не в смещении, которое вы сохранили)? Помогает ли этот подход? –

+1

@CrescentFresh yes - если вы знаете, что дата-время всегда хранится в формате UTC, и вам нужно работать в каком-то другом часовом поясе, вы всегда можете вычислить дату и время в этом третьем часовом поясе (не UTC, а не сохраненный часовой пояс), просто применяя UTC смещение к сохраненному дате времени. – Aaronontheweb

+0

не хранит неправильное смещение UTC? Почему бы не сохранить информацию о часовом поясе, чтобы вы могли вычислить смещение UTC. Таким образом, если смещение UTC изменится, ваши значения будут корректироваться. –

Смежные вопросы