我们正在尝试在基于 IoT 的应用程序中使用 Apache Cassandra。我们正计划创建一个设备抽象。任何用户都应该能够定义具有一系列属性的设备。对于每个属性,用户应该能够定义一系列属性,如 名称、数据类型、最小值、最大值等
下面给出了一些设备示例
车辆
车辆可以具有以下属性
温度传感器
温度传感器可以具有以下属性
实时,每个设备都会以键值对的形式发送数据。
例如:- A 车辆可以发送以下数据
时间:- 6/4/2016 11:15:15.150,纬度:-1.256,经度:- -180.75,速度:- 50
时间:- 6/4/2016 11:15:16.150,纬度:-1.257,经度:- -181.75,速度:- 51
例如:- A 温度传感器 可以发送以下数据
时间:- 6/4/2016 11:15:15.150,当前温度:100,单位:华氏度
时间:- 6/4/2016 11:15:16.150,纬度:101,单位:华氏度
由于不同设备的属性可能不同,我们对cassandra中的表格如何建模感到困惑......想到的一些选项是为设备创建表,或创建单个表并将值存储在 Map 数据类型中......我们对应该采取哪种方法几乎没有困惑......
任何建议表示赞赏
最佳答案
我认为最好的选择是只创建一个具有通用模式的表来收集时间序列数据。
示例 CQL:
CREATE TABLE timeline (
device uuid,
time timeuuid,
key text,
value blob,
…
PRIMARY KEY ((device, key), time)
);
值可以存储为 blob(自定义序列化)、映射或数字标量,具体取决于您的应用程序用例和数据访问模式(如何读/写/删除以及您是否计划支持 更新 )。
仅供引用,有关时间序列建模的有用的相关 Datastax 帖子:
关于cassandra - 在 cassandra 中为 IOT 进行数据建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37631684/