Predix Asset Service深度分析
前言
- 灵活的建模风格:支持不同业务领域业务对象
- 支持自定义属性:可以是简单的字符串,也可以是对象
- 支持对象间关系:层次或图关系
- 支持对象间组合:如电机由线圈和转子组成
- 支持分类:对对象做宏观分类并保存公共属性
- 支持标签:方便用户查询
- 支持灵活和高性能查询:支持针对属性,针对关系,层次等查询。
- 操作历史:操作日志和审计
- 业务能力扩展:脚本
架构

- REST API layer
- Representation layer
- Query engine
- Audit History Service
- Script engine
- Cassandra graph database
数据模型
asset
classification
custom modeling object
| API Category | Description |
|---|---|
| Assets | 典型的,我们采用层次结构定义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,"lng":-117.253374}}存储分析
- 良好的横向扩展性
- 良好的可维护性
- 高性能
- 支持历史记录存储
- 能够扩展关系存储及查询
可扩展性
关键技术
JSON-SCHEMA
GEL
业界比对
优秀实践
Predix Asset Service深度分析的更多相关文章
- AndroidService 深度分析(2)
AndroidService 深度分析(2) 上一篇文章我们Service的生命周期进行了測试及总结. 这篇文章我们介绍下绑定执行的Service的实现. 绑定执行的Service可能是仅为本应用提供 ...
- const与readonly深度分析(.NET)
前言 很多.NET的初学者对const和readonly的使用很模糊,本文就const和readonly做一下深度分析,包括: 1. const数据类型的优势 2. const数据类型的劣势 3. r ...
- 转:[gevent源码分析] 深度分析gevent运行流程
[gevent源码分析] 深度分析gevent运行流程 http://blog.csdn.net/yueguanghaidao/article/details/24281751 一直对gevent运行 ...
- 深度分析 Java 的枚举类型:枚举的线程安全性及序列化问题(转)
写在前面: Java SE5 提供了一种新的类型 Java的枚举类型,关键字 enum 可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用,这是一种非常有用的功能 ...
- 深度分析如何在Hadoop中控制Map的数量
深度分析如何在Hadoop中控制Map的数量 guibin.beijing@gmail.com 很多文档中描述,Mapper的数量在默认情况下不可直接控制干预,因为Mapper的数量由输入的大小和个数 ...
- MapReduce深度分析(二)
MapReduce深度分析(二) 五.JobTracker分析 JobTracker是hadoop的重要的后台守护进程之一,主要的功能是管理任务调度.管理TaskTracker.监控作业执行.运行作业 ...
- MapReduce深度分析(一)
MapReduce深度分析(一) 一.数据流向分析 图为MapReduce数据流向示意图 步骤1.输入文件从HDFS流向到Mapper节点.在一般情况下,存储数据的节点就是Mapper运行的节点,不需 ...
- 【JVM】深度分析Java的ClassLoader机制(源码级别)
原文:深度分析Java的ClassLoader机制(源码级别) 为了更好的理解类的加载机制,我们来深入研究一下ClassLoader和他的loadClass()方法. 源码分析 public abst ...
- 深度分析Java的枚举类型—-枚举的线程安全性及序列化问题
原文:深度分析Java的枚举类型--枚举的线程安全性及序列化问题 枚举是如何保证线程安全的 要想看源码,首先得有一个类吧,那么枚举类型到底是什么类呢?是enum吗?答案很明显不是,enum就和clas ...
随机推荐
- 光场相机重聚焦之二——Lytro Illum记录光场
上一节中大概讲述了光场相机和光场的参数化表示,这一节就说一下光场相机内部是如何记录光场以及实现重聚焦的. 博主用的是Lytro Illum,所以就以Illum为例来说了,Illum的功能还是挺多的,上 ...
- mybatis新手入门常见问题集(持续更新)
一.参数为集合 Q:parameterType指的的类型是集合类型还是对象? A:都可以,甚至不用在xml中指定也可以.第一,mybatis会对传入的参数进行判断是不是list或者array,第二,m ...
- uoj#73 【WC2015】未来程序
在 2047 年,第 64 届全国青少年信息学奥林匹克冬令营前夕,B君找到了 2015 年,第 32 届冬令营的题目来练习. 他打开了第三题 “未来程序” 这道题目: 本题是一道提交答案题,一共 10 ...
- VirtualBox实现内外网络互访问的配置
作者 jrl137824675 来源地址:http://www.2cto.com/os/201205/133370.html 环境: 宿主机操作系统 Windows XP s ...
- jQuery修炼心得-DOM节点的删除
要移除页面上节点是开发者常见的操作,jQuery提供了几种不同的方法用来处理这个问题. 1.empty empty 顾名思义,清空方法,但是与删除又有点不一样,因为它只移除了 指定元素中的所有子节点. ...
- 【算法系列学习】HDU 5527 Too Rich贪心
http://www.cnblogs.com/AOQNRMGYXLMV/p/4934747.html #include<iostream> #include<cstdio> # ...
- centos系统修改网络配置注意事项
这也是无意之中发现的,我在做一个远程修改工控机网络配置的程序, 网络配置参数/etc/sysconfig/network-scripts/ifcfg-enp1s0下面,当然名字可能不一样ifcfg-e ...
- 窝上课不听,how to learn C language easily(1)
C language 学习心得 附:为啥起这么霸气侧漏,招大神们鄙视的标题,正如我在<C language>随笔的介绍中写的,这是一个写个妹纸们看的C language的文章.没错!!写这 ...
- 最大流算法之ISAP
序: 在之前的博文中,我解释了关于最大流的EK与Dinic算法,以及它们的STL/非STL的实现(其实没什么区别).本次讲解的是ISAP算法.'I',指 inproved,也就是说ISAP其实是SAP ...
- webstorm html碎片整理功能
我们用字符串形式写html模板时,或者向某标签添加html内容时,如下,如果这个str更加的长,一旦里面少了一个单引号,少了一个加号,基本报错还看不懂,一脸懵逼... // 假定后台传给我们的数据为 ...