我们目前正在研究 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);
在上述文档中,他们利用了这种“按日期限制分区行”的概念。但是,我不清楚他们示例中的日期是否是分区键的一部分。