cassandra - 在 cassandra 中为 IOT 进行数据建模

标签 cassandra time-series device iot

我们正在尝试在基于 IoT 的应用程序中使用 Apache Cassandra。我们正计划创建一个设备抽象。任何用户都应该能够定义具有一系列属性的设备。对于每个属性,用户应该能够定义一系列属性,如 名称、数据类型、最小值、最大值等

下面给出了一些设备示例

车辆

车辆可以具有以下属性

  • 速度 [名称:- 速度,数据类型:- double ,最小值:- 0,最大值:-300]
  • 纬度 [名称:- 速度,数据:- 双倍,最小值:- -90,最大值:-90]
  • 经度[名称:- 经度,数据:- double ,最小值:- -180,最大值:- 180]

  • 温度传感器

    温度传感器可以具有以下属性
  • 当前温度[名称:- 当前温度,数据类型:- double ,最小值:- 0,最大值:-300]
  • 单位 [名称:- 单位,数据类型:-字符串]

  • 实时,每个设备都会以键值对的形式发送数据。

    例如:- 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 帖子:
  • https://academy.datastax.com/resources/getting-started-time-series-data-modeling
  • http://www.datastax.com/dev/blog/advanced-time-series-data-modelling
  • http://www.datastax.com/dev/blog/advanced-time-series-with-cassandra
  • 关于cassandra - 在 cassandra 中为 IOT 进行数据建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37631684/

    相关文章:

    python - 选定行的 Pandas 数据框聚合

    session - Cassandra V3 : repair thread hangs when running on multiple nodes

    java - Cassandra NoHostAvailableException Java-CQLDriver

    cassandra - JanusGraph "NoHostAvailableException"在多数据中心

    java - Cassandra java 驱动程序 UDT 映射

    android - 以编程方式获取 Android 手机型号,如何在 android 中以编程方式获取设备名称和型号?

    Python pandas 时间序列插值和正则化

    r - 基于ID的时间序列插补

    android - Unity3D Android 应用程序在所有手机上立即崩溃。

    ios - 身份 'iPhone Developer' 与您的钥匙串(keychain)中任何有效、未过期的证书/私钥对不匹配