主要内容

确定网络中服务的依赖关系

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

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

本地机器托管带有端口号的Neo4j®数据库7474,用户名neo4j,和密码matlab.有关数据库中数据的可视化表示,请参见该图。

连接到Neo4j®数据库

创建Neo4j®连接对象neo4jconn使用URLhttp://localhost:7474/db/data,用户名neo4j,和密码matlab

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

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

neo4jconn。消息
Ans = []

检索整个图

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

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

将图数据转换为有向图

使用表格network_graphdata。节点,进入的名字属性中出现的每个节点的NodeData表的变量。

分配表network_graphdata。节点nodestable

Nodestable = network_graphdata。节点
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。Neo4jNode] 5 'Service' [1×1 struct] [1x1 database.neo4j.http。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变量的nodestable对于每一行。nodedata包含结构的数组。

Nodedata = [nodedestable .]NodeData {rownames}]
nodedata =1×7包含字段的struct数组:的名字

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

Nodenames = {nodedata(:).name}
节点名=1×7单元格数组{' Service7}{‘价格’}{‘Service1}{‘Service3}{”生成“Service2}{‘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 = table;nodeid = network_graph.Nodes. name (i);nearest_node =最近的(network_graph,nodeid,Inf,“方向”“外向”);Nearest_length = length(nearest_node);Dependency_count = [Dependency_count;...表(nodeid nearest_length,...“VariableNames”, {“节点”“Dependency_count”}));结束Dependency_count = sortrows(-2)
dependency_count =7×2表Node Dependency_count __________ ________________ 'Service6' 5' Service7' 3' Service4' 2' Service5' 2' Service3' 1' Service2' 1' Service1' 0

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

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

disp (Service6依赖于以下服务:);
Service6依赖于以下服务:
最近的(network_graph“价格”正,“方向”“外向”
ans =5×1单元格数组{' Service4}{‘Service5}{‘Service3}{”生成“Service2} {' Service1 '}

关闭数据库连接

关上(neo4jconn)

另请参阅

|||

相关的例子

更多关于