我正在爲使用Windows Azure的移動社交網絡構建服務器後端。反規格化Azure表中的聊天消息
我有這3個實體:
- 用戶 - 存儲在SQL Azure中
- 線(排序2用戶其隨後能夠發送消息給對方之間的關係) - 存儲在SQL Azure的
- 消息 - 在Azure的表
正如我存儲在由線程ID劃分Azure的表存儲的消息我期待好表現聊天時(發送/讀取消息到線程)。
但我也需要能夠爲用戶提供最新的帖子列表(最近=包含最新的消息)。換句話說,我需要在顯示時按最後的消息日期排序線程。
掃描許多不同的表分區並查找消息顯然會表現的殺手,所以我需要以某種非規範化數據到其他表分區能夠有效地獲取最新的線程。
基於你的經驗是什麼是最好的策略?
嗨,伊戈雷克,謝謝你的回答!我在解決方案中看到的問題是,您的目的是每次用戶將消息發佈到線程時,我都必須查詢SQL Azure以更新Thread表中的會話時間戳。這有點抵消了使用Azure Tables的優勢 - 可擴展性... – 2012-04-09 12:35:56
同意。我正在編輯我的主要回復 – Igorek 2012-04-09 13:00:05
伊戈雷克,感謝您更新答案。基於它,我實現了非常相似的東西,效果很好,所以我標記了你接受的答案。然而,我發現你與FlorinDumitrescu的討論(http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/6a745a22-540a-44d5-b426-d42dd8510da5),並對我以前的「表格更具擴展性「的世界觀。所以我要谷歌它,並最終開始有關它的新討論... – 2012-04-26 22:57:41