2012-02-20 64 views
0

作爲一個培訓項目,我正嘗試在Azure上構建一個Family Tree應用程序。NO SQL數據庫的設計

第一步是數據庫,我打算使用表存儲。

對於家族樹應用程序,表格存儲設計的外觀如何?

我雖然有一些解決方案。

  • 每人一個入口,其中xml與該人的所有關係。但是這意味着需要爲給定的更改和大量的重複數據更新多行。
  • 一個表,每種類型的信息,一個人,一個關係......但是,這感覺就像一個關係型數據庫

回答

1

我會爲每個家庭每人建立一個分區,因此對於每個人,分區鍵將是家庭,行鍵是該人的標識符。每個人爲父母提供一個屬性(通常只有兩個:))。通過這種方式,您可以快速將整個分區讀入內存,並使用內存樹結構遍歷圖形。一個典型的家庭應該有不到一百個節點,所以會閃電般快。更新將始終是一個家庭,所以交易可以用於每個家庭都在一個分區。

對於一個非常困難的(相關的)練習,在鍵值存儲(表存儲)之上實現一個圖形數據庫(如家譜)。想想Twitter或Facebook有什麼需要在所有關係(社交圖)中看到更新(推文,新聞)的問題。然後你開始進入NoSQL的有趣(困難)部分。

1

我的第一個問題是,你如何計劃訪問的信息?考慮如何構建數據,以便訪問它。不要回避違反我們過去20年來的正常化規則。擁抱冗餘的專業模型。也想出來並考慮使用平行查詢。如果數據存儲在多個位置,請同時追蹤每個位置並彙總結果。

最後,以預定義的顯示格式存儲一些數據。賠率是你的家庭樹信息大多是閱讀,所以有「優化的意見」。也許當你找到想要顯示的人時,那裏就有一個XML文件,可以讓所有數據準備好查看。

1

鑑於家族樹應用程序與實體之間的關係比實體本身更重要,因此在關係數據庫中對此進行建模將會更合適。

我發佈這並不回答你的問題,但在一天結束時,我們需要選擇最適合該任務的工具。