最近我在研究NoSQL數據庫。我需要關於如何針對給定問題以最優化和有效的方式存儲數據的建議。我現在針對的是MongoDB。但是它應該和CouchDB一樣。我需要關於NoSQL/MongoDb和數據/模型結構的建議
比方說,我們有這3種型號:
Story:
id
title
User:
id
name
Vote:
id
story_id
user_id
我希望能夠查詢數據庫,這些問題:
- 誰投了票?
- 此用戶投票的內容?
我做簡單的用一個關係數據庫工作時加入。問題是,我應該如何存儲這些對象的數據才能達到最高效率。
例如,如果我保存投票對象作爲故事的一個子集合它不會是容易得到的信息 - 「什麼是用戶投票支持」。
那麼,事實上,我想在投票模型中存儲更多信息。例如:created_at,ip,user_agent。 我應該將數據存儲在用戶集合的故事列表中嗎? – 2009-11-30 19:10:08
您可以將投票存儲爲一個子文檔數組,每個文檔類似於'{story_id:...,created_at:...,ip:...}'等,然後查詢變爲'find({'stories .story_id':...})'。你也可以索引。 – mdirolf 2009-11-30 21:17:13
那麼我有一個相當大的數據庫與幾個M記錄,並將測試上述情況。 – 2009-12-01 07:01:08