第12章:数据处理与存储

物联网产生的海量数据如果得不到有效存储和分析,就是一堆数字垃圾。本章将介绍如何高效地处理这些数据。

12.1 数据格式 (Data Format)

设备与云端通信时,数据载体至关重要。

12.1.1 JSON (JavaScript Object Notation)

  • 优点:人眼可读,解析方便,兼容性最好。
  • 缺点:冗余字符多,浪费带宽。
  • 示例
    {
      "temp": 25.5,
      "hum": 60,
      "ts": 1678888888
    }

12.1.2 Protocol Buffers (Protobuf)

  • 优点:Google 开发,二进制压缩,体积极小,解析速度快。
  • 缺点:不可读,需要预定义 .proto 文件。
  • 应用:带宽极贵的 NB-IoT 设备。

12.2 时序数据库 (Time Series Database, TSDB)

物联网数据最显著的特征是带时间戳持续产生。传统的关系型数据库(如 MySQL)在处理这种高并发写入时会遇到瓶颈。

为什么选择 InfluxDB?

  • 高吞吐写入:专为时序数据设计,每秒可处理数十万点写入。
  • 自动过期:支持 Retention Policy,自动删除过期数据(如只保留最近 30 天)。
  • 高效查询:内置时间聚合函数(如“查询过去一小时每分钟的平均温度”)。

InfluxDB 实战

  1. 安装 (Docker):
    docker run -d -p 8086:8086 --name influxdb influxdb:1.8
  2. 写入数据 (Line Protocol):
    weather,location=us-midwest temperature=82 1465839830100400200
    • Measurement: weather (表名)
    • Tags: location=us-midwest (索引列)
    • Fields: temperature=82 (数值列)
    • Timestamp: 1465839830100400200

12.3 数据清洗与边缘处理

在上传云端前,通常需要在边缘侧(网关)进行预处理。

  • 去重:如果设备每秒发一次数据,但数值没变,可以不传。
  • 异常过滤:剔除明显错误的数值(如温度 -200度)。
  • 降采样:将 100Hz 的振动数据计算为 1Hz 的 RMS(均方根)值上传。

至此,第三部分“物联网编程实战”已完成。接下来,我们将视野投向云端,进入第四部分:云平台与大数据

« 上一篇 JavaScript/Node.js 物联网应用 下一篇 » 主流物联网云平台