詳解 PostgreSQL[10/11対応]―現場で役立つ新機能と実践知識

第1章 PostgreSQLの今昔を知る―20年を超える歴史,リリースサイクル,環境構築

この記事を読むのに必要な時間:およそ 6.5 分

GUIによるインストール

CLIは苦手な方もいると思います。PostgreSQLはmacOS,Windowsともにインストーラが用意されています。各自の環境に合わせてダウンロードし,試してください。

次のとおり,インストール手順は簡単です。

インストール先のフォルダ
デフォルトのままで問題ない
Select Componentsの指定
SQLエディタであるpgadmin3のインストールの有無。pgadmin3を利用しない場合はcheckを入れずにそのままNextを選ぶ
postgres(スーパーユーザー)のパスワード
任意のパスワードを指定する
アクセスポート
デフォルトの5432で問題ない

以上でPostgreSQLのインストールが完了です。簡単に始めることができるので,SQLの勉強としてPostgreSQLを使いたい初学者の人にはお勧めです。

なお,インストーラでインストールした場合,自動起動が有効になります。WindowsやmacOSを起動したときにPostgreSQLが自動的に起動されます。

また,注意点としてインストール時にinitdbによるロケールと文字エンコーディングが指定できません。前述のロケールと文字エンコーディングを指定したDBの作成方法を利用しましょう。

Dockerによるインストール

昨今,ミドルウェアのインストールにコンテナを使うことが一般的になってきました。PostgreSQLの環境構築も例外ではなく,Dockerを利用したコンテナで簡単に作成できます。

それではさっそく,Dockerを利用してPostgreSQLの環境を構築しましょう。Dockerのインストール自体は割愛します。

PostgreSQLは,コミュニティの公式イメージをDocker Hubで公開しています。Dockerの環境があれば,次のコマンド一発でインストールできます。

PostgreSQLのインストールコマンド

# docker run -d --name postgres \
-e POSTGRES_PASSWORD={スーパーユーザーのパスワード} \
-p {フォワードするホストのポート:フォワード先のポート} \
postgres{:バージョン(指定しなければ最新)}

実際のコマンド例

# docker run -d --name postgres \
-e POSTGRES_PASSWORD=test \
-p 5432:5432 postgres:11

インストール後,コンテナは起動しています。ポートフォワードも指定していますから,SQLエディタなどで5432を指定してログインできます。次のとおり,CLIでDocker内のPostgreSQLにもログインできます。

コンテナへログイン

# docker exec -ti postgres bash

バージョンの確認

# psql --version
psql (PostgreSQL) 11.0 (Debian 11.0-1.pgdg90+2)

DBにログイン

# psql -U postgres
psql (11.0 (Debian 11.0-1.pgdg90+2))
Type "help" for help.

このようにコンテナのメリットは,お手軽に作れることです。また,簡単に捨てて作りなおすことができます。

PostgreSQLへの接続

お好みの方法で環境が構築できました。もちろんその次は接続です。PostgreSQLはほかのRDBMSと同様に,CLI,GUIの両方の接続を公式にサポートしています。

CLIとしてpsqlを使う

まずCLIでの接続を紹介します。CLIではpsqlという高機能なCLIツールを用います。前述のLinuxへのインストールの手順を行っていた場合やDockerコンテナを利用した場合,一緒にインストールされています。

今回は,Dockerコンテナへ$docker exec -tipostgres bashでログインしたあとの手順を紹介します。

接続

$ psql -U ユーザー名 -d DB名 -h ホスト名
demo=> SELECT datname FROM pg_database;
  datname
-----------
postgres
(省略)

ログアウト

demo=> \q
メタコマンド

ログアウトの際に入力したような\で始まるコマンドを,メタコマンドと呼びます。ヘルプを\?で見ることができ,メタコマンドの一覧を確認できます表2)⁠

表2 よく使うメタコマンドの一覧

