В настоящее время мы исследуем Cassandra как базу данных для системы больших временных рядов.
Я прочитал https://academy.datastax.com/resources/getting-started-time-series-data-modeling о моделировании данных временных рядов в Cassandra.
У нас есть данные высокоскоростных временных рядов, поступающие от многих метеостанций. У каждой метеостанции есть несколько «датчиков», каждый из которых собирает три показателя: температуру, влажность и свет.
Мы стараемся хранить каждую серию как широкий ряд. Однако мы ожидаем получить миллиарды показаний на станцию за время существования проекта, поэтому мы хотели бы ограничить размер строки.
Мы хотели бы, чтобы для каждого (weather_station_id, year, day_of_year)
была одна строка, то есть новая строка для каждого дня. Однако мы по-прежнему хотим, чтобы ключ раздела был weather_station_id
, то есть мы хотим, чтобы все показания для станции находились на одном узле.
В настоящее время у нас есть следующая схема, но я хотел бы получить отзывы.
CREATE TABLE weather_station_data (
weather_station_id int,
year int,
day_of_year int,
time timestamp,
sensor_id int,
temperature int,
humidity int,
light int,
PRIMARY KEY ((weather_station_id), year, day_of_year, time, sensor_id)
) WITH CLUSTERING ORDER BY (year DESC, day_of_year DESC, time DESC, sensor_id DESC);
В вышеупомянутом документе они используют концепцию «ограничить разделение строк по дате». Однако мне неясно, является ли дата в их примерах частью ключа раздела.