2013-08-18 51 views
0

我正在玩Neo4j,但試圖讓我的頭繞着圖的概念。作爲一個學習過程,我想將一個小的Postgres關係數據庫模式移植到Neo4j上。有什麼方法可以將它移植到Neo4j併發布「等效」關係查詢?如何將關係數據庫移植到Neo4j?

回答

1

恐怕不是。關係數據模型和圖形數據模型是對現實世界域進行建模的兩種不同方式。它需要人類的大腦(至少在2013年)才能理解該領域以便對其進行建模。

我建議你拿一張紙,用圓圈和箭頭捕捉你的實體(節點)以及它們如何相互關聯(關係)。然後,看看那張紙。瞧,你的新Neo4j數據模型。

然後,接受一個查詢,希望得到回答,並試圖找出如何在沒有計算機的情況下執行此操作,只需在該紙上用手指跟蹤節點和關係即可。一旦你明白了這一點,將你所做的一切翻譯成Cypher查詢。

看看neo4j.org,有很多例子。

2

是的,您可以將現有架構移植到圖形數據庫。請記住,這不一定是您數據的最佳模型,但它是一個起點。

它的容易程度取決於現有模式的質量。

與實體關係圖中的實體對應的表定義了您的節點類型。在即將推出的neo4j 2.0中,您可以使用實體的名稱來標記它們以使查找更容易。在舊版本中,您可以使用索引或手動標籤屬性。

假設最好的情況下,數據之間的所有關係都使用外鍵建模,節點之間的任何1:1關係可以被識別並接下來移植。

對於建模n:m關係的表格,標識相應的節點並添加它們之間的直接關係。

因此,例如假設表Author[id, name, publisher foreign key]Publisher[id, name]Book[id, title]written_by[author foreign key, book foreign key]

  • Author,PublisherBook中的每一行都成爲節點。
  • 每個Author節點都與由外鍵關係標識的發佈者建立關係。
  • 對於written_by每一行你,因爲它表現添加Author節點和Book節點引用

對於Neo4j的查詢我建議cypher之間的關係。 A2。0)查詢一些作家找書會是什麼樣子:

MATCH (author:Author)-[:written_by]-(book:Book) 
WHERE author.name='Hugh Laurie' 
RETURN book.title