2011-01-24 14 views
0

私のエンティティはキー値のペアです。時間の90%はキーに基づいてエンティティを取得しますが、時間の10%も逆引き参照を行います。つまり、値で検索してキーを取得します。Azure Tableを選択する方法ParityKeyとRowKeyは既に一意の属性を持っています。

キーと値の両方が一意であることが保証されているため、その組み合わせも一意であることが保証されています。

PartitionKeyとKeyをRowKeyとして使用するのは正しいですか?

これは、ParitionKeyが一意であるため、データがサーバー間で完全に負荷分散されることを保証します。

上記の決定に問題はありますか? ハードコーディングされたパーティションキーを使用することは実用的ですか?私はすべての行が同じパーティションキーを持っていますか? RowKeyをユニークに保ちますか?

答えて

7

あなたのデータのサイズにもよりますが、それは良い考えです。パーティションキーでクエリを実行すると、テーブルストアは正確なパーティションに直接移動し、すべてのレコードを取得できます。 Rowkeyだけでクエリを実行すると、テーブルストアはテーブルのすべてのパーティションに行が存在するかどうかをチェックする必要があります。 1000個のキーの値のペアがある場合、キーで検索すると1つのパーティション/行が読み込まれます。あなたの価値だけで検索した場合、それは1000のすべてのパーティションを読み込みます!

  1. は、2つの異なるテーブル、あなたのキーとしてのPartitionKeyと1、のPartitionKeyとしてあなたの価値を持つ他のを持っている:私は同様の問題に直面して

    は、私はそれを2つの方法を解決しました。ストレージは安価なので、データの複製にはコストがかかりません。

  2. (私が最後にしたこと)一意のキーに基づいて単一のエンティティを効果的に返す場合は、テーブルをトラバースする必要がないため、点(ポイント1のように区切られピボットされた) 、そうしないでください。

関連する問題