マルチテナントと Azure Database for PostgreSQL
Azure の多くのマルチテナント ソリューションで、オープンソースのリレーショナル データベース管理システムである Azure Database for PostgreSQL を使用しています。 この記事では、マルチテナント システムを使用する場合に役立つ Azure Database for PostgreSQL の機能について確認します。 また、マルチテナント ソリューションで Azure Database for PostgreSQL を使用する方法についてのガイダンスと例へのリンクも提供します。
デプロイ モード
Azure Database for PostgreSQL に対しては、次の 2 つのマルチテナント アプリケーションでの使用に適したデプロイ モードがあります。
- フレキシブル サーバー - これは、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 によって保守されています。 当初の寄稿者は以下のとおりです。
プリンシパル作成者:
- Daniel Scott-Raynsford |パートナー テクノロジ ストラテジスト
その他の共同作成者:
- John Downs | FastTrack for Azure のプリンシパル カスタマー エンジニア
- Arsen Vladimirskiy | FastTrack for Azure のプリンシパル カスタマー エンジニア
- Paul Burpo | プリンシパル カスタマー エンジニア、FastTrack for Azure ISVs
- Assaf Fraenkel | シニア エンジニア/データ アーキテクト、Azure FastTrack for ISVs and Start-ups
パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。
次の手順
マルチテナントのストレージとデータ アプローチを確認します。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示