图数据库GDB可以轻松的对IT、网络运营的海量数据进行建模,将原始关系型数据库中结构化数据转换图数据库中的节点和边,不仅能减少DBA的数据建模工作量,又能够提升查询效率。解决传统解决方案中数据量超过一定量级时不能使用数据库和使用CMDB周期长且不够灵活的问题。
下面示例采用USAir97的机场运输的dataset对具体应用加以说明。
示例示意图
航站枢纽节点连接示意图如下:
示例数据模型
图数据模型抽象以每个机场航运站为节点,航运站间的运输路线为边。其中:
节点中包含航运站名称,航运站坐标位置。
边中包含所连接的航运站,及航运站之间的距离。
代码示例
查看一共有多少点。
g.V().count()
查看一共有多少边。
g.E().count()
查看枢纽节点,一共有多少节点连入。
g.V('118').in().count() //118为"Chicago O'hare Intl"节点
一共有哪些连入节点。
g.V('118').in().id()
返回结果:
65 //"Portland Intl" 94 //"General Mitchell Intll" 95 //"Greater Buffalo Intl" 8 //"Anchorage Intl" ...
查看枢纽节点,一共连了多少节点。
g.V('118').out().count()
一共连了哪些节点。
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” 的最优路径选择。
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"
运输路线统计分析:每次运输一个节点添加运输货物事件记录,查询时可按货物查询运输路线,达到运输路线统计,货物追踪及货物信息统计等。
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]
货物运输路线跟踪:在货物运输完或运输途中,可以根据图数据库中留下的记号,追踪货物在运输网中的路径。
g.V().has("cargo1").valueMap(true)
返回结果:
[id:1,label:vertex,cargo1:[1]] [id:4,label:vertex,cargo1:[2]] [id:47,label:vertex,cargo1:[3]]
文档内容是否对您有帮助?