传感器数据的Apache Cassandra数据建模

时间:2016-05-04 04:45:59

标签: json cassandra data-modeling

我有一组从传感器获得的指标。读取频率约为半秒。我正在考虑使用Apache Cassandra来保存这些传感器数据。以下是单个传感器的一个此类数据的样子:

    "sensor": {
      "123": {
        "externalID": "XXXXX",
        "isEnabled": false,
        "persistence": {
          "isEnabled": true,
          "excludedCommands": []
        },
        "readCommands": {
          "BGAGasLevel": "BGAGasLevel.V",
          "CommAliveAsset": "HBD001.STATE.M",
          "CommAliveVPP": "HBD002.STATE.M",
          "MEM.CACHE": "SRV001.MEM.CACHE.V",
          "BLOCK.OUT": "SRV001.BLOCK.OUT.V",
          "setpointFeedback": "CHP1.ActivePower.SetpointFeedback.V",
          "MEM.FREE": "SRV001.MEM.FREE.V",
          "Error": "CHP1.OutOfService.M",
          "Warning": "CHP1.Warning.M",
          "SWAP.IN": "SRV001.SWAP.IN.V",
          "OperatingHours": "CHP1.OperatingHours.V",
          "LAVG5": "SRV001.LAVG5.V",
          "VPPAlive": "VPPAlive.C",
          "SYS.CS": "SRV001.SYS.CS.V",
          "TSODSOAvailability": "CHP1.TSODSOAvailability.M",
          "LAVG1": "SRV001.LAVG1.V",
          "activePower": "CHP1.ActivePower.CurrentValue.V",
          "CPU.WAIT": "SRV001.CPU.WAIT.V",
          "RemoteControlEnabled": "CHP1.RemoteControlEnabled.M",
          "InOperation": "CHP1.InOperation.M",
          "CPU.USER": "SRV001.CPU.USER.V",
          "MEM.SWAPPED": "SRV001.MEM.SWAPPED.V",
          "BGAAlive": "BGAAlive.M",
          "SYS.INT": "SRV001.SYS.INT.V",
          "EnergyCounter": "CHP1.EnergyCounter.V",
          "CPU.SYS": "SRV001.CPU.SYS.V",
          "BGAGasFlameOn": "BGAGasFlameOn.M",
          "CPU.IDLE": "SRV001.CPU.IDLE.V",
          "MEM.BUFFER": "SRV001.MEM.BUFFER.V",
          "BLOCKED": "SRV001.PROCS.BLOCKED.V",
          "BLOCK.IN": "SRV001.BLOCK.IN.V",
          "OutOfService": "CHP1.OutOfService.M",
          "SetpointIsValid": "CHP1.SetpointIsValid.C",
          "LAVG15": "SRV001.LAVG15.V",
          "SWAP.OUT": "SRV001.SWAP.OUT.V"
        },
        "writeCommands": {
          "setpoint": "CHP1.ActivePower.Setpoint.S",
          "SetpointIsValid": "CHP1.SetpointIsValid.C"
        }
      }
    }

我最终将拥有数百万个这样的传感器,其传感器由其ID识别,在上述情况下为123。每个传感器都有不同的命令集,我可以读写。

所以这是我的问题:

  1. Cassandra是否适合此用例?我一直在探索InfluxDB,OpenTSDB,他们有这个标签的概念,似乎很合适,但我首先想看看Cassandra是否适合。

  2. 我需要开箱即用的HA,因为我会非常频繁地阅读这些数据。用Cassandra做HA的经济效果如何?

  3. 如何使用Cassandra进行水平缩放?这对读/写性能有何影响?

  4. 如何持久存储JSON数据?我的意思是如果我将这些传感器数据分批作为JSON获得,我会将JSON这样保存到Cassandra。

0 个答案:

没有答案