全部产品
云市场
云游戏

网络运维场景

更新时间:2019-04-01 16:30:34

概述

IT/网络运营的海量数据管理是一种常见数据场景。在传统的解决方案中,当数据量超过一定量级时通常不能直接使用传统数据库,而需采用更为专业化的CMDB。但传统CMBD的弊端也显而易见:周期长,不够灵活,当随着数据量和关系复杂度的提高时,会面临复杂臃肿的设计和处理效率下降的问题,这样带来的工作量和维护成本也会巨大无比。

图数据库则可以轻松的对IT/网络运营的海量数据进行建模,将原始关系型数据库中结构化数据转换图数据库中的节点和边。这样可以解放DBA繁杂的数据建模工作量,同时又能够将查询效率达到量级的提升。因此,图数据库在IT/网络运营的海量数据场景将有着无限的发展前景。

示例

下面示例采用USAir97的机场运输的dataset对具体应用加以说明

  • 数据模型: 图数据模型抽象以每个机场航运站为节点,航运站间的运输路线为边。

    节点中包含航运站名称,航运站坐标位置;边中包含所连接的航运站,及航运站之间的距离。

    航站枢纽节点连接示意图如下:airport-transport-network

  • 查看一共有多少点:

    1. gremlin> g.V().count()
    2. ==>332
  • 查看一共有多少边:

    1. gremlin> g.E().count()
    2. ==>2126
  • 查看枢纽节点,一共有多少节点连入:

  1. gremlin> g.V('118').in().count() //118为"Chicago O'hare Intl"节点
  2. ==>40
  3. //一共有哪些连入节点
  4. gremlin> g.V('118').in().id()
  5. ==>65 //"Portland Intl"
  6. ==>94 //"General Mitchell Intll"
  7. ==>95 //"Greater Buffalo Intl"
  8. ==>8 //"Anchorage Intl"
  9. ...
  • 查看枢纽节点,一共连了多少节点:
  1. gremlin> g.V('118').out().count()
  2. ==>99
  3. //一共连了哪些节点
  4. gremlin> g.V('118').out().id()
  5. ==>201 //"San Francisco Intl"
  6. ==>221 //"Raleigh-Durham Intll"
  7. ==>301 //"Tampa Intl"
  8. ==>232 //"Memphis Intl"
  9. ...
  • 最优运输路径选择: 从”Wiley Post-Will Rogers Mem” 节点运输货物至 “Shreveport Regional” 的最优路径选择

    1. gremlin> g.V("1").store("x").repeat(out().where(without("x")).aggregate("x")).until(hasId("267")).path()
    2. ==>[v[1],v[4],v[47],v[255],v[267]]
    3. // "Wiley Post-Will Rogers Mem" -> "Fairbanks Intl" -> "Seattle-Tacoma Intl" -> "The William B Hartsfield Atlan" -> "Shreveport Regional"
  • 运输路线统计分析:每次运输一个节点添加运输货物事件记录,查询时可按货物查询运输路线,达到运输路线统计,货物追踪及货物信息统计等

    1. gremlin> g.V('1').property('cargo1', 1)
    2. ==>v[1]
    3. gremlin> g.V('4').property('cargo1', 2)
    4. ==>v[4]
    5. gremlin> g.V('47').property('cargo1', 3)
    6. ==>v[47]
    7. gremlin> g.V().properties('cargo1').valueMap(true)
    8. ==>[id:1,key:cargo1,value:1]
    9. ==>[id:4,key:cargo1,value:2]
    10. ==>[id:47,key:cargo1,value:3]
  • 货物运输路线跟踪:在货物运输完或运输途中,可以根据图数据库中留下的记号,追踪货物在运输网中的路径

    1. gremlin> g.V().has("cargo1").valueMap(true)
    2. ==>[id:1,label:vertex,cargo1:[1]]
    3. ==>[id:4,label:vertex,cargo1:[2]]
    4. ==>[id:47,label:vertex,cargo1:[3]]