0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PostgreSQLの学習:psql・Client・Server・Connectionの違いとは

0
Posted at

PostgreSQLの学習:psql・Client・Server・Connectionの違いとは

今回はPostgreSQLにおける、psql・Client・Server・Connectionの関係について整理してみたいと思います。

PostgreSQLを操作する際には、ClientからPostgreSQL Serverへ接続する必要があります。

今回は実際にpsqlを使ってPostgreSQL Serverへの接続と切断も行います。

所要時間は10分ほどです。

それでは、さっそく始めていきましょう!

Clientとは

Clientとは、Serverへ接続し、Serverに要求を送る側のソフトウェアです。

今回使用するpsqlというプログラムがClientとして機能します。

psql
└── PostgreSQL Serverに接続するClient

ここで重要なのは、Clientはディレクトリなどの「場所」を意味するのではなく、Serverへ要求を送る側のソフトウェアという役割を表している点です。

Serverとは

Serverとは、Clientから要求を受け取り、その要求に応じた処理やサービスを提供する側です。

今回使用しているPostgreSQLでは、PostgreSQL ServerがClientから要求を受け取り、Databaseに対する処理を行います。

Client
  │
  │ 要求
  ↓
PostgreSQL Server
  │
  │ 管理・処理
  ↓
Database

ここでいうServerは、必ずしも別の物理的なコンピュータを意味するわけではありません。

今回の学習環境では、自分のMac上でPostgreSQL Serverが動作しています。

Connectionとは

Connectionとは、ClientとServerとの間に確立される接続です。

今回の場合は、

psql
  │
  │ Connection
  ↓
PostgreSQL Server

という関係になります。

つまり、

  • psql:Client
  • PostgreSQL Server:Server
  • Connection:ClientとServerとの間に確立される接続

という違いがあります。

psqlとは

psqlとは、PostgreSQL Serverへ接続し、SQLなどの命令を送ったり、結果を受け取ったりするためのコマンドラインClientです。

そのため、

PostgreSQL ≠ psql

です。

PostgreSQLはRDBMSとして提供されるソフトウェアシステムであり、psqlはPostgreSQL Serverへ接続するClientとして機能するプログラムです。

関係を整理すると以下になります。

PostgreSQL
│
├── PostgreSQL Server
│     └── Databaseを管理・処理するServer側
│
└── psql
      └── PostgreSQL Serverへ接続するClient

コマンドラインClientとは

コマンドラインとは、文字列としてコマンドを入力してソフトウェアを操作する方式・インターフェースです。

そのため、コマンドラインClientとは、文字によるコマンド入力で操作するClientソフトウェアです。

psqlはPostgreSQLのコマンドラインClientなので、概念的には以下のようになります。

ユーザー
   │
   │ 文字で操作
   ↓
psql
   │
   │ Connection
   ↓
PostgreSQL Server

psqlのパスを確認する

今回、psqlは以下の場所にあります。

/opt/homebrew/opt/postgresql@17/bin/psql

これはpsqlという実行ファイルへの絶対パスです。

分解すると以下のようになります。

/
└── opt
    └── homebrew
        └── opt
            └── postgresql@17
                └── bin
                    └── psql

binは、実行可能なプログラムが置かれるディレクトリとして使われる慣習的な名称です。

そのため、

/opt/homebrew/opt/postgresql@17/bin/

はディレクトリであり、

/opt/homebrew/opt/postgresql@17/bin/psql

のpsqlが実際に実行するプログラムです。

つまり、

ディレクトリ
≠
プログラム
≠
Clientという役割

です。

psqlというプログラムが、今回のClientという役割を担います。

psqlでPostgreSQL Serverへ接続する

実際に以下のコマンドを実行しました。

/opt/homebrew/opt/postgresql@17/bin/psql postgres

このコマンドは以下の2つに分けて考えることができます。

/opt/homebrew/opt/postgresql@17/bin/psql  postgres
└─────────────────────────────────────┘  └──────┘
              実行するpsql                 引数
                                            │
                                            └── 接続先Database名

最後のpostgresはServer名ではなく、接続先のDatabase名です。

今回の構造は以下になります。

psql
  │
  │ Connection
  ↓
PostgreSQL Server
  │
  └── postgres Database

接続に成功すると、以下のように表示されました。

psql (17.11 (Homebrew))
"help"でヘルプを表示します。

postgres=#

postgres=#と表示されているため、psqlからPostgreSQL Serverへの接続が成功しています。

psqlから切断する

PostgreSQL Serverとの接続を終了する場合は、psql上で以下を入力します。

\q

すると、psqlが終了し、通常のターミナルに戻ります。

なお、

\q

はSQLではなく、psql自体を操作するためのコマンドです。

したがって、

SQL
└── PostgreSQL Serverに対する命令を記述する言語

\q
└── psqlを操作するコマンド

という違いがあります。

SQL・psql・PostgreSQL Server・Databaseの関係

ここまでの関係を整理すると以下のようになります。

ユーザー
   │
   │ psqlを起動
   ↓
psql
   │
   │ Client
   │
   │ Connectionを通じてSQLなどを送る
   ↓
PostgreSQL Server
   │
   │ SQLを処理
   │
   │ Databaseを管理
   ↓
Database

それぞれの役割は以下になります。

用語 役割
SQL RDBMSに対する命令を記述するために使う言語
psql PostgreSQL Serverへ接続するClient
Connection ClientとServerとの間に確立される接続
PostgreSQL Server Clientから要求を受け取りDatabaseに対する処理を行うServer側
Database PostgreSQL Serverによって管理される対象

PostgreSQLとPostgreSQL Serverの違い

PostgreSQLとPostgreSQL Serverも完全に同じ意味ではありません。

PostgreSQLは、RDBMSとして提供されるソフトウェアシステムです。

その中でPostgreSQL Serverは、Clientから要求を受け取り、Databaseの管理やSQLの処理などを行うServer側の中核部分です。

PostgreSQL
│
├── PostgreSQL Server
│     └── Server側
│
├── psql
│     └── Client
│
└── その他の関連ツール

そのため、

PostgreSQL = PostgreSQL Serverだけ

というわけではありません。

まとめ

今回は、PostgreSQLにおけるpsql・Client・Server・Connectionの関係について整理しました。

特に重要なのは以下の関係です。

psql
  │
  │ Connection
  ↓
PostgreSQL Server
  │
  │ Databaseを管理・処理
  ↓
Database

psqlはClientとして機能するプログラムであり、PostgreSQL ServerとのConnectionを確立します。

そのConnectionを通じてSQLなどの命令を送り、PostgreSQL ServerがDatabaseに対する処理を実行します。

今回、実際にpsqlからPostgreSQL Serverへの接続と切断まで確認できました。

次回は、実際にDatabaseを作成する方法について学習します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?