1

我正在考虑学习图形数据库(如neo4j),但我很好奇图形数据库中是否有这些设施,例如,如果我这样做:

Step 1: create:  A --> B --> C
Step 2: create:  D --> B --> E
Step 3: create:  F --> G --> E

这应该会自动生成一个存储类似以下内容的图形:

A ---> B ----> C
      /|\  \ 
D -----|    \--> E
                /|\
F ---> G --------|

在这里,公共节点 B 和 E 被合并(无需以编程方式检查这些节点的先前存在)。在现实世界的示例中,将有 1000 个这样的 B 和 E,它们将在关系数据库中实现如下:

FK = Foreign Key  .. X Y Z are keys for three primary tables. 

___________       ________    _____________    ________
X  | FK(Y)        Y | ...     FK(Y) | FK(Z)     Z | ..
---|-------       --|-----    ------|------    ---|----
A  | FK(B)        B | ...     FK(B) | FK(C)     C | ..
D  | FK(B)        G | ..      FK(B) | FK(E)     E | ..
F  | FK(G)                    FK(G) | FK(E)

在 RDB 中(例如,当我插入关系 D-->B 时)我必须以编程方式在第二个表中搜索重复的对象 B(或者在尝试将相同的对象插入其中时查找失败代码)然后将B的外键与D放在一起。我希望在图形数据库中,这些事情都由数据库处理。

4

1 回答 1

3

您应该查看 v2.0 的新MERGE子句,它允许您有一个后续的ON MATCHON CREATE子句,因此您可以在找到节点和创建节点时执行特定操作。

请参阅2.0M3 博客文章了解介绍(2.0M4 是最新版本,但 MERGE 是在 M3 中引入的),以及此“2.0 中的新功能”视频

于 2013-08-24T21:55:19.313 回答