2012-03-02 110 views
1

我打算開發一個Web應用程序,我需要決定我的數據庫系統的「類型」。我計劃在Django/Python中開發Web應用程序。我應該使用什麼類型的數據庫?

我的應用程序只包含一個'n'日益增長(數百萬)記錄和'k'列(1-100)的表。不幸的是,我無法控制'k'的數量。 'k'的大小可能會隨時間增加/減少(在1-100之間)。我不想在業績上有所折衷。

我應該使用什麼類型的數據庫?我最初的反應如下:

  • MySQL的:我想避免這個選項
  • Redis的:不錯的選擇,但(鍵,值)店不適合我的賬單
  • XML數據庫:外表對於這項任務來說很好,但它是否能提供理想的性能?我不知道這個

編輯 具體要求:面向關係數據庫

  • 對象

    要在K-列進行查找和檢索的「N」記錄的子集。我計劃提供類似Twitter或Facebook的REST api。例如,http://api.twitter.com/1/users/show.json?screen_name=Ashton。如果這是我計劃實施的screen_name將是其中的一列。同樣,可能會有其他參數,如user_id,朋友數等其他參數。

  • +1

    你的數據庫決定應該關注你想從中做出的查詢,而不是你想要存儲的數據。寫出K個字段的N個記錄不斷附加到文本文件符合國家的要求,但毫無疑問不是你要求的。所以你應該改述這個問題並且多談談你想要執行的其他操作。 – 2012-03-02 15:33:20

    +0

    @WillHartung我剛剛根據您的反饋添加了一個修改。我希望現在更清楚。 – Dexter 2012-03-02 15:39:18

    回答

    2

    聽起來您可能會因爲太多的先入爲主而做出這個決定。爲什麼你想避免MySQL?是否因爲你避免了僵化的模式?

    由於數據量的限制,Redis聽起來不太合適,但我不認爲這與它是一個關鍵/值存儲有什麼關係。

    對於MongoBD,您的數據需要聽起來像一個漂亮的textboook案例。你看過嗎?

    +0

    是的,我想避免MySQL由於僵化的模式。 Redis不適合,因爲它可能只有一個元組的關鍵。例如,(1,2,3,4)將在Redis中表示爲{1:2,3,4}。因此,我只能在'1'上查詢。我需要靈活地查詢記錄中的所有值。在上面的例子中,1/2/3/4。我將看看MongoDB。 – Dexter 2012-03-02 15:42:31

    +1

    我之所以提出有關redis的觀點是因爲我知道這是基於一種誤解。 redis不僅僅是一個簡單的鍵/值存儲。我沒有遇到問題,但我無法模擬它。它使用相同的原語將數據存儲爲更復雜的產品,但它不會隱藏複雜性。但是,我想你會發現mongodb可能是最適合你的。完全靈活的模式,即席查詢,令人印象深刻的速度。這是一個無模式存儲,你可以(主要)查詢像關係數據庫 – menacingly 2012-03-02 15:45:28

    +0

    通過Redis上的命令,我將不得不高度複製我的數據。無論如何,我會研究MongoDB。但是,如果您認爲我可以在Redis中構建數據模型,那麼我很想看看它。 – Dexter 2012-03-02 15:48:03

    相關問題