您好,登錄后才能下訂單哦!
在IIOT領(lǐng)域,面臨著保存海量數(shù)據(jù)的挑戰(zhàn),具體到Asset層面,則要保存物理對象,邏輯對象,復雜的關(guān)系,并支持對象間的組合,分類,標簽和高效查詢??偨Y(jié)來說,可以歸納為如下幾種需求:
靈活的建模風格:支持不同業(yè)務(wù)領(lǐng)域業(yè)務(wù)對象
支持自定義屬性:可以是簡單的字符串,也可以是對象
支持對象間關(guān)系:層次或圖關(guān)系
支持對象間組合:如電機由線圈和轉(zhuǎn)子組成
支持分類:對對象做宏觀分類并保存公共屬性
支持標簽:方便用戶查詢
支持靈活和高性能查詢:支持針對屬性,針對關(guān)系,層次等查詢。
操作歷史:操作日志和審計
業(yè)務(wù)能力擴展:腳本
Predix架構(gòu)如下所示:
REST API layer
Client應用可以通過REST API服務(wù)獲取asset數(shù)據(jù)。這些接口提供了JSON形式的接口,用戶可以通過POST形式傳遞這些數(shù)據(jù)。為了使用這些API,應用程序發(fā)送HTTPS請求并解析響應??梢允褂萌魏蝫eb端開發(fā)語言解析。
Representation layer
Representation Layer將數(shù)據(jù)由JSON轉(zhuǎn)換為內(nèi)部圖形式表示,也負責完成相反的過程。
Query engine
Query engine允許開發(fā)者使用JSON AND Graph Expression(GEL)來獲取Asset Data Store中保存的任意對象或?qū)ο髮傩缘臄?shù)據(jù)。
Audit History Service
提供API用來獲取Asset Service庫中REST請求的歷史信息。
Script engine
使用戶能夠?qū)⒍ㄖ频臉I(yè)務(wù)邏輯綁定到Asset Service的REST API上。
Cassandra graph database
Assert Service將數(shù)據(jù)保存于Apache Cassandra Nosql數(shù)據(jù)庫中
Asset模型可以理解為物理設(shè)備在虛擬世界的映射,Asset不但包含設(shè)備本身,也包含該設(shè)備如何組織和關(guān)聯(lián)的信息。
對asset進行分類,并保存其公共信息。
自定義的模型,用來進一步進行描述,如生產(chǎn)商等。
API Category | Description |
---|---|
Assets | 典型的,我們采用層次結(jié)構(gòu)定義asset,由parent asset和一個或多個child asset組成。我們可以將asset與一個classification或任意數(shù)目的custom modeling object關(guān)聯(lián)。Asset可以包含任意多個用戶自定義屬性(custom-defined attribute)。 一個asset也可獨立存在于系統(tǒng)中,不與任何的其他建模元素關(guān)聯(lián)。 |
Classifications | 采用樹狀結(jié)構(gòu)組織,并了一種對asset進行分組和跟蹤公共屬性的手段。一個classification可以指向多個asset。classification的任意層次上均可以指定attribute。 |
Custom modeling objects | 定制模型對象(custom modeling object)是層次化的,我們可以使用它為asset提供更多的信息。例如,我們可以為asset location,manufactureer等創(chuàng)建單獨的對象。一個location可以與多個asset關(guān)聯(lián),類似的,一個asset也可以關(guān)聯(lián)多個location。 |
{
"uri":"/fleets/up-1",
"name":"Union Pacific Fleet 1",
"customer":"/customers/union-pacific"
},
{
"uri":"/manufacturers/GE",
"name":"General Electric Transportation",
"year_founded":"1892",
"hqLatLng":{
"lat":41.881138,
"lng":-87.640666}
}
{
"uri":"/engines/v12-1",
"type":"7FDL",
"horsepower":"4400",
"stroke":"230",
"bore":"220",
"RPM":"2400",
"manufacturer":"/manufacturers/GE"
}
{
"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
}
}
從上面的例子可以看出模型是如何組織的。
Asset的存儲要考慮兩個部分,json-schema和json。json-schema是json的校驗標準,任何對存儲系統(tǒng)的修改都需要使用json-schema校驗。更加抽象的思考,json-schema類似于面向?qū)ο蟮念?,而json則是類的實現(xiàn):對象。只是這種實例化是由RESTAPI觸發(fā)的,且合法性由json-schema保證。
由于工業(yè)領(lǐng)域需要面對海量對象,海量關(guān)系及多種結(jié)構(gòu)的數(shù)據(jù)對象(blob value,,picture, log)等,傳統(tǒng)的SQL數(shù)據(jù)庫必然無法滿足這些需求,且對于JSON來說,最適合應用key-value數(shù)據(jù)庫類型,當然該數(shù)據(jù)庫需要提供良好的性能及可擴展性。
經(jīng)過近些年的發(fā)展,cassandra與hbase在不同領(lǐng)域內(nèi)的應用出現(xiàn)了分化,hbase紀玉hadoop,支持mapreduce,更加適合于大數(shù)據(jù)計算的場景;而cassandra除了在范圍查詢性能落后與hbase之外,在易用性,可擴展性,健壯性(無管理節(jié)點),以及在大多數(shù)的性能應用場景上對hbase存在優(yōu)勢,因此考慮使用cassandra作為asset的存儲。
具體的,使用cassandra要滿足如下的要求:
良好的橫向擴展性
良好的可維護性
高性能
支持歷史記錄存儲
能夠擴展關(guān)系存儲及查詢
Predix提供了Javascript語言支持更多的自定義應用。
JS支持是JDK自帶的功能,而Predix將此功能應用在REST API上,能夠在REST API的執(zhí)行前后運行JS腳本,實現(xiàn)功能的擴展。其中REST API既可以是資源的CRUD API,也可以是自定義API。其執(zhí)行邏輯為:開始--->(JS代碼)--->REST API--->(JS代碼)-->系統(tǒng)通知
也即JS代碼可以選擇在REST API執(zhí)行前后執(zhí)行,如果JS代碼在REST API執(zhí)行前,則可用于輸入數(shù)據(jù)校驗等,如果在REST API執(zhí)行后,則可進行通知發(fā)送等應用。為了更加靈活的使用JS代碼,JS代碼中可以引用已經(jīng)定義的工具方法(Predix提供),也可以調(diào)用其他REST API接口。
JS代碼執(zhí)行時工業(yè)云應用必備的部分,如SCADA系統(tǒng)和Thingwrox均提供了JS代碼執(zhí)行功能。但Thingwrox的JS執(zhí)行依附于Thing本身(自定義方法)及訂閱,而Predix則基于對已有REST API的封裝(當然也支持自定義的REST API),總的來說Thingwrox實現(xiàn)的功能,predix也能實現(xiàn)。
例如:
1. 調(diào)用系統(tǒng)方法(predix和thingwrox均提供了系統(tǒng)方法)
2. 調(diào)用asset的屬性(均可,thingwrox可以在腳本中通過this.引用)
3. 調(diào)用asset的方法(thingwrox可以,predix不明)
4. 調(diào)用其他asset的屬性(predix通過restapi查詢)
5. 調(diào)用其他asset的方法(可以實現(xiàn),只要是REST API形式暴露)
6. 執(zhí)行結(jié)果返回(predix可以通過消息隊列返回數(shù)據(jù))
http://json-schema.org/,
用以描述JSON的數(shù)據(jù)結(jié)構(gòu)并做驗證,JSON-SCHEMA是靜態(tài)JSON描述,本身不具有任何約束力,需要在實現(xiàn)中加以限制:如執(zhí)行新增操作時必須驗證SCHEMA。
CASSANDRA
CASSANDRA是一個key-value數(shù)據(jù)庫,具有高性能,高可靠性,去中心化等特性,并支持GRAPH擴展。
http://www.cnblogs.com/loveis715/p/5299495.html
如果數(shù)據(jù)只能存儲而不能查詢,那就沒有任何意義。predix定義了GEL語言用于查詢Asset數(shù)據(jù),該查詢語言是靈活的,支持分頁,過濾,正則表達式及關(guān)系查詢。Asset服務(wù)就是要存儲所有的模型數(shù)據(jù),因此不能針對具體需求做針對性的開發(fā)。
在Asset Service中,專門存在查詢引擎(Graph Expression Lanauge Query Engine)完成這一功能,這也是工業(yè)云平臺開發(fā)中所必須的。
這里主要與Thingwrox做比對,Thingworx更是一個物聯(lián)網(wǎng)平臺,而Predix是工業(yè)云平臺,定位不同,決定了這兩個平臺在設(shè)計上的取舍不同。
從建模進行比較,Thingworx弱化了多租戶概念,并且基于對類-對象的抽象,給出了Thing-ThingTemplate-ThingShape的模型,能夠?qū)γ恳晃锢?邏輯實體進行建模。如一個泵,或者是以datasource;而Predix更偏重與處理工業(yè)領(lǐng)域的物理實體映射,并不試圖建立一個包含一切的建模環(huán)境,這種取舍,在工業(yè)領(lǐng)域是可以理解的。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。