私は Azure のまったくの初心者です。目的は、RowKey に格納されているタイムスタンプに基づいて行を返すことです。クエリごとにトランザクション コストが発生するため、パフォーマンスを維持しながらトランザクション/クエリの数を最小限に抑えたい
提案されたパーティションと行キーは次のとおりです。
- パーティション キー: TextCache_(AccountID)_(ParentMessageId)
- 行キー: (DateOfMessage)_(MessageId)
凡例:
- AccountId - 整数です
- ParentMessageId - 存在する場合は親 messageId、親の場合は空白
- DateOfMessage - メッセージが作成された日付 - 形式は DateTime.Ticks.ToString("d19") になります
- MessageId - メッセージの一意の ID
> または < DateOfMessage_MessageId である行と子行を単一のクエリから取得したいと思います
これは、提案した 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)