0

つまり、Azureテーブルを使い始めたばかりです。これまでにAzureテーブルで遊んだことがないので、ぜひチェックしてみてください。

私の理解では、これはデータベースではなく、クールなオブジェクトストレージとして考える必要があります。しかし、私はいくつかの点で少し混乱しています...

まず、1対多のオブジェクト関係がある場合、ルートオブジェクトのパーティションキーはどのようになりますか?たとえば、Studentオブジェクトに対して1対多のUniversityオブジェクトがあり、Classesに対して1対多のStudentオブジェクトがあるとします。新入生の場合、そのパーティションキーは「universityId」にする必要がありますか?または'universityId+ studentId'?私はmsdnのドキュメントで、RowKeyは追加するアイテムに固有のIDであると想定されていることを読みました。これも、studentIdのように聞こえます。

そして、新しい大学のパーティションキーと行キーの両方が単にuniversityIdになるでしょうか?

また、Azureテーブルはリストを格納するためのものではないことも読みました-リストを含むオブジェクトの格納を参照していないと思います...?

そして、誰もがasp mvc 3または4と紺碧のテーブルを備えたかみそりを使用したコードサンプルへのリンクを持っていますか?これが私の最終目標です。自分が何をしているのかを実際に知っている人が何をしているのかを見るのはクールでしょう:)

ありがとう!

4

1 に答える 1

2

Azure Tables がデータベースよりもオブジェクト ストアに近いということは間違いありません。非キー列に対してクエリを実行したり、クエリでロジックを実行したりする機能がいくつかあります。ただし、パフォーマンスが重要な目的でこれらの機能を使用することは計画しないでください。

クエリは、テーブルのレイアウト方法に大きく影響する少なくとも PartitionKey (およびできれば RowKey または range または RowKeys) を指定した場合にのみ高速になるためです。最初に行う決定は、後でパフォーマンスに大きな影響を与えます。大まかな例えとして、主キーが (PartitionKey + RowKey) であり、別のインデックスを持つことのできない SQL Server テーブルのように考えるのが好きです。これは完全に正確というわけではありませんが、正しい方向に考えることができます。

まず、1 対多のオブジェクト関係がある場合、ルート オブジェクトのパーティション キーはどのように表示されますか?

おそらく、UniversityId を PartitionKey として使用します。一般的に、これは開始するのに安全な場所です。

新入生の場合、partitionkey は「universityId」にする必要がありますか? それとも「大学 ID + 学生 ID」ですか?

どのように学生に質問する予定ですか? 常に UniversityId と StudentId を使用する場合は、おそらくそれぞれを PartitionKey と RowKey にします。主に StudentId に基づいてクエリを実行する場合は、代わりにそれを PartitionKey として使用します。

新しい大学のパーティション キーと行キーの両方は、universityId になりますか?

それは実行可能な選択です。他に何も設定する必要がない場合は、RowKey に定数値 ("UNIVERSITY" など) を使用することもできます。

また、Azure テーブルはリストを保存するためのものではないことも読みました。これは、リストを含むオブジェクトを保存することを指していないと思います...?

それが何を意味するのか完全にはわかりません。明らかに、オブジェクトのコレクションをテーブルに格納できます。それが目的です。リストをエンティティ プロパティに直接格納することはできません。したがって、 Student に List 型のプロパティがある場合、それを直接保存することはできません。しかし、それを XML またはバイナリーにシリアライズして保管することはできます。

残念ながら、手元にあるコード サンプルはありません。これは、データ ロジックを MVC コントローラーに配置するのではなく、独自のレイヤーに抽象化する良い機会かもしれません。データ レイヤーを十分に抽象化すると、ロジックの単体テストが非常に簡単になることがわかりました。テーブル用のインターフェイスをいくつか作成すると、List と LINQ だけを使用してモック オブジェクトを作成するのは非常に簡単です。

于 2012-06-22T15:58:08.727 に答える