ブログ投稿を保存するために azure テーブル ストレージを使用しています。各ブログ投稿には異なるタグを付けることができます。だから私は3つの異なるテーブルを持つつもりです。
- ブログの投稿を保存するもの。
- タグを格納するための 1 つ
- タグと投稿の関係を保存するもの
私の質問は次のとおりです。動的検索クエリを作成することは可能ですか? 検索するタグの数は、実行時までわからないためです。私が理解しているように、LINQを使用してのみAzureテーブルをクエリできます。または、動的に変更できる文字列クエリを入力できますか?
アップデート
ブログ テーブルにあるデータの例を次に示します。
PartitionKey,RowKey,Timestamp,Content,FromUser,Tags
user1, 1, 2012-08-08 13:57:23, "Hello World", "root", "yellow,red"
blogTag テーブル
PartitionKey,RowKey,Timestamp,TagId,TagName
"red", "red", 2012-08-08 11:40:29, 1, red
"yellow", "yellow", 2012-08-08 11:40:29, 2, yellow
関係表
PartitionKey,RowKey,Timestamp,DataId,TagId
1, 1, 2012-08-08 11:40:29, 1, 1
2, 1, 2012-08-08 13:57:23, 1, 2
これらのテーブルの使用例の 1 つは、たとえば、特定のタグを持つすべてのブログ投稿を取得する場合です。
- blogTag テーブルから tagId を照会する必要があります
- その後、関係テーブルで dataId を検索する必要があります
- 最後に、その dataId を持つブログ投稿のブログ テーブルを検索する必要があります。
私はLINQを使用してクエリを実行していますが、次のようになります
CloudTableQuery<DataTag> tagIds = (from e in ctx2.CreateQuery<DataTag>("datatags")
where e.PartitionKey == tags
select e).AsTableServiceQuery<DataTag>();
フィルターを使用する Gaurav Mantri の提案を試してみましたが、うまくいきました。しかし、その効率がどうなるかが心配です。そして、許可されている 15 個の離散比較の制限について。