【发布时间】:2022-10-24 16:20:36
【问题描述】:
我正在设计一种将图形历史存储在图形数据库中的方法。我有以下几点:
一个节点的历史,比如Vertex_A,是通过创建另一个历史节点来维护的,比如History_Vertex_A。每当修改Vertex_A 时,都会创建一个新版本节点,例如Vertex_A_Ver_X。这个新节点存储更改数据的旧值。在历史节点和版本节点之间创建一条新边。下图描述了这个想法。有没有更好的方法将顶点/节点的历史存储在图形数据库中?
+------------------+
| Vertex_A (Ver N) |
+---------+--------+
|
+-----------v-----------+
| Edge_Vertex_A_History |
+-----------+-----------+
|
+---------v--------+
| History_Vertex_A |
+---------+--------+
|
+---------------------+----------+----------------+----------------------+
| | | |
+------v-------+ +------v-------+ +--------v-------+ +-------v--------+
| Edge_A_Ver_0 | | Edge_A_Ver_1 | | Edge_A_Ver_N-2 | | Edge_A_Ver_N-1 |
+------+-------+ +------+-------+ +--------+-------+ +-------+--------+
| | | |
+--------v---------+ +--------v---------+ +----------v---------+ +---------v----------+
| Vertex_A (Ver 0) | | Vertex_A (Ver 1) | .... | Vertex_A (Ver N-2) | | Vertex_A (Ver N-1) |
+------------------+ +------------------+ +--------------------+ +--------------------+
现在,假设我有以下关系。 Vertex_A 通过边缘 Edge_AB 连接到 Vertex_B。
+----------+ +---------+ +----------+
| Vertex_A +------> Edge_AB +-------> Vertex_B |
+----------+ +---------+ +----------+
我可以按照上述设计存储顶点的历史记录,但我不能使用相同的想法来存储边的历史记录,在这种情况下是边 Edge_AB。这是因为不可能有一条边连接到它对应的历史顶点。边不能连接到顶点。那么在图形数据库中存储边缘历史的最佳方法是什么?
【问题讨论】:
标签: graph-databases