主要内容

确定网络中服务的依赖性

这个例子展示了如何使用Neo4j®的MATLAB®接口分析网络中服务之间的依赖关系。假设您有存储在代表网络的Neo4j®数据库中的图形数据。这个数据库有7个节点和7个关系。每个节点只有一个唯一的属性键的名字与价值观Service1通过Service7。每个关系都有类型DEPENDS_ON

要找到每个服务依赖的服务数量,使用MATLAB®接口的Neo4j®和有向图目的。有关MATLAB®接口的详细信息,请参阅Neo4j数据库接口的图形数据库工作流

本地机器承载带有端口号的Neo4j®数据库7474, 用户名neo4j和密码马铃薯。有关数据库中数据的可视化表示,请参见此图。

连接到Neo4j®数据库

创建一个Neo4j®连接对象neo4jconn.使用URLhttp://localhost:7474/db/data, 用户名neo4j和密码马铃薯

URL =.“http://localhost: 7474 / db /数据”;用户名=“neo4j”;密码=matlab的;neo4jconn = neo4j(URL,用户名,密码);

检查信息属性Neo4j®连接对象neo4jconn.。空白的信息属性表示成功的连接。

neo4jconn.Message
ans = []

检索整个图形

检索所有类型的关系DEPENDS_ON以及与每个关系相关联的所有节点。

network_graphdata = searchGraph (neo4jconn, {“DEPENDS_ON”})
network_graphdata =.结构体字段:[7×3 table]关系:[7×5 table]

将图数据转换为有向图

使用的表network_graphdata.nodes.,访问的名字属性中出现的每个节点的NodeData表的变量。

分配表格network_graphdata.nodes.无可奈难

nodestable = network_graphdata.Nodes
nodeStable =7×3表NodeLabels NodeData NodeObject  __________ ____________ ___________________________________ 6“服务”[1×1 struct] [1 x1 database.neo4j.http。Neo4jNode] 0 'Service' [1×1 struct] [1x1 database.neo4j.http。Neo4jNode] 4 'Service' [1×1 struct] [1x1 database.neo4j.http。Neo4jNode] 2 'Service' [1×1 struct] [1x1 database.neo4j.http。Neo4jNode] 3 'Service' [1×1 struct] [1x1 database.neo4j.http。[1] database.neo4j.http. php文件Neo4jNode] 1 'Service' [1×1 struct] [1x1 database.neo4j.http.Neo4jNode]

为每个行分配行名rownames

rownames = nodestable.Properties.RowNames
rownames =7×1单元阵列{'6'} {'0'} {'4'} {'2'} {'3'} {'5'} {'1'}

进入NodeData变量的无可奈难为每一行。nodedata包含结构的数组。

nodedata = [nodestable.nodedata {rownames}]
nodedata =1×7 struct array with fields:的名字

检索的名字字段从每个结构中,索引到数组中。节点名是包含节点名称的字符向量单元格数组。

Nodenames = {nodedata(:)。姓名}
节点名=1×7个单元阵列{'service7'} {'service6'} {'service1'} {'service3'} {'service2'} {'service2'} {'service4'} {'service4'} {'service5'}

创建有向图对象network_graph使用neo4jStruct2Digraph函数与图形network_graphdata

network_graph = neo4jStruct2Digraph (network_graphdata,的节点名节点名)
Network_Graph =具有属性的数字:边缘:[7×3表]节点:[7×3表]

要查看图形的可视表示,请创建显示图形的图形network_graph

绘图(Network_Graph,“EdgeLabel”network_graph.Edges.RelationType)

查找每个服务的依赖性计数

找到每个服务在图中取决于图表的服务数量network_graph。通过使用for循环迭代图表中的节点来确定每个节点的依赖性计数。要确定依赖项计数,请使用最近的函数。

创建表dependency_count存储每个服务的依赖服务的计数。按依赖项计数按降序排序表中的行。

dependency_count =表;i = 1:高度(network_graph.nodes)nodeid = network_graph.nodes.name(i);最近的_node =最近的(network_graph,nodeid,inf,“方向”,“外向”);最近的_length = length(regient_node);dependency_count = [dependency_count;表(nodeid nearest_length,“VariableNames”,{'节点','dependency_count'})];结束dependency_count = sortrows (dependency_count, 2)
dependency_count =7×2表节点indevency_count_count __________ ____________________sfice7'3'Service4'2'Service5'2'Service3'1'Service2'1'Service1'0

查找特定服务的所有依赖项

查找该服务的所有服务的价格取决于图表network_graph使用最近的函数。

DISP('服务6取决于以下服务:');
Service6依赖于以下业务:
最近的(network_graph“价格”正,“方向”,“外向”)
ans =5×1个单元阵列{' Service4}{‘Service5}{‘Service3}{”生成“Service2} {' Service1 '}

关闭数据库连接

关闭(neo4jconn)

另请参阅

|||

相关的例子

更多关于