确定网络中服务的依赖关系
这个例子展示了如何使用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)
另请参阅
neo4j
|searchNode
|searchRelation
|最近的