2012-08-24 48 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