網(wǎng)絡運維場景
圖數(shù)據(jù)庫GDB可以輕松的對IT、網(wǎng)絡運營的海量數(shù)據(jù)進行建模,將原始關系型數(shù)據(jù)庫中結構化數(shù)據(jù)轉換圖數(shù)據(jù)庫中的節(jié)點和邊,不僅能減少DBA的數(shù)據(jù)建模工作量,又能夠提升查詢效率。解決傳統(tǒng)解決方案中數(shù)據(jù)量超過一定量級時不能使用數(shù)據(jù)庫和使用CMDB周期長且不夠靈活的問題。
下面示例采用USAir97的機場運輸?shù)膁ataset對具體應用加以說明。
示例示意圖
航站樞紐節(jié)點連接示意圖如下:
示例數(shù)據(jù)模型
圖數(shù)據(jù)模型抽象以每個機場航運站為節(jié)點,航運站間的運輸路線為邊。其中:
節(jié)點中包含航運站名稱,航運站坐標位置。
邊中包含所連接的航運站,及航運站之間的距離。
代碼示例
查看一共有多少點。
g.V().count()
查看一共有多少邊。
g.E().count()
查看樞紐節(jié)點,一共有多少節(jié)點連入。
g.V('118').in().count() //118為"Chicago O'hare Intl"節(jié)點
一共有哪些連入節(jié)點。
g.V('118').in().id()
返回結果:
65 //"Portland Intl" 94 //"General Mitchell Intll" 95 //"Greater Buffalo Intl" 8 //"Anchorage Intl" ...
查看樞紐節(jié)點,一共連了多少節(jié)點。
g.V('118').out().count()
一共連了哪些節(jié)點。
g.V('118').out().id()
返回結果:
201 //"San Francisco Intl" 221 //"Raleigh-Durham Intll" 301 //"Tampa Intl" 232 //"Memphis Intl" ...
最優(yōu)運輸路徑選擇: 從”Wiley Post-Will Rogers Mem” 節(jié)點運輸貨物至 “Shreveport Regional” 的最優(yōu)路徑選擇。
g.V("1").store("x").repeat(out().where(without("x")).aggregate("x")).until(hasId("267")).path()
返回結果:
[v[1],v[4],v[47],v[255],v[267]] // "Wiley Post-Will Rogers Mem" -> "Fairbanks Intl" -> "Seattle-Tacoma Intl" -> "The William B Hartsfield Atlan" -> "Shreveport Regional"
運輸路線統(tǒng)計分析:每次運輸一個節(jié)點添加運輸貨物事件記錄,查詢時可按貨物查詢運輸路線,達到運輸路線統(tǒng)計,貨物追蹤及貨物信息統(tǒng)計等。
g.V('1').property('cargo1', 1) g.V().properties('cargo1').valueMap(true)
返回結果:
v[1] [id:1,key:cargo1,value:1] [id:4,key:cargo1,value:2] [id:47,key:cargo1,value:3]
貨物運輸路線跟蹤:在貨物運輸完或運輸途中,可以根據(jù)圖數(shù)據(jù)庫中留下的記號,追蹤貨物在運輸網(wǎng)中的路徑。
g.V().has("cargo1").valueMap(true)
返回結果:
[id:1,label:vertex,cargo1:[1]] [id:4,label:vertex,cargo1:[2]] [id:47,label:vertex,cargo1:[3]]