コマンド内容
\h[名前]SQLコマンドの文法ヘルプ。*で全コマンドを表示する
\xMySQLの\Gと同様に横列を縦に表示する。カラム数が多いときなどでもコンソールでの表示を崩すことなく表示できる
\lDBの一覧を表示する
\i[ファイルパス]ファイルからコマンドを読み込んで実行する
\dtテーブルの一覧を表示
\c[DB名]新しいDBに接続する
\password[ユーザー名]ユーザーのパスワードを安全に変更する
\timing実行時間の表示の有無を切り替える

メタコマンドを覚えると効率が断然上がります。psqlは強力なTAB補完をサポートしており,⁠sel」と入力後に[tab」を入力すると「select」を補完してくれます。基本的な構文だけでなく,テーブル名やカラム名も強力に補完してくれますので,慣れるとコンソールでの作業が捗ること間違いなしです。

第3章の「Window関数の実行」ではpsqlを使っていますので,便利なメタコマンドを合わせて紹介します。

GUIでの接続

GUIでの接続では,pgadmin4からローカルに構築したPostgreSQLに対する接続を紹介します。pgadmin4はPostgreSQLに特化したブラウザで動作するDB管理ツールで,SQLを実行したり,UIからテーブルを追加したりできます。

無料で利用でき,macOSでもWindowsでもインストーラで簡単にインストールできます。UIはわかりやすいうえにちゃんと日本語化されています。

インストールして起動すると,ブラウザ上のたった2ステップだけで接続できます。

  1. Serverを右クリックして,サーバを作成する
  2. 名称,接続先を入力し保存する

接続できたら該当のDBを選択してみましょう。図2のとおり,ダッシュボードが見えていれば接続成功です。

このようにGUI上でテーブルも作成できますし,SQLを書くこともできます。手軽に始めることができ,実務でも十分使えるツールですので,この機会にお試しください。

図2 pgadmin4のダッシュボード

図2 pgadmin4のダッシュボード

まとめ

本章では,PostgreSQLの歴史から,リリースフローを通したPostgreSQLの最新情報のキャッチアップ,そしてインストールと接続までを紹介しました。このようにコミュニティベースで運用された歴史あるプロダクトは,ソースコード以外にリリースまでのしくみや機能実装のやりとりの中でも多くの学びがあります。これを機にみなさんもぜひインストールしてCommit Festにも興味を持っていただき,PostgreSQLのコミュニティに参加していただければと思います。

次の第2章では,PostgreSQLの内部構造に触れていきます。

WEB+DB PRESS

本誌最新号をチェック!
WEB+DB PRESS Vol.111

2019年6月24日発売
B5判/160ページ
定価(本体1,480円+税)
ISBN978-4-297-10657-7

  • 特集1
    新機能の数々をコミッターが最速解説!
    詳解Rails 6
    新コンポーネント,複数DB対応,並列テスト,オートロード刷新
  • 特集2
    動的かつ高速!
    はじめてのJulia
    科学技術計算のための新言語
  • 特集3
    見える化大作戦
    進捗,成果,無理/ムダ,個人の気持ち……
  • 一般記事
    Elm入門
    型安全な関数型言語によるフロントエンド開発

著者プロフィール

曽根壮大(そねたけとも)

株式会社オミカレ副社長兼CTO。数々の業務システム,Webサービスなどの開発・運用を担当し,2017年に株式会社はてなでサービス監視サービス「Mackerel」のCRE(Customer Reliability Engineer)を経て現職。 コミュニティでは,Microsoft MVPをはじめ,日本PostgreSQLユーザ会の理事として勉強会の開催を担当し,各地で登壇している。 builderscon 2017,YAPC::Kansaiなどのイベントでベストスピーカーを受賞し,分かりやすく実践的な内容のトークに定評がある。 他に,岡山Python勉強会を主催し,オープンラボ備後にも所属。著書に『Software Design』誌で,データベースに関する連載「RDBアンチパターン」をまとめた『失敗から学ぶRDBの正しい歩き方』を執筆。

@soudai1025
はてなid:Soudai

著書