PostgreSQL

Article on other languages:

del.icio.us del.icio.us
Digg Digg
Furl Furl
Reddit Reddit
Rojo Rojo
Add to OnlyWire
PostgreSQL
開発元 PostgreSQL Global Development Group
最新版 8.3.5 / 2008年11月3日
対応OS クロスプラットフォーム
種別 RDBMS
ライセンス BSD
公式サイト www.postgresql.org
  

PostgreSQL(ぽすとぐれすきゅーえる: 発音例)は、BSDライセンスにより配布されているフリーの関係データベース管理システム (RDBMS) である。その名称は Ingres の後継を意味する「Post-Ingres」に由来している。単純に「Postgres」や「ポスグレ」と呼称されることも多い。

PostgreSQLはIllustraや、Illustraを買収しその技術を採りいれたInformixとともにオブジェクト関係データベース (ORDB) の実装のパイオニアとしての役割を果たしてきた。また、近年においては、機能、信頼性ともに目覚ましい発展を遂げており、商用のRDBMSと遜色が無くなってきている。

目次

特徴

プラットフォーム

  • UNIX系列、LinuxMicrosoft WindowsOS/2 など多くのOSで動作する。
  • Windowsにおいては、バージョン7.4以前はCygwin上で動作させることが出来た。バージョン8.0からはネイティブでサポートされるようになった。Windows版ではGUIの管理ツールであるpgAdminやドライバ等を同時にインストールできるWindowsインストーラも提供されている。

追記型アーキテクチャ

PostgreSQLは、MVCCの実現のため、追記型のアーキテクチャを採用している。 データを削除する際は実際のレコードは削除せず、該当行に削除マークを付けるのみである。 更新の際も内部的には削除と挿入を同時に行っている。 そのため、更新・削除が繰り返されるテーブルにおいては、たとえ理論的な行数が変わらなくとも、更新・運用を重ねるごとに物理的なファイルサイズが増加する。肥大化によるパフォーマンスの劣化を回避するため、次節に述べるバキューム作業を定期的に行う必要がある。

なお、バージョン8.3からはHeap-Only Tuples (HOT) が採用され、インデックスの変更を伴わない更新については、削除された行を直ちに再利用することが可能となり、この問題は大幅に改善された。

バキューム

バキューム (VACUUM) とは、追記型アーキテクチャにおける不要領域を回収し、再利用又はOSに返却する処理である。 各バージョンによって以下の差異がある。

PostgreSQL7.1以前

データベースファイル内の未使用領域を解放しOSに返却する処理のみをサポートする。 このVACUUMでは、処理中のテーブルに対して排他ロックが獲得されるため、VACUUMの間は対象テーブルへのアクセスがブロックされる。 システムの規模やテーブルの行数にもよるが、本バージョンにおいてシステムの停止を伴わない運用は困難であった。

PostgreSQL7.2/7.3

以前の動作を FULL 方式 (VACUUM FULL) とし、新たにコンカレント方式 (VACUUM) が実装された。 現在、単にバキュームと言った場合、後者のコンカレントバキュームを指す。

コンカレントバキュームでは、テーブルの排他ロックを伴わずに不要領域の回収を行う。 不要領域に対して再利用可能フラグを付けるのみの処理となるため、コンカレントバキュームを行っても基本的にデータベースの物理的なサイズは縮小しない。 しかし、以降の更新・削除において、このとき回収した領域が優先的に使用され、更新・削除によるファイルサイズの肥大を防止できる。

PostgeSQL7.4

自動的にバキュームを行う contrib/pg_autovacuum モジュールが提供された。 autovacuum はシステムを監視し、INSERT/UPDATE/DELETE の回数などの統計情報を利用して、適切なタイミングで適切なテーブルのみに対してバキュームを行う。 このため、高度な知識を要すことなく、不良領域の増加を十分に抑えることが可能となった。

なお、自動バキューム処理の際に参照される統計情報の記録はデフォルトでオフとなっているため、本機能を利用する際は統計情報の記録オプションもオンにする必要があり、この部分で多少のパフォーマンス低下を伴う。

PostgreSQL8.0

