2016-06-20 8 views
2

Azureテーブルストレージでは、ニュースアップデートを保存します。パーティションキーは、ニュースカテゴリに割り当てられたキーワードです。 "政治"、 "スポーツ"などAzureテーブルストレージの多くのパーティションキーから選択します。

ユーザーがログインすると、別のデータベースに保存されているユーザーの関心に基づいてレコードを選択できます。したがって、ユーザーは「政治」と「スポーツ」に興味があるかもしれません。明らかに、我々は、ユーザが興味を持っているカテゴリが非常に多いかもしれない。それは20以上のカテゴリになる可能性があります。

これらのカテゴリでニュースを更新できるようにテーブルをクエリするにはどうすればよいですか?具体的には、Azureテーブルストレージに対するSELECTステートメントで指定できる条件の数に制限があります。私は15以上の条件を指定できるとは思わない。 partitionKey = xまたはpartitionKey = yなど

通常、NoSQLデータベースでは、解決策は正規化を解除することですが、この場合、これは恐ろしい選択です。ユーザーのIDをパーティションキーとして使用するとします。 100万人のユーザーがいる場合は、各ユーザーが簡単に独自の更新プログラムを入手できるように、異なるパーティションキーを使用して同じレコードを100万コピー作成するのは意味がありません。

Azure Table Storageを使用してこのシナリオを処理するにはどうすればよいですか?

答えて

2

この問題を処理するための推奨される方法は、各対象範囲に対して個別のクエリを作成することです。これは、各クエリがパーティションの境界を越えるのを避けることができるので、最高のパフォーマンスも提供します。複数のパーティションキーをフィルタリングするようにクエリを記述すると、複数のパーティション境界を超えてしまうため、パフォーマンスが低下します。

https://azure.microsoft.com/en-us/documentation/articles/storage-table-design-guide/#design-for-queryingを参照してください。シナリオについては説明しませんが、クエリを最適化するためのガイドラインを示します。

Azureテーブルのパーティションについての詳細は、https://azure.microsoft.com/en-us/documentation/articles/storage-scalability-targets/#partitions-in-azure-storageも参照してください。

関連する問題