適用対象: Azure Database for PostgreSQL - フレキシブル サーバー
クラスターには 5 つのテーブル型があり、それぞれが、ノードでは異なる方法で格納され、異なる目的に使われます。
分散テーブル
最もよく使用される最初の型が分散テーブルです。 SQL ステートメントには通常のテーブルのように見えますが、ワーカー ノードにわたり水平方向にパーティション分割されます。 つまり、テーブルの各行は異なるノード上の、シャードと呼ばれるフラグメント テーブル内に保存されます。
Elastic Cluster は、SQL だけでなく、クラスター全体で DDL (データ定義言語) ステートメントを実行します。 分散テーブルのスキーマの変更は、ワーカーにわたるすべてのテーブルのシャードの更新にカスケーディングされます。 このような操作は、ポート 5432 経由の接続を介して行う必要があります。
分散列
Elastic Cluster では、アルゴリズム シャーディングを使用して、シャードに行を割り当てます。 割り当ては、ディストリビューション列と呼ばれるテーブル列の値に基づいて決定論的に行われます。 クラスター管理者は、テーブルを配布するときに、この列を指定する必要があります。 パフォーマンスおよび機能には、適切な選択を行うことが重要です。
参照テーブル
参照テーブルは、コンテンツ全体が単一のシャードに集中される一種の分散テーブルです。 シャードは、すべてのワーカーにレプリケートされます。 いずれかのワーカーに対するクエリは、参照情報にローカルでアクセスでき、別のノードから行を要求するネットワーク オーバーヘッドは生じません。 行ごとに個別のシャードを区別する必要がないため、参照テーブルにはディストリビューション列はありません。
参照テーブルは通常小さく、任意のワーカー ノードで実行されるクエリに関連したデータの格納に使用されます。 たとえば、注文ステータスや製品カテゴリなどの列挙値があります。
ローカル テーブル
Elastic Cluster を使用する場合、各ノードは通常の PostgreSQL データベースです。 上に通常のテーブルを作成し、それらをシャードしないように選択できます。
ローカル テーブルの適切な候補は、結合クエリに参加していない小規模の管理用テーブルになります。 たとえば、アプリケーションのサインインと認証用の users
テーブルです。 この種類のテーブルは、ポート 7432 を使用して Elastic Cluster 間で接続の負荷分散を計画していない場合にのみ役立ちます。
ローカル マネージド テーブル
ローカル テーブルと参照テーブルの間に外部キー参照が存在する場合、Elastic Cluster はローカル テーブルをメタデータに自動的に追加する場合があります。 さらに、通常のローカル テーブルに対して citus_add_local_table_to_metadata function 関数を実行して、ローカルで管理されるテーブルを手動で作成できます。 メタデータに存在するテーブルはマネージド テーブルと見なされ、任意のノードからクエリを実行できます。 Citus は、ローカル マネージド テーブルからデータを取得するためにノードにルーティングすることを認識します。 このようなテーブルは、citus_tables
ビューに local として表示されます。
スキーマ テーブル
スキーマベースのシャーディングでは、分散スキーマが個々のコロケーション グループに自動的に関連付けられます。 それらのスキーマで作成されたテーブルは、シャード キーを持たない併置された分散テーブルに自動的に変換されます。 このようなテーブルはスキーマ テーブルと見なされ、citus_tables
ビューにスキーマとして表示されます。