2013-07-10 150 views
8

我是新來的圖形,它非常有趣。這個問題可能是小菜一碟,但請網站一些很好的材料。如何將圖形數據存儲在數據庫中?

我正在嘗試建立一個小社交網絡,每個用戶都是一個節點,並且與他的朋友有無關聯。

它的工作正常,但現在我想將它存儲在數據庫中。

如何存儲數據?如何存儲節點的所有連接節點(指針)。

在用戶註銷後刪除內存並在登錄時從數據庫中讀取內存或者應該登錄和註銷應該不會對節點有任何影響?

我知道它的理論。任何參考將非常有幫助。

回答

2

我從底部開始。

在用戶登出後刪除內存並在登錄時從數據庫中讀取內存或者應該登錄和註銷應該不會對節點有任何影響?

您將需要某種形式的永久存儲的,或者你失去所有的數據,你在你的第一次崩潰/重啓收購可能會打亂你的用戶一點。

如何存儲數據? 好吧,不知道更多關於這個,但是假設你有一個用戶列表,並且每個用戶可以有0個或更多的朋友,那麼我會去2個表。

  • 用戶- 存儲您的所有用戶信息,如用戶名和密碼
  • UsersFriends * - 存儲中的所有關係的用戶名 - >用戶名時尚*

用戶表

UserID Username 
1  user2511713 
2  abstracthchaos 
3  anotheruser 

UsersFriends

UserID FriendUserID 
1   3 
2   3 
1   2 

手段user2511713是anotheruser & abstracthchaos和abstracthchaos朋友anotheruser,依賴於你的業務邏輯的朋友也可能是暗示周圍的其他方法有用,使得3 1 is the same as 1 3

+1

如果我這樣做(第二個表),那麼有什麼用graph.It的所有然後歸結了我的數據庫效率不是我正在使用的數據結構 – user2511713

8

使用實際的圖形數據庫來存儲您的數據。

http://www.neo4j.org/

您可以存儲鍵/值對中的一個節點,你還可以存儲連接節點的邊。

然後你可以使用像Gremlin一樣的查詢/遍歷圖 - https://github.com/tinkerpop/gremlin。看到自己的文檔,下載示例和運行查詢示例:https://github.com/tinkerpop/gremlin/wiki/Getting-Started

語法的一個想法:

gremlin> // lets only take 'knows' labeled edges 
gremlin> v.out('knows') 
==>v[2] 
==>v[4] 
gremlin> // lets do a traversal from the '1' marko vertex to its outgoing edges. 
gremlin> // in the property graph world, edges are first class citizens that can be traversed to. 
gremlin> v.outE 
==>e[7][1-knows->2] 
==>e[9][1-created->3] 
==>e[8][1-knows->4] 
相關問題