- 数据是时序的,一定带有时间戳:联网的设备按照设定的周期,或受外部的事件触发,源源不断的产生数据,每一个数据点是在一时间点产生的,这个时间对于数据的计算和分析十分重要,必须要记录。
- 数据是结构化的:网络爬虫的数据、微博、微信的海量数据都是非结构化的,可以是文字、图片、视频等等。但物联网设备产生的数据往往是结构化的,而且是数值型的,比如智能电表采集的电流、电压就可以用4字节的标准的浮点数来表示。
- 数据极少有更新操作:联网设备产生的数据是机器日志数据,一般不容许而且也没有修改的必要。很少有场景,需要对采集的原始数据进行修改。但对于一个典型的信息化或互联网应用,记录是一定可以修改或删除的。
- 数据源是唯一的:一个物联网设备采集的数据与另外一个设备采集的数据是完全独立的。一台设备的数据一定是这台设备产生的,不可能是人工或其他设备产生的,也就是说一台设备的数据只有一个生产者,数据源是唯一的。
- 相对互联网应用,写多读少:对于互联网应用,一条数据记录,往往是一次写,很多次读。比如一条微博或一篇微信公共号文章,一次写,但有可能上百万人读。但物联网设备产生的数据不一样,对于产生的数据,一般是计算、分析程序自动的读,而且计算、分析次数不多,只有分析事故等场景,人才会主动看原始数据。
- 用户关注的是一段时间的趋势:对于一条银行记录,或者一条微博、微信,对于它的用户而言,每一条都很重要。但对于物联网数据,每个数据点与数据点的变化并不大,一般是渐变的,大家关心的更多是一段时间,比如过去的五分钟,过去的一个小时数据变化的趋势,一般对某一特定时间点的数据值并不关注。
- 数据是有保留期限的:采集的数据一般都有基于时长的保留策略,比如仅仅保留一天、一周、一个月、一年甚至更长时间,为节省存储空间,系统最好能自动删除。
- 数据的查询分析往往是基于时间段和某一组设备的:对于物联网数据,做计算和分析的时候,一定是指定时间范围的,不会只针对一个时间点或者整个历史进行。而且往往需要根据分析的维度,对物联网设备的一个子集采集的数据进行分析,比如某个地理区域的设备,某个型号、某个批次的设备,某个厂商的设备等等。
- 除存储查询外,往往需要实时分析计算操作:对于大部分互联网大数据应用,更多的是离线分析,即使有实时分析,但实时分析的要求并不高。比如用户画像、可以积累一定的用户行为数据后进行,早一天晚一天画不会怎么影响结果。但是对于物联网应用,对数据的实时计算要求往往很高,因为需要根据计算结果进行实时报警,以避免事故的发生。
- 流量平稳、可预测:给定物联网数量、数据采集频次,就可以较为准确的估算出所需要的带宽和流量,每天新生成的数据大小。而不是像电商,在双11期间,淘宝、天猫、京东等流量是几十倍的涨幅。不像12306网站,春节期间,网站流量是几十倍的增长。
- 数据处理的特殊性:与典型的互联网相比,还有不一样的数据处理需求。比如要检查某个具体时间的设备采集的某个量,但传感器实际采集的时间不是这个时间点,这时候往往需要做插值处理。还有很多场景,需要基于采集量,做复杂的数学函数计算。
- 数据量巨大:以智能电表为例,一台智能电表每隔15分钟采集一次数据,每天自动生成96条记录,全国就有接近5亿台智能电表,每天光智能电表就生成近500亿条记录。一台联网的汽车每隔10到15秒就采集一次数据发到云端,一台车一天就很容易产生1000条记录。如果中国2亿辆车全部联网,每天将产生2000亿条记录。五年之内,物联网设备产生的数据将占世界数据总量的90%以上。
物联网、工业互联网的数据是流式数据,象视频流,而且单个数据点的价值很低,甚至丢失一小段时间的数据也不影响分析的结论,也不影响系统的正常运行。但看似简单的事情,由于数据记录条数巨大,导致数据的实时写入成为瓶颈,查询分析极为 缓慢,成为新的技术挑战。传统的关系型数据库、NoSQL 数据库以及流式计算引擎由于没有充分利用物联网数据的特点,性能提升极为有限,只能依靠集群技术,投入更多的计算资源 和存储资源来处理,系统的运营维护成本急剧上升。