我目前正在嘗試實施類似Tumblr的用戶交互,如reblog,follow,followers,commenting,我目前正在關注的人的博客文章等。 還有一個要求顯示活動爲每個博客文章。創建與NoSQL數據庫的關係的有效方式
我堅持爲數據庫創建適當的架構。有幾種方法可以實現這種功能(定義像博客文章和評論一樣嵌入的數據結構,爲每個動作創建活動文檔等),但目前我無法確定哪種方式在性能和可伸縮性方面最好。
例如,讓我們看看我關注的人的實施。這裏是示例用戶文檔。
User = { id: Integer,
username: String,
following: Array of Users,
followers: Array of Users,
}
這似乎微不足道。我可以管理每個用戶操作的下一個字段(關注/取消關注),但如果我當前關注的用戶被刪除,該怎麼辦?更新跟隨已刪除用戶的所有用戶記錄是否有效。
另一個問題是從我關注的人中創建博客文章的視圖。
Post = { id: Integer,
author: User,
body: Text,
}
那麼它是有效的查詢最新的帖子,如;
db.posts.find({ author: { $in : me.followers} })
感謝您的親切回答。我實際上非常適合使用適合Node.js的MongoDB。我不想使用任何其他技術(因爲我必須學習它並處理其他問題),只要它能夠通過有效地使用MongoDB來實現。 – 2012-02-10 16:11:35
我當然可以看到繼續嘗試使用MongoDB維護文檔關係的擔憂,因爲擔心其他技術會造成更多複雜性。然而,在我看來,這將是一個不可擴展的解決方案,除非應用程序非常小,並且總是由單個開發人員維護。隨着團隊中開發人員的增加,每個人都必須瞭解更新和刪除文檔與文檔關係的含義。從長遠來看,它只會導致更多的錯誤和複雜性。 – manish 2012-02-12 15:43:29