Database design 混合数据时间序列的Cassandra模式
我是Cassandra的新手,正在尝试创建一个用于存储和查询混合/异构数据时间序列的模式。我对如何对时间戳和混合数据建模有疑问 我的问题可以这样抽象:Database design 混合数据时间序列的Cassandra模式,database-design,cassandra,cql,Database Design,Cassandra,Cql,我是Cassandra的新手,正在尝试创建一个用于存储和查询混合/异构数据时间序列的模式。我对如何对时间戳和混合数据建模有疑问 我的问题可以这样抽象: 我部署了大约1亿个传感器吊舱 每个pod包含不同的传感器组合,其中每个传感器生成双读数或字符串读数 pod每天生成传感器读数列表(例如传感器1、传感器2、传感器5) 对于每个传感器吊舱,我想将其传感器读数存储一天。因此,我计划像这样存储数据: podID:pod的唯一ID dt:表示一整天,如2018年7月10日 num_data:存储数字传
- 我部署了大约1亿个传感器吊舱
- 每个pod包含不同的传感器组合,其中每个传感器生成
或双读数
读数字符串
- pod每天生成传感器读数列表(例如传感器1、传感器2、传感器5)
问题2:我使用
map
数据结构是否是存储混合/变化/异构类型数据的最佳方式 一,。您的主键应该取决于您需要执行的所有查询(特别是where子句?)和您期望的结果(您需要什么类型的排序),记住您没有宽行。2.是的,您可以映射以保持混合数据(例如json)如果pod在一个月内生成的数据超过~100 mb,那么您的第三个选项也会导致宽行。因此,您可能需要每周对数据进行分区。另一方面,如果pod在整个生命周期内只生成很少mb的数据,您的第一个选项也可以,您可以根据pod id查询数据并按时间顺序排序。
CREATE TABLE time_series (
podID text,
dt timestamp,
num_data map<text, double>,
str_data map<text, double>,
PRIMARY KEY (podID, dt)
);
CREATE TABLE time_series (
podID text,
year int,
month int,
day int,
num_data map<text, double>,
str_data map<text, double>,
PRIMARY KEY (podID, (year, month, day))
);
PRIMARY KEY ((podID, month), dt))