我是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