2010-05-11 92 views
4

當前表存儲支持From,Where,Take和First。Windows Azure表存儲LINQ運算符

是否有計劃支持其他29個運營商?

是否有關於存儲的架構或設計實踐,爲了實現諸如COUNT,SUM,GROUP BY等之類的應該遵循的規則?

如果我們必須爲自己編寫代碼,那麼我們通過SQL和SQL Server查看類似的性能差異有多大?你是否認爲它有點可比性,或者如果我需要通過一個巨大的數據集進行計數或總計或分組的話,它會慢得多嗎?

我喜歡Azure平臺和基於雲存儲的想法。我喜歡Table Storage獲取它可以存儲的數據量及其無模式性質。由於存儲空間的高成本,SQL Azure無法正常工作。

+0

您可以投票發表評論,並對此留言http://windowsazure.uservoice.com/forums/34192-windows-azure-feature-voting/suggestions/397108-make-linq-to-tablestorage?ref=title – CoderDennis 2010-05-16 17:57:23

回答

3

唯一的選擇是在本地拉下所有東西,並在本地對象上運行Count()或Sum()。因爲在執行計數之前必須傳輸表中的全部內容,所以這肯定比使用SQL等服務器端要慢很多。慢多少取決於您的數據大小。

4

瑞安,

正如史蒂夫說,聚合得到解決「客戶端」,如果你的數據集過大可能kead壞perfromance。

另一種方法是以不同的方式思考問題。您可能需要預先計算這些值,以便隨時可用。例如,如果您擁有主數據細節(如普通採購訂單+訂單項),則可能需要將「訂單項總和」存儲在標題中。這看起來似乎是「多餘的」(而且是),但是非標準化是你必須考慮的事情。

這些預先計算可以完成「synch」或「asynch」。在某些情況下,你可以承受近似值,所以延遲計算可能是從性能角度來看有益的。

+0

我們試圖走這條路線並撞上路障。滾動Sum或Count在理論上聽起來似乎是個好主意,但在實踐中,你會遇到併發的噩夢。嘗試通過不同的Web或工作人員角色將單個計數字段每秒遞增幾百次。 – Vyrotek 2010-11-15 18:01:17