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

未来生命周期

依赖项

测试

此更改需要通过单元测试进行测试。

文档影响

参考资料