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]テンプレートとは、テンプレート確認方法

Posted at

こんにちは!れーあです。
実は近々PostgreSQLを触ることができる案件に参画できそうな
雰囲気になってきたので最近勉強しています。

今回はそんなPostgreSQLのテンプレートについて
勉強した内容をまとめたいと思います。
なお、長くなりそうな気がしたので複数回にわけて投稿予定です。

それではどうぞ。

そもそもテンプレートとは

英語の意味としては「ひな型」、「定型文」といったことになります。
PostgreSQLにおいてもテンプレートはそのような意味を持ち、
データベースを作るための「ひな型」として使用することができます。
また、新たにデータベースを作成した時点で
下記2つのテンプレートが自動生成されます。
 ・template0
 ・template1

template0、template1の違い

それでは次に「template0」、「template1」の違いを見ていきましょう。
大きな違いとしてはテンプレートの中身を変更できるかできないかがあります。
template0は初期設定のデータベースの値が入っています。
つまり、テンプレートとして初期設定であるデータベースを
作成したい場合使用できます。
そうなると、初期設定が入ったテンプレートを使いたいという要件を維持するためにも
中身を変更するわけにはいかないため、変更はできないようになっています。

次に「template1」はどうでしょうか。
こちらは逆に変更可能であるテンプレートです。
例えば共通設定部分はテンプレート化して「template1」をベースに
データベースを作成した後、個別設定は各データベースで実施する
という使い方をしたいときに使用可能と思われます。

まとめると、
・データベース作成時点で「template0」、「template1」が
  自動で作成される
・「template0」は変更できず、初期設定のみ入った
  データベース作成に使用しやすい
・「template1」は変更できるため、共通設定を入れた
  データベース作成に使用しやすい

ということになります。

テンプレートの確認方法

では、実際どのように表示されるのか見てみたいと思います。

まず環境は下記です。

# OSのバージョン
[root@localhost ~]# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.6 (Ootpa)

# PostgreSQLのバージョン
[root@localhost ~]# su - postgres
最終ログイン: 2024/09/15 (日) 04:08:59 PDT日時 pts/0
[postgres@localhost ~]$ psql --version
psql (PostgreSQL) 13.9

それでは確認していきます。
なお、あらかじめ「postgres」というデータベースを作成しています。

-- データベースへログイン
$ psql -d postgres

-- テンプレートの確認
postgres=# SELECT datname, datistemplate FROM pg_database WHERE datistemplate = 'true' ;
  datname  | datistemplate
-----------+---------------
 template1 | t
 template0 | t
(2 rows)

上記はそれぞれ下記のような意味を持ちます。

使用した句 項目名 説明
SELECT句 datname データベース名
SELECT句 datistemplate テンプレートであるかの判定
FROM句 pg_database 使用可能なデータベース一覧
WHERE句 datistemplate = 'true' テンプレートである対象を絞り込み

その中で特に重要であったのが「datistemplate」です。
この設定により対象のデータベースがテンプレートとして使用可能なのか、
または使用不可なのかを判断します。
使用可能な場合は「t(true)」、使用不可な場合は「f(false)」と表示されます。

今回の場合、表示されている「template0」、「template1」ともに、
「datistemplate」の値は「t(true)」となっていましたので、両方とも
テンプレートとして使用可能と判断できます。

おわりに

というわけで、今回はPostgreSQLにおけるテンプレートとはなにか、
テンプレートの確認方法について書きました。
次回も引き続きPostgreSQLのテンプレートのお話を書こうと思っています。
次はテンプレートの作成、削除、変更についてを予定しています。

それではまた。

参考

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?