我是Azure的新手!其目的是基於存儲在RowKey中的時間戳返回行。由於存在與每個查詢交易成本,我希望儘量減少交易/查詢的數量,同時保持性能Azure Table Storage - 查詢之間使用的PartitionKey和RowKey選擇
這些建議的分區和行鍵:
- 分區鍵: TextCache_(帳戶)_(ParentMessageId)
- 行鍵:(DateOfMessage)_(的MessageId)
傳奇:
- ACCOUNTID - 是一個整數
- ParentMessageId - 父MESSAGEID如果有一個,空白,如果它是父
- DateOfMessage - 日期消息的創建 - 格式將是DateTime.Ticks。的ToString(「D19」)
- 的MessageId - 消息
我想獲得從單個查詢回行,這是任何childrows>或< DateOfMessage_MessageId的唯一ID
這可以通過我提出的PartitionKeys和RowKeys來完成嗎?
即..(在僞代碼)
var results = ctx.PartitionKey.StartsWith(TextCache_AccountId)
&& ctx.RowKey > (TimeStamp)_MessageId
其次,如果我有多少賬戶,並只想要回回第10位,可以將它通過一個單一的查詢進行
即..(在僞代碼)
var results = (
(
ctx.PartitionKey.StartsWith(TextCache_(AccountId1)) &&
&& ctx.RowKey > (TimeStamp1)_MessageId1)
)
||
(
ctx.PartitionKey.StartsWith(TextCache_(AccountId2)) &&
&& ctx.RowKey > (TimeStamp2)_MessageId2)
) ...
)
.Take(10)
謝謝knightpfhor,我更關心的是在表格存儲中打500個轉/秒,這會導致節流。我沒有想到AccountId的填充,這肯定是需要的。將做一些測試 – 2011-05-03 04:03:03
值得注意的是,油門限制是每個分區,而不是全局(儘管全侷限制是幾千trans/sec – knightpfhor 2011-05-03 04:13:18
關於'TextCache_'我補充說,作爲表標識符。如果我有多個實體如何我區分它們嗎? – 2011-05-03 04:16:40