バキュームは多くのI/Oが必要なため、負荷の高い処理である。 バキューム実行中のシステムの全体の性能悪化を防ぐため、バキュームを行う速度を制限する機能が追加された。 ただし、バキューム自体の処理時間はその分多く要する。

PostgreSQL8.1

contribより提供されていた自動バキューム (autovacuum) 機能が本体に統合された。監視が効率化され、コマンドで発行した VACUUM との連携が可能になった。

PostgreSQL8.3以降

自動バキューム機能は標準で有効となった。加えて、Heap-Only Tuplesの採用により、バキューム自体の必要性が低減した。

PostgreSQL 周辺ツール

GUI

レプリケーション

PostgreSQL のレプリケーションは、サードパーティー製のオプションソフトウェアで実現できる。

各種レプリケーションソフトウェアの概要
方式 特徴
Slony-I 非同期型マスタスレーブ方式 Jan Wieck (PostgreSQL開発チーム コアメンバ) によって開発されたレプリケーションソフトウェア。バージョンアップやバックアップにも利用できる。
PGCluster 同期型マルチマスタ方式 三谷篤によって開発されたレプリケーションソフトウェア。ロードバランサ機能を備えている。
pgpool 同期型マルチマスタ方式 石井達夫によって開発されたレプリケーションソフトウェア。フェイルオーバー機能を備えている。

歴史

  • 1986年 - カリフォルニア大学バークレー校マイケル・ストーンブレーカーがPOSTGRESプロジェクトを発足
  • 1987年 - プロトタイプが完成、翌年のACM-SIGMODコンファレンスで紹介される
  • 1989年 - POSTGRES 1 を限定的にリリース
  • 1990年 - POSTGRES 2 のリリース。前バージョンの批評をもとにルールシステムが再設計された。
  • 1991年 - POSTGRES 3 のリリース。複数ストレージの管理機構追加等
  • 1993年 - POSTGRES 4.2 をもってカリフォルニア大学バークレー校におけるPOSTGRESプロジェクトが終了
  • 1995年5月1日 - POSTGRESのソースコードを元にして、Postgres95 0.01 がリリース
  • 1995年9月5日 - Postgres95 1.0 がSQL LIKE構文など実装して正式リリース
  • 1997年1月29日 - PostgreSQL 6.0 と名称を変え、POSTGRESプロジェクトの連番に戻し、多数の追加変更を行いリリース
  • 1998年10月30日 - PostgreSQL 6.4 : PL/pgSQL, マルチバイト文字列サポート の追加
  • 1999年6月9日 - PostgreSQL 6.5 : MVCC の追加
  • 2000年5月8日 - PostgreSQL 7.0 : 外部キー制約の追加
  • 2001年4月13日 - PostgreSQL 7.1 : WAL, TOAST, OUTER JOIN の追加
  • 2002年2月4日 - PostgreSQL 7.2 : コンカレントVACUUM の追加
  • 2002年11月27日 - PostgreSQL 7.3 : スキーマ, ドメイン, PREPARE の追加
  • 2003年11月17日 - PostgreSQL 7.4 : IPv6 の追加
  • 2005年1月19日 - PostgreSQL 8.0 : Microsoft Windows対応, サブトランザクション, PITR, テーブルスペース の追加 [1]
  • 2005年11月8日 - PostgreSQL 8.1 : 二相コミット, ROLE, 行共有ロック, テーブル・パーティショニング の追加 [2]
  • 2006年12月5日 - PostgreSQL 8.2 : ウォームスタンバイ, GIN の追加 [3]
  • 2008年2月4日 - PostgreSQL 8.3 : 更新処理性能の向上, XMLデータ型, 全文検索, JIS X 0213サポート, ENUM型, UUID型 [4]

関連項目

Ludia
NTTデータが開発したPostgreSQLの全文検索エンジン。LGPLに沿ってソースコードが公開されている。
PowerGRES Plus
富士通SRAOSSが開発したRDBMS。SRAOSSがPostgreSQLより開発した商用RDB『PowerGres』をベースとして、ストレージ管理部分に富士通『Symfoware Server』のものを移植している。

外部リンク

This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.


Giant Panda

Mercedes Car
James Bond Guide
This site monitored by SitePinger.net