学会适当焦虑、孤独,这将对你有好处。
什么是物模型?
物模型是阿里云物联网平台为产品定义的数据模型。
简单来说,物模型就是定义你这台设备的属性,行为等。就好比一个人,定义人的物模型可以有姓名、年龄、身高。人的行为有跑步、睡觉、吃饭等等。
那我们为什么要定义物模型呢?
其实这里很好理解,物模型是规定客户端与服务端双方数据传输的一个标准。就好像两个中国人之间沟通都用中文作为标准,如果一方说汉语,另一方说英语,那么谁也听不懂谁的话了。
常见物模型设计?
就拿阿里云物联网平台举例,物模型被设计成属性、服务、事件三个部分。
下面是摘自阿里云物联网平台的一张图。
这里我们拿一块水表来举例。
水笔的属性可以有:电压、流量、流速、通信方式(tcp、udp)等等。
水表的服务可以有:抄读当前水表数据,甚至一些带阀门的水表,可以执行关阀、开发操作。
水表的事件可以有:比如当你家水流持续24小时不停,水表可以发送用水异常告警等,这些由设备主动发送到平台断的一些数据,都可以称之为事件。
物模型相关数据表如何设计?
其实单纯的物模型来说,数据表设计很简单。因为物模型对于后端的同事来说,就是一条json字符串,只需要将这条字符串存入数据表即可。那么复杂一点的,我们要支持物模型的版本管理,且支持一个产品具有多个物模型的管理。
那么这是数据表的设计就相对复杂一些。
下面我大概列举一个例子(仅供参考),主要有以下表:
产品_物模型版本(product_model_version)表,具有以下属性:
- 版本id
- 产品key
- 版本名称
- 版本描述
- ……
版本_物模型关系表(version_mondel_thing_r):
- 版本id
- 物模型id
- ……
物模型表(model_thing):
- 物模型id
- 物模型json
- 物模型模块id
- 物模型模块描述