【PostgreSQL】PostgreSQL ~ 基礎知識編 ~

 ■ はじめに

 * PostgreSQL を使うことになるかもしれないので、
 主な特徴を調べてみた

 ■ 読み方

 * 「ポスグトレスキューエル」
 * 略して「ポスグレ」

 ■ 特徴

 * フリー
 * 結合、トランザクション、ストアドプロシージャ、トリガ等等、RDBMSの基本的な機能はできる
 * 日本語対応(ただし、SJISなど対応していない文字コードがある)

 ■ ライセンス

 * BSD ライセンス(ソース・コードを公開する必要がない)
  ⇒ 同じフリーのMySQLとは異なる

詳しくは以下。

http://itpro.nikkeibp.co.jp/article/COLUMN/20090609/331545/
http://lets.postgresql.jp/documents/tutorial/pgsql-guidebook/2

 ■ アーキテクチャ

 * テーブルのデータ書き込みにあたり、追記型アーキテクチャを採用している
   (他の主要なDBとは、異なる点)

 追記型アーキテクチャとは

 * ある行といったときでも、更新・削除をする前、した後、というように複数データが存在する
 ⇒ つまり、削除した際に、物理削除ではなく、論理削除している
  (削除したってマークはつけるが実際にデータを消してるわけじゃない)
 ⇒ 更新も、上書きではなく、新規追加して、既存の行の領域には「このデータはこの時点で書き換えられた」
   ということだけを書き換える(更新前のデータは物理的には残る)

以下の説明が分かり易い

http://dbtk.main.jp/doc/2012/0512/Study_PostgreSQL_02_01.pdf
http://thinkit.co.jp/article/1038/1/page/0/2

追記型アーキテクチャのメリット

 * 行の読み込みのロック獲得と行の書き込みのロックが競合しなくなり、
 ブロックしなくてすむ

追記型アーキテクチャのデメリット

 * 不要な領域がが肥大化する
 ⇒ そのため、不要領域を削除する「VACUUM」が必要
 ⇒ オートVACUUMという機能があり、定期的にVACUUM作業が行われる

 ■ バージョン

 * 基本、最新を使うのがいいらしい。(まーそりゃーそうだ)

 9.X系

 * 64ビット Windows対応
 * レプリケーション(Replication) 対応
  ⇒ 全てのデータベース・ファイルの変更をコミット後に他のサーバへ非同期に転送

 ■ 管理ツール

以下の関連記事を参照。

DBクライアントツール
https://dk521123.hatenablog.com/entry/2016/05/08/152815

 ■ メモ

 * 文字列の扱い

http://lets.postgresql.jp/documents/technical/text-processing/1

 参考文献

http://ja.wikipedia.org/wiki/PostgreSQL
http://www.atmarkit.co.jp/ait/articles/1306/07/news007.html

関連記事

自動ID付与 ~ SERIAL/BIGSERIAL/SMALLSERIAL ~
https://dk521123.hatenablog.com/entry/2021/08/10/000000
DBクライアントツール
https://dk521123.hatenablog.com/entry/2016/05/08/152815
検索方法あれこれ
https://dk521123.hatenablog.com/entry/2021/08/05/000000
PostgreSQLのインデックスあれこれ
https://dk521123.hatenablog.com/entry/2021/08/15/000000
PostgreSQLスキーマあれこれ
https://dk521123.hatenablog.com/entry/2021/08/18/000000
よく使う pdqlコマンド
https://dk521123.hatenablog.com/entry/2020/01/10/224818
psqlCSV出力する
https://dk521123.hatenablog.com/entry/2020/02/08/001155
PostgreSQLトランザクション
https://dk521123.hatenablog.com/entry/2014/03/12/002048
PostgreSQL ~ 統計情報 ~
https://dk521123.hatenablog.com/entry/2024/11/14/174334
PostgreSQL ~ テーブル情報を取得するには ~
https://dk521123.hatenablog.com/entry/2023/03/02/230435