Arc 対応 PostgreSQL Hyperscale サーバー グループを使用したデータ分散の概念

この記事では、Azure Arc 対応 PostgreSQL Hyperscale から最大のメリットを得るために重要な主な概念について説明します。 以下のリンク先の記事では、Azure Database for PostgreSQL Hyperscale (Citus) について説明した概念を参照しています。 これは Azure Arc 対応 PostgreSQL Hyperscale と同じテクノロジであるため、同じ概念と分析観点が適用されます。

両者の相違点

  • Azure Database for PostgreSQL Hyperscale (Citus)

これは、Azure でのサービスとしてのデータベース (PaaS) として使用できる Postgres データベース エンジンのハイパースケール フォーム ファクターです。 Hyperscale エクスペリエンスを有効にする Citus 拡張を備えています。 このフォーム ファクターでは、サービスは Microsoft のデータセンターで実行され、Microsoft によって運用されます。

  • Azure Arc 対応 PostgreSQL Hyperscale

これは、Azure Arc 対応データ サービスで提供される Postgres データベース エンジンのハイパースケール フォーム ファクターです。 このフォームファクターでは、システムをホストするインフラストラクチャを お客様ご自身で用意し、運用していただきます。

Azure Arc 対応 PostgreSQL Hyperscale に関する主な概念を以下にまとめます。

注意

この記事で紹介しているテクノロジはプレビュー機能であり、「Microsoft Azure プレビューの追加利用規約」に従うことを条件として提供されます。

最新の更新プログラムについては、リリース ノートを参照してください。

最新の更新プログラムでは、直接接続モードでの Arc データ コントローラーのデプロイは Azure portal からのみサポートされています。

ノードとテーブル

Azure Arc 対応 PostgreSQL Hyperscale から最大のメリットを得るには、次の概念について理解しておくことが重要です。

  • Azure Arc 対応 PostgreSQL Hyperscale の特殊な Postgres ノード: コーディネーターとワーカー
  • テーブルの種類: 分散テーブル、参照テーブル、およびローカル テーブル
  • シャード

詳しくは、「Azure Database for PostgreSQL のノードとテーブル - Hyperscale (Citus)」をご覧ください。

アプリケーションの種類の特定

構築するアプリケーションの種類を明確に特定することが重要です。 なぜですか? Azure Arc 対応 PostgreSQL Hyperscale サーバー グループに対して効率的なクエリを実行するには、テーブルがサーバー間で適切に分散されている必要があるからです。 推奨される分散は、アプリケーションの種類とそのクエリ パターンによって異なります。 Azure Arc 対応 PostgreSQL Hyperscale で適切に機能するアプリケーションの種類は大きく 2 つあります。

  • マルチテナント アプリケーション
  • リアルタイム アプリケーション

データ モデリングの最初の手順は、アプリケーションにより近く似ているものを特定することです。

詳しくは、「アプリケーションの種類の判断」をご覧ください。

ディストリビューション列の選択

分散列を選択する理由

これは、モデリングに関する最も重要な決定事項の 1 つです。 Azure Arc 対応 PostgreSQL Hyperscale では、行のディストリビューション列の値に基づいて、行をシャードに格納します。 適切な選択では、同じ物理ノード上の関連データがまとめてグループ化され、クエリが高速になり、すべての SQL 機能のサポートが追加されます。 不適切な選択では、システムの動作が遅くなり、ノード全体ですべての SQL 機能をサポートできなくなります。 この記事では、最も一般的な 2 つのハイパースケール シナリオに関するディストリビューション列のヒントを紹介します。

詳しくは、ディストリビューション列の選択に関する記事をご覧ください。

テーブル コロケーション

コロケーションの目的は、同じノード上に関連情報をまとめて格納することです。 ネットワーク トラフィックを使用せずに必要なすべてのデータを入手できる場合に、クエリは高速化できます。 関連データを異なるノードに併置することで、各ノードでクエリを並列に効率的に実行できます。

詳しくは、テーブル コロケーションに関する記事をご覧ください。

次のステップ