0

SQLServerにこのようなテーブルがあります

ユーザー

  • UserId(一意)
  • 名前

友達

  • ユーザーID
  • FriendId

トピック

  • ユーザーID
  • 主題

数千人のユーザーがいる可能性があります。テーブルには他にもいくつかのプロパティがあります。

私は次の答えを得るために質問することができます。

  1. ユーザー「トム」の友達全員をください。
  2. 「トム」が作成したトピックをすべて教えてください。
  3. 件名に「abc」が含まれているトムの友達が作成したすべてのトピックを教えてください。

Azureテーブルストレージでそれを行う場合、テーブルをどのように構成しますか?私はこれを経験しましたが、Azureテーブルストレージのモデリングの経験が豊富な人にいくつかの洞察を与えてもらいたいと思います。

4

1 に答える 1

0

1と2はとても簡単です。2つのAzureテーブルを作成します。ユーザーID(キーにユーザーIDを含む)でインデックス付けされたフレンドとトピックです。

3つ目は、Azureテーブル、特に「件名に「abc」が含まれている」部分でははるかに困難です。

Azureテーブルは全文検索をサポートしていません。基本的に、正確なキーを使用するか、「startswith」演算子を使用してのみ、値(または値の範囲)を効率的に取得できます。「keyが'keyvalue'と等しいすべてのレコードを教えてください」のように。または、「キーが「キーの下限」より大きく、「キーの上限」よりも小さいすべてのレコードを教えてください」。

'startswith'を使用してレコードの非キーフィールドでフィルタリングすることもできますが、これにはテーブルスキャンが含まれ、効率的ではありません。'contains'で同様のフィルタリングを行うことはできません。

したがって、ここで全文検索をサポートするものが必要だと思います。

于 2012-12-31T06:59:24.327 に答える