簡體   English   中英

如何選擇要用於對象存儲的數據庫

[英]How to select which database to use for object storing

我想部署一個小型的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幾天,但我不知道如何精確地優化搜索范圍,以選擇最佳數據庫。 我希望能夠設置一些對象模型/方案,並准確選擇要更新的部分以及每個結構中唯一的字段。

有什么建議么? 謝謝。

這不是一個可以回答的問題,因此很可能會關閉。 這里沒有一個正確的答案,還有一些問題要問,例如數據結構,速度要求以及關於您需要什么的舊CAP定理問題:

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

我建議mongo將是一個不錯的起點,如果您不經意地工作,並且不希望不得不大規模地解決上述任何問題。 Couch是另一個類似的選項,但社區規模不同。

我說mongo是因為您的數據已被規范化為文檔,而mongo擅長提供文檔。 它也講json!

RDBMS數據庫將要求您對文檔進行非規范化並創建關系,而這與將文檔粘貼到文檔中有關,需要進行大量工作。

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

為了提高速度,您可以使用redis,它在內存中具有恆定的時間查找。 但這更適合(在大多數情況下)臨時數據,例如用戶會話-而不是長期持久性存儲。

最后,還有諸如neo4j之類的圖形數據庫,它們是類似文檔的數據庫,用於存儲具有類型化邊的節點之間的關系。 這非常適合社交和推薦問題,但這可能不是您要解決的問題-在此問題中,它僅說明最適合存儲數據的內容。

考慮到一些可能性,我認為您可能會發現mongo最適合您的需求,因為您已經擁有json文檔結構,並且只需要對這些文檔進行簡單的持久化即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM