2013-05-03 92 views
0

我想部署一個小型Web項目我記住,我想要保存的數據是結構中嵌套的結構,而大多數時間內部結構不會具有相同的字段和類型。如何選擇要用於存儲對象的數據庫

例如,我想這樣的事情,是一個「行」在表中

{ 
    event : "The Oscars", 
    place : "Los Angeles, USA", 
    date : "March 2, 2014" 
    awards : 
    [ 

    bestMovie : 
    [ 

     name : "someName", 
     director : "someDirector", 
     actors : 
     [ 
     ... etc 
     ] 

    ], 

    bestActor : "someActor" 

    ] 

} 

(JSON對象很容易在目前使用的我,通過它的服務器之間和客戶端運行在JavaScript上)

我開始使用MySQL/PHP,但很快我看到它不適合我。我嘗試了mongoDB幾天,但我不知道如何完善我的搜索,哪一個是最好的db使用。 我希望能夠設置一些對象模型/模式,並選擇確切地更新哪個部分以及哪些字段在每個結構中是唯一的。

有什麼建議嗎?謝謝。

回答

1

這不是一個可回答的問題,所以可能會被關閉。 沒有一個正確的答案在這裏和那裏都是一些如數據結構,速度的要求,和你有什麼舊的CAP定理的問題有幾個問題需要:

  • 一致性
  • 可用性
  • 分區能力

我建議蒙戈將是一個偉大的地方開始,如果你隨便在外打工,並且不希望具有規模處理任何的問題上面。沙發是另一個類似的選項,但沒有相同的社區大小。

我說mongo是因爲你的數據非規範化爲一個文檔,mongo擅長提供文檔。它也講json!

RDBMS數據庫將要求您對文檔進行非規範化處理並創建關係,這與您將文檔粘貼到文檔中的位置相當有關。

您可以使用協議緩衝區對數據進行序列化並將其放入rdbms中,但這不可取。

對於熾烈的速度,你可以使用redis,它在內存中有恆定的時間查找。但是這對於像用戶會話這樣的短暫數據更適合(在大多數情況下) - 不是長期持久性存儲。

最後還有像neo4j這樣的圖形數據庫,它們是類文檔數據庫,用於存儲具有輸入邊的節點之間的關係。這非常適合社交和推薦問題,但這可能不是你想要解決的問題 - 在這個問題中,它只是陳述什麼最適合你的數據存儲。

看一些可能性,我想你可能會發現mongo最適合你的需求,因爲你已經有了json文檔結構,並且只需要簡單的持久性文件。

+0

非常感謝。我知道這是一個'通用'問題。那麼我現在會堅持使用mongoDB。 – AntouanK 2013-05-03 15:46:50