网络运维场景
概述
IT/网络运营的海量数据管理是一种常见数据场景。在传统的解决方案中,当数据量超过一定量级时通常不能直接使用传统数据库,而需采用更为专业化的CMDB。但传统CMBD的弊端也显而易见:周期长,不够灵活,当随着数据量和关系复杂度的提高时,会面临复杂臃肿的设计和处理效率下降的问题,这样带来的工作量和维护成本也会巨大无比。
图数据库则可以轻松的对IT/网络运营的海量数据进行建模,将原始关系型数据库中结构化数据转换图数据库中的节点和边。这样可以解放DBA繁杂的数据建模工作量,同时又能够将查询效率达到量级的提升。因此,图数据库在IT/网络运营的海量数据场景将有着无限的发展前景。
示例
下面示例采用USAir97的机场运输的dataset对具体应用加以说明
数据模型: 图数据模型抽象以每个机场航运站为节点,航运站间的运输路线为边。
节点中包含航运站名称,航运站坐标位置;边中包含所连接的航运站,及航运站之间的距离。
航站枢纽节点连接示意图如下:
查看一共有多少点:
gremlin> g.V().count()
==>332
查看一共有多少边:
gremlin> g.E().count()
==>2126
查看枢纽节点,一共有多少节点连入:
gremlin> g.V('118').in().count() //118为"Chicago O'hare Intl"节点
==>40
//一共有哪些连入节点
gremlin> g.V('118').in().id()
==>65 //"Portland Intl"
==>94 //"General Mitchell Intll"
==>95 //"Greater Buffalo Intl"
==>8 //"Anchorage Intl"
...
- 查看枢纽节点,一共连了多少节点:
gremlin> g.V('118').out().count()
==>99
//一共连了哪些节点
gremlin> g.V('118').out().id()
==>201 //"San Francisco Intl"
==>221 //"Raleigh-Durham Intll"
==>301 //"Tampa Intl"
==>232 //"Memphis Intl"
...
最优运输路径选择: 从”Wiley Post-Will Rogers Mem” 节点运输货物至 “Shreveport Regional” 的最优路径选择
gremlin> 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"
运输路线统计分析:每次运输一个节点添加运输货物事件记录,查询时可按货物查询运输路线,达到运输路线统计,货物追踪及货物信息统计等
gremlin> g.V('1').property('cargo1', 1)
==>v[1]
gremlin> g.V('4').property('cargo1', 2)
==>v[4]
gremlin> g.V('47').property('cargo1', 3)
==>v[47]
gremlin> g.V().properties('cargo1').valueMap(true)
==>[id:1,key:cargo1,value:1]
==>[id:4,key:cargo1,value:2]
==>[id:47,key:cargo1,value:3]
货物运输路线跟踪:在货物运输完或运输途中,可以根据图数据库中留下的记号,追踪货物在运输网中的路径
gremlin> g.V().has("cargo1").valueMap(true)
==>[id:1,label:vertex,cargo1:[1]]
==>[id:4,label:vertex,cargo1:[2]]
==>[id:47,label:vertex,cargo1:[3]]
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论