确定服务网络的依赖性
这个例子展示了如何分析服务之间的依赖关系网络中使用MATLAB®接口Neo4j®。假设您有图的数据存储在一个Neo4j代表一个网络数据库。该数据库有七个节点和七个关系。每个节点只有一个惟一的属性键的名字
与价值观Service1
通过Service7
。每个关系类型DEPENDS_ON
。
找到服务的每个服务取决于数量,使用MATLAB接口Neo4j和有向图
对象。Neo4j MATLAB接口的详细信息,请参阅图形数据库的工作流Neo4j数据库接口。
Neo4j数据库本地计算机主机和端口号7474年
、用户名neo4j
和密码matlab
。对数据库中数据的可视化表示,看到这个图。
连接到Neo4j数据库
创建一个Neo4j连接对象neo4jconn
使用URLhttp://localhost: 7474 / db /数据
、用户名neo4j
和密码matlab
。
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表):关系:[7×5表]
图形数据转换为有向图
使用的表network_graphdata.Nodes
,访问的名字
为每个节点属性中出现NodeData
表的变量。
分配表network_graphdata.Nodes
来nodestable
。
nodestable = network_graphdata.Nodes
nodestable =7×3表NodeLabels NodeData NodeObject __________ _______ ___________________________________ 6“服务”[1×1 struct] [1 x1 database.neo4j.http。Neo4jNode] 0“服务”[1×1 struct] [1 x1 database.neo4j.http。Neo4jNode] 4“服务”[1×1 struct] [1 x1 database.neo4j.http。Neo4jNode] 2“服务”[1×1 struct] [1 x1 database.neo4j.http。Neo4jNode] 3 '服务' [1×1 struct] [1 x1 database.neo4j.http。Neo4jNode] 5“服务”[1×1 struct] [1 x1 database.neo4j.http。Neo4jNode] 1“服务”[1×1 struct] [1 x1 database.neo4j.http.Neo4jNode]
分配每一行的行名称rownames
。
rownames = nodestable.Properties.RowNames
rownames =7×1单元阵列{' 6 '}{' 0 '}{‘4’}{' 2 '}{‘3’}{‘5’}{' 1 '}
访问NodeData
变量的nodestable
为每一行。nodedata
包含一个结构数组。
nodedata = [nodestable.NodeData {rownames}]
nodedata =1×7结构体数组字段:的名字
检索的名字
从每个结构,数组的索引。节点名
是一个单元阵列特征向量包含节点的名称。
节点名= {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 =表;为i = 1:高度(network_graph.Nodes) nodeid = network_graph.Nodes.Name(我);nearest_node =最近的(network_graph nodeid,正无穷,“方向”,“外向”);nearest_length =长度(nearest_node);dependency_count = [dependency_count;…表(nodeid nearest_length,…“VariableNames”,{“节点”,“Dependency_count”}));结束dependency_count = sortrows (dependency_count, 2)
dependency_count =7×2表节点Dependency_count __________ ___________“价格”5“Service7”3“Service4”2“Service5”2“Service3”1生成的Service2 ' 1 ' Service1 0
为特定的服务找到所有依赖项
找到所有的服务服务的价格
取决于图中network_graph
使用最近的
函数。
disp (的价格取决于以下服务:);
价格取决于以下服务:
最近的(network_graph“价格”正,“方向”,“外向”)
ans =5×1单元阵列{' Service4} {‘Service5} {‘Service3}{”生成“Service2} {' Service1 '}
关闭数据库连接
关上(neo4jconn)
另请参阅
neo4j
|searchNode
|searchRelation
|最近的