前言
在IIOT领域,面临着保存海量数据的挑战,具体到Asset层面,则要保存物理对象,逻辑对象,复杂的关系,并支持对象间的组合,分类,标签和高效查询。总结来说,可以归纳为如下几种需求:
灵活的建模风格:支持不同业务领域业务对象
支持自定义属性:可以是简单的字符串,也可以是对象
支持对象间关系:层次或图关系
支持对象间组合:如电机由线圈和转子组成
支持分类:对对象做宏观分类并保存公共属性
支持标签:方便用户查询
支持灵活和高性能查询:支持针对属性,针对关系,层次等查询。
操作历史:操作日志和审计
业务能力扩展:脚本
架构
Predix架构如下所示:
REST API layer
Client应用可以通过REST API服务获取asset数据。这些接口提供了JSON形式的接口,用户可以通过POST形式传递这些数据。为了使用这些API,应用程序发送HTTPS请求并解析响应。可以使用任何web端开发语言解析。
Representation layer
Representation Layer将数据由JSON转换为内部图形式表示,也负责完成相反的过程。
Query engine
Query engine允许开发者使用JSON AND Graph Expression(GEL)来获取Asset Data Store中保存的任意对象或对象属性的数据。
Audit History Service
提供API用来获取Asset Service库中REST请求的历史信息。
Script engine
使用户能够将定制的业务逻辑绑定到Asset Service的REST API上。
Cassandra graph database
Assert Service将数据保存于Apache Cassandra Nosql数据库中
数据模型
asset
Asset模型可以理解为物理设备在虚拟世界的映射,Asset不但包含设备本身,也包含该设备如何组织和关联的信息。
classification
对asset进行分类,并保存其公共信息。
custom modeling object
自定义的模型,用来进一步进行描述,如生产商等。
API CategoryDescriptionAssets典型的,我们采用层次结构定义asset,由parent asset和一个或多个child asset组成。我们可以将asset与一个classification或任意数目的custom modeling object关联。Asset可以包含任意多个用户自定义属性(custom-defined attribute)。一个asset也可独立存在于系统中,不与任何的其他建模元素关联。Classifications
采用树状结构组织,并了一种对asset进行分组和跟踪公共属性的手段。一个classification可以指向多个asset。classification的任意层次上均可以指定attribute。
Custom modeling objects定制模型对象(custom modeling object)是层次化的,我们可以使用它为asset提供更多的信息。例如,我们可以为asset location,manufactureer等创建单独的对象。一个location可以与多个asset关联,类似的,一个asset也可以关联多个location。
模型示例
Fleets Sample JSON
{
"uri":"/fleets/up-1",
"name":"Union Pacific Fleet 1",
"customer":"/customers/union-pacific"
},
Manufacturers Sample JSON
{
"uri":"/manufacturers/GE",
"name":"General Electric Transportation",
"year_founded":"1892",
"hqLatLng":{
"lat":41.881138,
"lng":-87.640666}
}
Engines Sample Data
{
"uri":"/engines/v12-1",
"type":"7FDL",
"horsepower":"4400",
"stroke":"230",
"bore":"220",
"RPM":"2400",
"manufacturer":"/manufacturers/GE"
}
Locomotives Sample JSON
{
"uri":"/locomotives/1",
"type":"Diesel-electric",
"model":"ES44AC",
"serial_no":"001",
"emission_tier":"0+",
"fleet":"/fleets/up-1",
"manufacturer":"/manufacturers/GE",
"engine":"/engines/v12-1",
"installedOn":"01/12/2005",
"dateIso":"2005-12-01T13:15:31Z",
"hqLatLng":{
"lat":33.914605,