2013-08-24 5 views
1

Я рассматриваю изучение графика баз данных (как Neo4j), но мне было интересно, если такие объекты имеются в базах данных графиков, например, если я:.Может ли 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 --------| 

Здесь общие узлы в и Е являются соединялись (без необходимости программно проверить наличие предшествующего существования этих узлов). В реальном мире, например, было бы 1000-таких Б и Е, которая будет осуществляться в реляционной БД следующим образом: (., Например, когда я вставляю соотношение D -> B)

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) 

В РБР, Мне пришлось бы программно искать дублирующий объект B во 2-й таблице (или искать код сбоя при попытке вставить в него идентичный объект), а затем получить внешний ключ B в сочетании с D. Я надеюсь, что в DB, такие вещи заботятся о БД.

ответ

3

Вы должны смотреть на новом пункте V2.0 в MERGE, что позволяет иметь на последующих ON MATCH и ON CREATE положение, так что вы можете принять определенное действие, когда узел находится против создания.

См. 2.0M3 blog post для ввода (2.0M4 - последняя сборка, но MERGE была введена в M3), а также «Что нового в 2.0» video.

+0

Большое спасибо. Посмотрите на эти функции, как только я начну обманывать его. Но по крайней мере теперь я знаю, что такие вещи возможны без слишком большого количества кодировок. –

+1

Имейте в виду, что 2.0 вехи еще не готовы к производству, а некоторые особенности новых функций находятся в потоке (в следующей вехе могут произойти изменения). Если вы застряли с 1.9.2, то есть плагин, который сделал кто-то, что делает атомные upserts. Я еще не использовал его. https://github.com/trentonstrong/neo4j-atomic-create-update – LameCoder

+0

Хорошая точка, @LameCoder. Я полагал, что, поскольку ОП «рассматривал» учебные графовые базы данных *, сосредоточение внимания на предстоящем (пока еще не готовом к выпуску) версии 2.0 было довольно низким. –

Смежные вопросы