2011-11-17 102 views
0

我有两个关于Azure存储表的简短问题。Azure存储表,有关查询和查询处理的问题

  1. 有没有像我可以用来查询存储表的技术的概述?我发现了一个LINQ的例子,在.NET框架中有没有其他的选择?

  2. “查询处理”在哪里发生?例如。当使用SQL并向SQL服务器发送复杂查询时,此服务器开始评估它并将结果返回给客户端。表存储是相同的,还是获取客户端数据的负载并且必须自己完成处理?

回答

4

对于#1,看看WCF数据服务客户端库(用于查询表存储的.NET)。如果你想手工构造URL,你可以避免使用LINQ,但是LINQ是人们从.NET代码中查询表存储的主要方式。

对于#2,表存储支持很少的操作(基本上只是过滤器)。如果您需要进行排序,分组等,您需要首先在本地下拉数据,然后从那里查询。事情发生的地方取决于你写的代码。例如,下面将失败:

mytable.Select(e => e.PartitionKey == "foo").OrderBy(e => e.SomeTime).Take(10)

,因为查询将被发送到Windows Azure表存储和失败,因为表不支持排序。但是,下面的工作(但是是非常低效):

mytable.Select(e => e.PartitionKey == "foo").ToList().OrderBy(e => e.SomeTime).Take(10)

这将导致设置(所有与“富”分区键)在本地拉下整个结果,因为.ToList原因要执行的查询。然后一旦它全部停留在内存中,它将被排序并返回前十个项目。

+0

谢谢。对于所有这些新的NoSQL数据库来说,这是典型的低运算量,还是Azure存储是功能的例外? – ceran