存储传感器数据的数据库(JSON)

时间:2014-09-25 13:26:35

标签: json database rdbms nosql

我有一个传感器网络,今天每天发送大约20.000条JSON消息,现在我将它们发送给第三方工具进行分析但是为了将来更好的安全我想将这些值存储在我的数据库中可以有另一个用于分析的UI工具。 我想保留历史数据至少2年,可能更多。 访问数据必须快速(例如,选择传感器和两个时间戳之间的值并在图表中显示)

所以我想知道我应该选择什么样的数据库;一个普通的SQL RDMS? (例如MySQL)或noSQL DB(没有偏好)。 你能否就数据库选择提供一些指导?

传感器在启动时出现:

{
    "MonitoredSensors":
    [
        {"DeviceId":"12","Name":"Freezer","Service":"urn:micasaverde-com:serviceId:EnergyMetering1","Variable":"Watts"},
        {"DeviceId":"14","Name":"Server","Service":"urn:micasaverde-com:serviceId:EnergyMetering1","Variable":"Watts"},
        {"DeviceId":"103","Name":"EnergyMeter","Service":"urn:micasaverde-com:serviceId:EnergyMetering1","Variable":"Watts"},
        {"DeviceId":"103","Name":"EnergyMeter","Service":"urn:micasaverde-com:serviceId:EnergyMetering1","Variable":"KWH"},
        {"DeviceId":"89","Name":"TV","Service":"urn:micasaverde-com:serviceId:EnergyMetering1","Variable":"Watts"},
        {"DeviceId":"101","Name":"Living Room Light","Service":"urn:micasaverde-com:serviceId:LightSensor1","Variable":"CurrentLevel"}
    ],
    "Time":1411328122,
    "Version":"0.0.2"
}

每个传感器值报告:

{
    "SensorValue":
    {
        "DeviceId":89,
        "NewValue":"161",
        "Time":1411596034,
        "Variable":"Watts",
        "Version":"0.0.2"
    }
}

感谢您的任何建议

2 个答案:

答案 0 :(得分:0)

基本上任何常见的RDBMS都应该能够轻松应对。如果您只想进行少量不同的分析,则可以使用物化视图使其更快。

如果您不想反序列化JSON数据,只需将原始JSON放入DataBase,您可以使用:

  • MongoDB - 允许您轻松,几乎类似SQL的查询,并且一旦您定义了正确的索引就会很快
  • CouchDB / CouchBase - 与RDBMS的物化视图类似,只是原始JSON。缺点是您无法预先运行尚未创建任何视图的查询。

答案 1 :(得分:0)

我同意@peter,可能任何RDBMS都可以处理20000 * 365 * 2~1460万条记录进行分析。

最重要的是,您提到了JSON记录。我认为这里假设JSON记录的格式可能与不同的传感器不同或随时间而变化。

为此"半结构化"数据集看看

  1. AVRO - https://avro.apache.org/
  2. 实木复合地板 - https://parquet.apache.org/
  3. 格式可以嵌入类似JSON的格式并支持Schema Evolution

    Althoug AVRO和Parquet不是数据库,但有很多数据库和#34; AVRO和Parquet在其他数据格式中原生工作:

    • Spark
    • Hive
    • 帕拉

    仅举几例。以上所有这三个都是非常可扩展的,以防万一你以后决定每天流量不是20k而是20m消息。