次の方法で共有


制限を境界としてパーティションを設定する

パーティション分割を使用してデータベース、ネットワーク、コンピューティングの制限を回避する

クラウドでは、すべてのサービスのスケールアップ機能に制限があります。 Azure サービスの制限については、 Azure サブスクリプションとサービスの制限、クォータ、制約に関するページを参照してください。 制限には、コア数、データベース サイズ、クエリ スループット、ネットワーク スループットが含まれます。 システムが十分に大きくなると、これらの制限の 1 つ以上に達する可能性があります。 パーティション分割を使用して、これらの制限を回避します。

システムをパーティション分割するには、次のような多くの方法があります。

  • データベース サイズ、データ I/O、または同時セッション数の制限を回避するために、データベースをパーティション分割します。

  • キューまたはメッセージ バスをパーティション分割して、要求数または同時接続数の制限を回避します。

  • App Service プランごとのインスタンス数の制限を回避するために、App Service Web アプリをパーティション分割します。

データベースは 、水平方向垂直方向、または 機能的にパーティション分割できます。

  • 水平方向のパーティション分割 (シャーディングとも呼ばれます) では、各パーティションは、合計データ セットのサブセットのデータを保持します。 パーティションは同じデータ スキーマを共有します。 たとえば、名前が A ~ M で始まるお客様は、あるパーティションに、N ~ Z は別のパーティションに入ります。

  • 垂直パーティション分割では、各パーティションはデータ ストア内の項目のフィールドのサブセットを保持します。 たとえば、頻繁にアクセスされるフィールドを 1 つのパーティションに配置し、アクセス頻度の低いフィールドを別のパーティションに配置します。

  • 機能パーティション分割では、データはシステム内の境界付けられた各コンテキストによってどのように使用されるかに従ってパーティション分割されます。 たとえば、請求書データを 1 つのパーティションに格納し、製品在庫データを別のパーティションに格納します。 スキーマは独立しています。

詳細なガイダンスについては、「 データのパーティション分割」を参照してください。

推奨事項

アプリケーションのさまざまな部分をパーティション分割します。 データベースはパーティション分割の 1 つの明白な候補ですが、ストレージ、キャッシュ、キュー、コンピューティング インスタンスも考慮します。

ホットスポットを回避するようにパーティション キーを設計します。 データベースをパーティション分割しても、1 つのシャードで要求の大部分が取得される場合は、問題を解決していません。 理想的には、負荷はすべてのパーティションに均等に分散されます。 たとえば、一部の文字の方が頻繁であるため、顧客名の最初の文字ではなく、顧客 ID でハッシュします。 メッセージ キューをパーティション分割する場合も、同じ原則が適用されます。 キューのセット間でメッセージが均等に分散されるパーティション キーを選択します。 詳細については、「 シャーディング」を参照してください。

Azure サブスクリプションとサービスの制限に関するパーティション分割。 個々のコンポーネントとサービスには制限がありますが、サブスクリプションとリソース グループにも制限があります。 非常に大規模なアプリケーションの場合は、これらの制限を中心にパーティション分割が必要になる場合があります。

異なるレベルでパーティション分割します。 VM にデプロイされたデータベース サーバーを考えてみましょう。 VM には、Azure Storage によってサポートされる VHD があります。 ストレージ アカウントは Azure サブスクリプションに属しています。 階層内の各ステップには制限があることに注意してください。 データベース サーバーには、接続プールの制限がある場合があります。 VM には CPU とネットワークの制限があります。 ストレージには IOPS の制限があります。 サブスクリプションには、VM コアの数に制限があります。 一般に、階層内の下位にパーティション分割する方が簡単です。 サブスクリプション レベルでパーティション分割する必要があるのは、大規模なアプリケーションだけです。