2010-05-11 52 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