0

各パーティションにカスタム データ クラスに関する情報を格納する Azure ストレージ テーブルがあります。各パーティション行はそのクラスの履歴に似ており、クエリ時に返されるのは最新のレコードのみがサポートされています。

検索したいパーティションがわかっていれば、次のように最新のレコードを取得するのは非常に簡単です。

string pkFilter = TableQuery<MyEntity>.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionkeyvalue);
var query = new TableQuery<MyEntity>().Where(pkFilter).Take(1);

ここでのシナリオは、すべてのパーティションからトップ レコードを取得することです。各パーティションのトップ レコードを 1 回の呼び出しで効率的に取得するにはどうすればよいですか?

4

1 に答える 1

2

基本的に、操作ごとにグループを適用しようとしています。これは難しい問題です。なぜなら、no-sql はデータベースの概念にうまく対応できないからです。

したがって、唯一のオプションは回避策に限定されます。PK が 12 個ほどある場合は、テーブルでの並列操作が理にかなっている可能性があります。多数の PK がある場合は、最新の情報のみを含み、元のテーブルと同時にバッチ操作の一部として更新される別のテーブルを作成する必要がある場合があります。このようにして、セカンダリ テーブルには常に正しいデータが含まれます (バッチ操作が全体として成功または失敗するため)。

于 2014-03-18T03:24:26.933 に答える