В настоящее время мы изучаем Cassandra как базу данных для большой системы временных рядов.Моделирование данных временного ряда Cassandra и ограничение размера раздела
Я прочитал https://academy.datastax.com/resources/getting-started-time-series-data-modeling о моделировании временных рядов данных в Кассандре.
То, что у нас есть, - это данные с большими скоростями, поступающими во многие метеостанции. Каждая метеостанция имеет несколько «датчиков», каждая из которых собирает три метрики: температуру, влажность и свет.
Мы стараемся хранить каждую серию как широкий ряд. Однако мы ожидаем получить миллиарды показаний за каждую станцию в течение всего срока действия проекта, поэтому мы хотели бы ограничить размер строки.
Мы хотели бы, чтобы на каждый (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);
В вышеупомянутом документе они используют эту концепцию «предельная разбивка по дате». Однако мне непонятно, является ли дата в их примерах частью ключа раздела.
Мне любопытно, что температура, влажность и свет определяются как целые числа как способ хранения фиксированной точности? Другими словами, точность жестко закодирована в коде приложения? –
Это не моя фактическая модель данных, просто пример аналогичного. – dacox