2017-07-13 8 views
0

中規模のエンティティインスタンス(50〜1000のエンティティ)が特定の顧客に属しているATSアプリケーションを構築しました。Azureテーブルストレージデザイン:エンティティごとのテーブルとPartitionKey

  • 各エンティティタイプは、独自のテーブルを持っています

    現在、私は次のようなデザインを得ました。例えば。すべての顧客を格納する '顧客'テーブルがあります。そして、すべてのものを保管する「もの」テーブル。

  • カスタマーIDはエンティティのパーティションキーです。例えば。顧客ABCに属するものがパーティションABCに属する。

ほとんどの場合、特定の顧客が所有するエンティティセットを照会、更新、および削除します。例えば。顧客が持っているすべての「事」のインスタンスを照会します。

これは行を整理する良い方法ですか? すべてのデータが保存されている顧客ごとに1つのテーブルを作成する方がよいでしょうか?

は、彼らが配布されるので、

+2

テーブルストレージにデータを整理するのにはいくつかの味があり、おそらくすべての味は独自の提案を持っています。それはまた、例えば物事のデータの構造にも依存する。カテゴリにカテゴリがある場合、これはthingsテーブルの素晴らしいパーティションキーになる可能性があります。それが比較的簡単なデータであれば、あなたの解決策は大丈夫です。要するに、答えを出すためにもっと多くの情報が必要ですが、主に意見に基づいた答えが得られます。 –

答えて

1

一つは、あなたの質問で2つの代替設計の違いは、あなたの現在のソリューションで、特定の顧客IDに属するエンティティのセット全体accrossバッチ操作のサポートを失うことになり、事前にありがとう異なるテーブル間であなたはあなたの要件について詳細な説明はしていませんが、お客様の顧客テーブルから顧客を削除しても対応するエンティティテーブルからその顧客エンティティを削除できないなどの不一致が生じる可能性があります。同じテーブル内にあることを確認します。一方、顧客IDがPKの同じテーブルにすべてのエンティティを置き、RKとしてカテゴリフィールドの場合は、パーティションキー全体でバッチ処理を実行できます。このパターンはおそらくあなたのパーティションを時間とともに膨らませ、他のperf関連の問題を打つかもしれないということです。この答えは決定的なものよりも情報的です。決定的な答えは、あなたのフルセットの要件、データモデル、頻繁なユースケース、スループットターゲットなどを調べることです。

関連する問題