Working with SQL and the PGD Cluster#
PGDクラスターを使用する最初のステップは、
SQLを使用して接続することです。これは、 psql
コマンドラインインターフェイスまたはPostgreSQLをサポートする他のSQLクライアントを使用して実行できます。
クイックスタートキットのDocker Composeセットアップを使用している場合、
psql
コマンドは既にインストールされ構成されています。つまり、ホストの1つでシェルを取得するだけで作業が開始できます。
host-1
コンテナにサインインして、クラスター内でコマンドを実行できます。
docker compose exec host-1 bash
これにより、 host-1 コンテナ内にシェルが提供され、
PGDクラスターに対してPGDおよびSQLコマンドを実行できます。
PGDクラスター内の接続#
PGD Essentialでは、メンテナンスタスクを実行する場合を除き、通常、クラスター内のすべてのホストの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
クラスター内でnode-1 ノードを実行しているhost-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 |
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コマンドをカバーすることはこのガイドの範囲内ではありませんが、 SQL構文とコマンドの詳細については、 PostgreSQL documentation を参照してください。
PGDとの違い#
重要なのは、これらのSQLコマンドがクラスター全体でレプリケートされることです。
PGDがレプリケーションを処理します。たとえば、そのserial
キーはクラスター全体でグローバル一意キーに自動的に変換されているため、クラスター内の任意のノードにデータを挿入でき、それは他のすべてのノードにレプリケートされます。
PGD
Essentialの場合、書き込みリーダーに接続する必要があるため、これはそれほど重要ではありませんが、
PGD
Expandedでは、クラスター内の任意のノードに接続してSQLコマンドを実行できます。この自動変更により、サービスを心配せずにそれを行うことができます。競合または重複。
PGD Essentialを使用すると、将来も対応でき、
SQLコマンドやアプリケーションコードを変更せずに、後で簡単にPGD
Expandedに移行できます。
次のステップ#
PGDクラスターに接続し、いくつかのSQLコマンドを実行したため、次のトピックを探索できます。
Loading Data into your PGD Cluster 外部ソースからデータをインポートする方法を学習します。
Using PGD CLI コマンドラインからPGDクラスターを管理します。