Working with SQL and the PGD cluster#
PGDクラスターを使用する最初のステップは、
SQLを使用して接続することです。 psql
コマンドラインインターフェイスまたはPostgreSQLをサポートするその他のSQLクライアントを使用して接続します。
psql コマンドは既にインストールおよび構成されています。 host-1
コンテナにログインして、クラスター内でコマンドを実行します。
docker compose exec host-1 bash
このコマンドは、 host-1 コンテナ内にシェルを提供し、
PGDクラスターに対してPGDおよびSQLコマンドを実行できます。
PGDクラスター内の接続#
メンテナンスタスクを実行する場合を除き、通常は、クラスター内のすべてのホストのTCPポート6432で実行される接続マネージャーを使用してクラスターに接続します。
クラスター内の書き込みリーダーノードに接続します。
psql -h <host> -p 6432 -U <username> <database>
クラスターには、
postgresスーパーユーザーと1つのレプリケートデータベースpgddbのみを除き、ユーザーがいないため、次のコマンドを使用してクラスターに接続します。
psql -h host-1 -p 6432 -U postgres pgddb
このコマンドは、ポート6432のhost-1
コンテナで実行されている接続マネージャーに接続します。これは、クラスター内の書き込みリーダーノードにルーティングされます。
host-1
は、クラスター内のホストの名前に置き換えます。これらはすべて接続マネージャーを実行します。
クラスター内のどのノードに接続しているかを確認します。
select node_name from bdr.local_node_summary;
__OUTPUT__
node_name
-----------
node-1
psqlを終了し、別の設定で再接続します。
psql -h host-2 -p 6432 -U postgres pgddb
クラスター内の
node-1ノードに接続していることを確認します。
select node_name from bdr.local_node_summary;
node_name
-----------
node-1
接続マネージャーは、クラスター内の書き込みリーダーノード
node-1に接続をルーティングしています。変更を確認します。
\! pgd group group-1 show --summary
__OUTPUT__
Group Property | Value
-------------------+---------
Group Name | group-1
Parent Group Name | pgd
Group Type | data
Write Leader | node-1
Commit Scope |
Tip
psql の`!` コマンドを使用して、psql セッション内からシェルコマンドを直接実行します。 !!!
SQLでの作業#
クラスターに接続したら、 SQLコマンドでの作業を開始します。通常のPostgreSQLデータベースと同様に、テーブルを作成し、データを挿入し、クエリを実行します。
テーブルを作成し、データを挿入します。
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100) UNIQUE
);
INSERT INTO users (name, email) VALUES
(Alice, alice@example.com),
(Bob, bob@example.com);
データを照会します。
SELECT * FROM users;
__OUTPUT__
id | name | email
----+--------+---------------------
2 | Alice | alice@example.com
3 | Bob | bob@example.com
(2 rows)
より複雑なクエリーを実行し、テーブルを結合し、PostgreSQLのすべての機能を使用することもできます。 SQL構文とコマンドの詳細については、 PostgreSQL documentation を参照してください。
クラスター全体でのデータの複製#
PGDで重要なのは、これらのSQLコマンドがクラスター全体でレプリケートされることです。
PGDは、レプリケーションを行います。たとえば、そのserial
キーはクラスター全体でグローバル一意のキーに自動的に変換されるため、クラスター内の任意のノードにデータを挿入できます。それは競合や重複なしで他のすべてのノードにレプリケートされます。
次のステップ#
Loading data into your PGD Cluster 外部ソースからデータをインポートする方法を学習します。
Using PGD CLI コマンドラインからPGDクラスターを管理します。