Azure Cosmos DB for PostgreSQL のアプリケーションの種類を決定する
適用対象: Azure Cosmos DB for PostgreSQL (PostgreSQL の Citus データベース拡張機能を利用)
クラスターに対して効率的なクエリを実行するには、テーブルがサーバー間で適切に分散されている必要があります。 推奨される分散は、アプリケーションの種類とそのクエリ パターンによって異なります。
Azure Cosmos DB for PostgreSQL で適切に機能するアプリケーションの種類は大きく 2 つあります。 データ モデリングの最初の手順は、アプリケーションにより近く似ているものを特定することです。
概略
マルチテナント アプリケーション | リアルタイム アプリケーション |
---|---|
スキーマに数十または数百のテーブルが含まれる場合がある | 少数のテーブル |
一度に 1 つのテナント (会社、ストア) に関連するクエリ | 集計による比較的単純な分析クエリ |
Web クライアントにサービスを提供する OLTP ワークロード | 大量に取り込まれるほとんど不変のデータ |
テナントごとの分析クエリを処理する OLAP ワークロード | 多くの場合に大規模なイベントのテーブルを中心とする |
例と特性
マルチテナント アプリケーション
これらは通常、他の企業、アカウント、または組織にサービスを提供する SaaS アプリケーションです。 ほとんどの SaaS アプリケーションは本質的にリレーショナルです。 ノード間でデータを分散させるための自然なディメンションがあります。tenant_id によってシャード化するだけです。
Azure Cosmos DB for PostgreSQL により、アプリケーションを再設計する必要なく、データベースを何百万ものテナントにスケールアウトできます。 結合、外部キー制約、トランザクション、ACID、一貫性など、必要なリレーショナル セマンティクスを維持できます。
- 例:デジタル マーケティング ソリューションや販売自動化ツールなど、他のビジネス向けに店舗をホストする Web サイト。
- 特性:テナント間で情報を結合するのではなく、単一のテナントに関連するクエリ。 これには、Web クライアントにサービスを提供する OLTP ワークロードや、テナントごとの分析クエリを処理する OLAP ワークロードが含まれます。 データベース スキーマに数十または数百のテーブルがあることも、マルチテナント データ モデルの指標です。
Azure Cosmos DB for PostgreSQL を使用してマルチテナント アプリをスケーリングするには、アプリケーション コードに対する最小限の変更も必要です。 Ruby on Rails や Django などの人気のあるフレームワークをサポートしています。
リアルタイム分析
数値、統計、またはカウント クエリに対してすばやく結果を得るために、大規模な並列処理、数百のコアの調整を必要とするアプリケーション。 Azure Cosmos DB for PostgreSQL を使用すると、複数のノード間で SQL クエリをシャード化して並列化することで、1 秒未満で数十億のレコードに対してリアルタイムのクエリを実行できるようになります。
リアルタイム分析データ モデルのテーブルは、通常、user_id、host_id、device_id などの別列によって分散されます。
- 例:1 秒未満の応答時間を必要とするお客様向け分析ダッシュボード。
- 特性:多くの場合にデバイス、サイト、またはユーザーイベントの大きなテーブルを中心とし、ほとんど不変のデータの大量の取り込みを必要とする少数のテーブル。 複数の集計と GROUP BY を含む比較的単純な (ただし、計算量が多い) 分析クエリ。
上記のいずれかの状況に似ている場合、次の手順は、クラスター内のデータをシャードする方法を決定することです。 データベース管理者のディストリビューション列の選択では、パフォーマンスを確保するために、一般的なクエリのアクセス パターンと一致している必要があります。
次の手順
- データを効率的に分散するために、アプリケーション内のテーブルのディストリビューション列を選択する