2012-08-24 45 views
2

假设我有2k个分区。 I.E. 2K不同的分区键。所有分区都有3个guid行键。Azure Table Storage按行键性能选择

为了说明:

分区1 - 的Guid 1(rowkey) - 的Guid 2(rowkey) - 的Guid 3(rowkey)

分区2 - 的Guid 4(rowkey) - 的Guid 5(rowkey) - 的Guid 6(rowkey)

....等等

如果我一个确切的GUID一个做一个查询跨越所有分区。我将查看哪种查询性能?直接检索或表扫描?

更多背景信息。 我打算有以下模式:

UserEntity
分区键 - 用户的Guid
行键 - 用户名

OpenIdEntity
分区键 - 用户的Guid(同UserEntity)
行键 - 的OpenID

现在,当用户登录时,我需要 1)找到打开的ID(在此处选择具有1个不同的rowkey的记录,而不管分区) 2)找到用户名。 (因为分区键已知,分区很小,所以表扫描的影响应该是最小的)

我担心的是步骤1缓慢,如果Azure表存储扫描整个表以找到1个不同的rowkey。

在此先感谢。

回答

5

您的关注是有保证的。 “使用RowKey X的所有实体”形式的查询将导致全表扫描。

如果您知道您正在使用的一组分区键,则可以发出n并行查询(每个分区一个)。例如,“具有PartitionKey 1和RowKey X的所有实体”,“具有PartitionKey 2和RowKey X的所有实体”等。并行发布这些将意味着您正在做n直接查找,这通常比表扫描。

+0

感谢您的最后一行。不直观,但思考时有意义。 – emragins