2012-05-25 58 views
12

我想爲Web應用程序(涉及用戶,帖子,評論,投票,答案,文檔和文檔合併以及用戶和文檔上的一些其他傳遞關係)使用圖形數據庫。於是我開始問自己,是否有類似於圖數據庫的設計方法的東西,也就是對關係數據庫推薦的設計原則(類似於那些正常形式)的類比?圖形數據庫設計方法

問題示例(所產生的許多問題):

  • 這是個好主意,以創建一個頂級節點的用戶,在數據庫中的任何用戶節點有關係(「存在」)?
  • 建立版本管理(即創建關係(類似於「follow」))是一個好主意,指向文檔/發佈的更新版本,以回溯這種關係的方式意味着觀看文檔所經歷的更改。
  • 等...

所以,我們需要一個圖形數據庫設計說明書?

回答

5

Gremlin用戶組(http://tinkerpop.com/)和Neo4j用戶組(https://groups.google.com/forum/?fromgroups#!forum/neo4j)是討論圖形數據庫建模的好地方。

您可以創建超級節點,例如「用戶」,但使用索引並使用key = element_type,value =「user」,id = user_node_id爲每個用戶創建索引條目會更好,更高效。

「follow」關係通常用於Facebook和Twitter等人/朋友,所以我不會將其用於版本控制。你可以建立一個版本系統進入到Neo4j的時間標記每個條目,並使用最後寫勝算法,還有其他的數據庫系統,如Datomic具有此內置的。

見燈泡模型(https://github.com/espeed/lightbulb/blob/master/lightbulb/model.py)爲例博客模型在燈泡/ Python(http://bulbflow.com)。