マルチテナントと Azure Database for PostgreSQL
Azure の多くのマルチテナント ソリューションで、オープンソースのリレーショナル データベース管理システムである Azure Database for PostgreSQL を使用しています。 この記事では、マルチテナント システムを使用する場合に役立つ Azure Database for PostgreSQL の機能について確認します。 また、マルチテナント ソリューションで Azure Database for PostgreSQL を使用する方法についてのガイダンスと例へのリンクも提供します。
デプロイ モード
Azure Database for PostgreSQL に対しては、次の 2 つのマルチテナント アプリケーションでの使用に適したデプロイ モードがあります。
- Azure Database for PostgreSQL - フレキシブル サーバー - Azure Cosmos DB for PostgreSQL によって実現される高いスケーラビリティを必要としないほとんどのマルチテナント デプロイに適しています。
- Azure Cosmos DB for PostgreSQL - 高レベルのスケーリングを必要とするソリューション用に設計された Azure のマネージド データベース サービスで、多くの場合、マルチテナント アプリケーションを含みます。 このサービスは、Azure Cosmos DB 製品ファミリの一部です。
注意
Azure Database for PostgreSQL - 単一サーバーは廃止に向かっており、 2025 年 3 月 28 日までに廃止される予定です。 これは新しいマルチテナント ワークロードに対しては推奨されません。
マルチテナントをサポートする Azure Database for PostgreSQL の機能
Azure Database for PostgreSQL を使用してマルチテナント アプリケーションを構築する場合に、さまざまな機能を使用してソリューションを強化できます。
Note
一部の機能は、特定の デプロイ モードでのみ使用できます。 これらの機能は、以下のガイダンスに記載されています。
行レベルのセキュリティ
行レベルのセキュリティは、共有テーブルを使用するときに、テナントレベルの分離を適用する場合に便利です。 PostgreSQL では、行レベルのセキュリティは、 行セキュリティ ポリシー をテーブルに適用し、テナント別の行へのアクセスを制限することによって実装されます。
テーブルに行レベルのセキュリティを実装すると、パフォーマンスに若干の影響が生じる可能性があります。 そのため、パフォーマンスが影響を受けないように、行レベルのセキュリティが有効になっているテーブルに追加のインデックスを作成する必要がある場合があります。 行レベルのセキュリティが有効になっている場合は、パフォーマンス テスト手法を使用して、ワークロードがベースライン パフォーマンス要件を満たしていることを検証することをお勧めします。
詳細情報:
シャーディングを使用した水平スケーリング
シャーディング パターン を使用すると、複数のデータベースまたはデータベース サーバーにわたってワークロードをスケーリングできます。
非常に高いレベルのスケールを必要とするソリューションでは、Azure Cosmos DB for PostgreSQL を使用できます。 このデプロイ モードでは、複数のサーバー (ノード) 間でテナントを水平方向にシャーディングできます。 マルチテナント データベースで 分散テーブル を使用すると、テナントのすべてのデータが同じノードに格納され、クエリのパフォーマンスが向上します。
注意
2022 年 10 月から、Azure Database for PostgreSQL Hyperscale (Citus) が Azure Cosmos DB for PostgreSQL としてブランド変更され、 Cosmos DB 製品ファミリに移行されました。
詳細情報:
- Azure Cosmos DB for PostgreSQL を使用してマルチテナント データベースを設計する
- 分散テーブル
- 分散テーブルでの 分散列 の選択。
- マルチテナント アプリケーションに Citus を使用するためのガイド。
接続のプール
Postgres では、接続にプロセスベースのモデルが使用されます。 このモデルは、多数のアイドル状態の接続を維持するため、非効率的です。 一部のマルチテナント アーキテクチャでアクティブな接続が多数必要となり、Postgres サーバーのパフォーマンスに悪影響を及ぼします。
Azure Database for PostgreSQL - フレキシブル サーバーには、PgBouncer 経由の接続プールが既定でインストールされています。
詳細情報:
- Azure Database for PostgreSQL の PgBouncer - フレキシブル サーバー
- Azure Cosmos DB for PostgreSQL の接続プーリング
- Azure DB for PostgreSQL で PgBouncer 接続プール プロキシをインストールしてセットアップする手順
Microsoft Entra 認証
Azure Database for PostgreSQL - フレキシブル サーバー では Microsoft Entra ID を使用した接続の認証をサポートしています。 この機能により、マルチテナント環境のアプリケーション ワークロードは、テナント固有のサービス プリンシパルまたはマネージド ID を使用してデータベースに対する認証を行うことができます。つまり、データベース アクセスのスコープをテナント単位で設定できます。 Microsoft Entra ID 認証とテナント固有の 行セキュリティ ポリシーを組み合わせることにより、アプリケーションがマルチテナント データベース内から別のテナントのデータにアクセスするリスクを軽減できます。 詳細情報:
- Azure Database for MySQL - フレキシブル サーバーでの Microsoft Entra 認証
- マネージド ID を使用して Azure Database for PostgreSQL ‐ フレキシブル サーバーに接続する
共同作成者
この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。
プリンシパル作成者:
- Daniel Scott-Raynsford |パートナー テクノロジ ストラテジスト
その他の共同作成者:
- John Downs | プリンシパル ソフトウェア エンジニア
- Arsen Vladimirskiy | FastTrack for Azure のプリンシパル カスタマー エンジニア
- Paul Burpo | プリンシパル カスタマー エンジニア、FastTrack for Azure ISVs
- Assaf Fraenkel | シニア エンジニア/データ アーキテクト、Azure FastTrack for ISVs and Start-ups
パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。
次のステップ
マルチテナントのストレージとデータ アプローチを確認します。