NetworkX 图驱动¶
https://blueprints.launchpad.net/vitrage/+spec/networkx-graph-driver
图驱动是访问和操作用于存储实体图的基础图的定义 API。此 API 应该针对 NetworkX 图包以及其他图工具进行实现,从而允许 Vitrage 在不同的底层图实现之间无缝切换。
问题描述¶
Vitrage 将拥有一个图数据结构,该结构将保存物理和虚拟实体及其相互关系的列表,即所谓的实体图。该图的具体实现应该是可互换的,允许无状态或有状态的实现。
提议的变更¶
1. 图驱动
创建一个图驱动,定义一组图方法,这些方法将在 NetworkX 上实现。此蓝图描述了图驱动和 NetworkX 驱动的添加。
+-------------------+
| |
+------------------+ +-------> NetworkX Driver |
| | | | |
| Graph | Impl | +-------------------+
| |-------+
| Driver | | +-------------------+
| | | | |
+------------------+ +-------> Other Drivers |
| (BulbFlow,etc..) |
+-------------------+
图驱动 API 的规范
请注意,实体图是一个属性图,其中边和顶点也可以具有一组键值属性,这些属性可以添加、更新和删除。
- 图的 CRUD 操作
init
num_of_edges
num_of_vertices
copy // 图的深度复制
- 顶点 CRUD 操作
add_vertex
add_vertices
get_vertex
update_vertex
remove_vertex
- 边 CRUD 操作
add_edge
get_edge
update_edge
remove_edge
- 图算法
子图匹配(子图同构)
BFS
DFS
2. NetworkX 驱动
NetworkX 是一个纯 Python 图库。它是无状态的,适用于对大型真实世界图进行操作。NetworkX 驱动将实现图驱动
备选方案¶
无
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
无
流水线影响¶
无
其他最终用户影响¶
无
性能/可扩展性影响¶
无
其他部署者影响¶
无
开发者影响¶
无
实现¶
负责人¶
主要负责人:无。
工作项¶
创建 GraphDriver 骨架
为 NetworkX 实现图驱动
在 NetworkX 上测试 GraphDriver
未来生命周期¶
无
依赖项¶
无
测试¶
此更改需要通过单元测试进行测试。