PostgreSQL
テンプレート:Infobox PostgreSQL(ぽすとぐれすきゅーえる: 発音例)は、BSDライセンスに類似するライセンス[1]により配布されているオープンソースのオブジェクト関係データベース管理システム (ORDBMS) である。その名称は Ingres の後継を意味する「Post-Ingres」に由来している。単純に「Postgres」や「ポスグレ」と呼称されることも多い。
概要
PostgreSQLはIllustraや、Illustraを買収しその技術を採りいれたInformixとともにオブジェクト関係データベース管理システムを実装してきた。[2] 問い合わせ言語には SQL を用いており、SQL92, 99の大部分と、2003, 2008の一部をサポートしている。(一覧 サポートあり / なし)
プラットフォーム
- UNIX系列、Linux、Microsoft Windows、OS/2 など多くのOSで動作する。Windowsにおいては、バージョン7.4以前はCygwinを必要としたが、バージョン8.0以降はネイティブで動作する。
- 32ビット / 64ビット の両アーキテクチャ上で動作する。32ビット版では共有バッファサイズが最大2GBに制限されるが、64ビット版では上限は無い。
- 配布形態は、ソースコードや RPM の他、EnterpriseDB 社よりGUIインストーラが提供されている。このパッケージにはGUIの管理ツールであるpgAdminやドライバ等の追加インストーラが同梱されている。
特徴
関数
関数(ストアドファンクション)によりサーバで実行される処理のまとまりを定義できる。 関数の定義には SQL の他、分岐やループをサポートする下記の言語で実装することが可能である。 言語によっては関数をデータベーストリガとして実行することもできる。
- PL/pgSQL
- Oracle Databaseで用いられるPL/SQLを参考にして実装されたビルトイン言語。
- PL/PSM
- SQL:2003 規格の SQL/PSM に則った構文を持つ。[1]
- スクリプト言語
- PL/Perl, PL/php, PL/Python, PL/Ruby, PL/sh, PL/Tcl, PL/Lua
- コンパイラ言語
- C言語, PL/Java
- 統計処理言語
- PL/R
PostgreSQL は行を返却する関数を定義することができる。 関数の出力は複数の行であり、クエリの中でテーブルと同様に扱うことができる。
実行するユーザまたは定義したユーザのどちらの権限で実行されるかを指定して関数を定義できる。
インデックス
PostgreSQL は組み込みで以下のインデックスをサポートしている。 また、ユーザ定義インデックスを追加することもできる。
PostgreSQL のインデックスには以下の特徴がある。
- 必要に応じて逆順でスキャンできる。逆順スキャン用のインデックスを別に定義する必要は無い。
- 式インデックス (関数インデックス) を定義できる。複数の列の値を引数に取る関数の結果をインデックス化する。
- 部分インデックス (条件付きインデックス) を定義できる。条件を指定し、条件に適合する行のみをインデックス化することで、インデックスのサイズを縮小できる。
- クエリオプティマイザ (planner) は複数のインデックスを同時に使用するクエリ実行計画を作成できる。複数のインデックスの結果をメモリ上のビットマップとして併せ、そのビットマップに対応する行をテーブルから取得する。
トリガ
データベーストリガは SQL データ操作言語 (SQL DML) の文 (INSERT, UPDATE / UPDATE OF, DELETE, TRUNCATE) を実行した際に呼び出される。 利用例として、INSERT 文で挿入される値が妥当かの検証がある。 トリガが実行される条件は WHEN 句で与えることができる。
トリガはテーブルに対してのみ定義できる。 ビューに対するトリガが必要な場合には、代わりにルールを使用する。 複数のトリガが定義されている場合、アルファベット順に実行される。
トリガで実行される処理は関数として定義する。 トリガ用の関数の定義には SQL 関数は使用できないが、PL/pgSQL やその他の多くの関数用言語を使うことができる。
ルール
ルールにより SQL の内部表現である「クエリ木」を書き換えることができる。 一般的なルールの用途は更新可能ビューを実現することであり、標準 SQL で規定される "INSTEAD OF" トリガ の代わりに用いられる。
データ型
多くのデータ型が利用できる。
- 配列 / 複合型
- 任意の精度を持つ数値
- 可変長文字列 / 可変長バイト列
- 日時, 日付, 時刻, 時間差分 (タイムゾーンの有無を指定可能)
- ブーリアン型
- 幾何型(点、線分、円、矩形、多角形)
- IPv4 / IPv6 アドレス, MAC アドレス
- XML 型、UUID 型, 列挙型(8.3以降)
可変長文字列と可変長バイト列には最大で 1GB を格納できる。一定のサイズを上回るデータ値は TOAST と呼ばれる機能により自動的に圧縮され別領域に配置される。そのため、ページサイズ (通常8KB) を上回るサイズの行であっても保存できる。
さらに、ユーザがデータ型を追加することもでき、それに対してインデックスを作成することもできる。 利用例として、GIS 用の型を GiST インデックスで検索可能な PostGIS プロジェクトがある。
ユーザ定義オブジェクト
ユーザはほとんどのデータベース・オブジェクトを追加できる。
- データ型 (TYPE) と データの定義域 (DOMAIN)
- 関数 (FUNCTION) と集約 (AGGREGATE)
- 演算子 (OPERATOR)
- 型変換 (CAST)
- 文字コード変換 (CONVERSION)
- 手続き言語 (LANGUAGE)
- 全文検索の設定 (TEXT SEARCH CONFIGURATION)
- インデックス・アクセス・メソッド
バキューム
バキューム (VACUUM) とは、追記型アーキテクチャにおける不要領域を回収し、再利用またはOSに返却する処理である。 なお、バージョン8.3からはHeap-Only Tuples (HOT) が採用され、インデックスの変更を伴わない更新については、削除された行を直ちに再利用することが可能となり、バキュームの必要な頻度は下がった。
PostgreSQLは、MVCCの実現のため、追記型のアーキテクチャを採用している。 データを削除する際は実際のレコードは削除せず、該当行に削除マークを付けるのみである。 更新の際も内部的には削除と挿入を同時に行っている。 そのため、更新・削除が繰り返されるテーブルにおいては、たとえ理論的な行数が変わらなくとも、更新・運用を重ねるごとに物理的なファイルサイズが増加する。肥大化によるパフォーマンスの劣化を回避するため、次節に述べるバキューム作業を定期的に行う必要がある。
各バージョンによって以下の差異がある。
- 7.1 以前
- データベースファイル内の未使用領域を解放しOSに返却する処理のみをサポートする。このVACUUMでは、処理中のテーブルに対して排他ロックが獲得されるため、VACUUMの間は対象テーブルへのアクセスがブロックされる。システムの規模やテーブルの行数にもよるが、本バージョンにおいてシステムの停止を伴わない運用は困難であった。
- 7.2
- 以前の動作を FULL 方式 (VACUUM FULL) とし、新たにコンカレント方式 (VACUUM) が実装された。現在、単にバキュームと言った場合、後者のコンカレントバキュームを指す。コンカレントバキュームでは、テーブルの排他ロックを伴わずに不要領域の回収を行う。不要領域に対して再利用可能フラグを付けるのみの処理となるため、コンカレントバキュームを行っても基本的にデータベースの物理的なサイズは縮小しない。しかし、以降の更新・挿入において、このとき回収した領域が優先的に使用され、更新・削除によるファイルサイズの肥大を防止できる。
- 7.3
- インデックスもコンカレントバキュームの対象になり、肥大化から回復させるための定期的にインデックスを再編成 (REINDEX) する必要が無くなった。これによりデータベース・オブジェクトの排他ロックを要するメンテナンスが不要になり、無停止での運用が可能になった。
- 7.4
- 自動的にバキュームを行う contrib/pg_autovacuum モジュールが提供された。autovacuum はシステムを監視し、INSERT/UPDATE/DELETE の回数などの統計情報を利用して、適切なタイミングで適切なテーブルのみに対してバキュームを行う。このため、高度な知識を要すことなく、不要領域の増加を十分に抑えることが可能となった。なお、自動バキューム処理の際に参照される統計情報の記録はデフォルトでオフとなっているため、本機能を利用する際は統計情報の記録オプションもオンにする必要がある。
- 8.0
- バキュームは多くのI/Oが必要なため、負荷の高い処理である。バキューム実行中のシステムの全体の性能悪化を防ぐため、バキュームを行う速度を制限する機能が追加された。ただし、バキューム自体の処理時間はその分多く要する。
- 8.1
- contribより提供されていた自動バキューム (autovacuum) 機能が本体に統合された。不要領域の監視が効率化され、コマンドで発行した VACUUM との連携が可能になった。
- 8.2
- トランザクションIDの周回がテーブル単位で管理されるようになり、定期的にデータベース単位でバキュームを行う必要が無くなった。テーブル単位のバキュームのみが必要である。また複数のバキュームを並列して実行した際の回収効率が向上した。
- 8.3
- 自動バキューム機能が標準で有効とされ、複数のテーブルに並列してバキュームを行うようになった。加えて Heap-Only Tuplesの採用により、バキューム自体の必要性が低減した。
- 8.4
- Visibility Map で処理が必要なページを追跡するようになり、バキュームが高速化された。また空き領域のあるページを管理する Free Space Map のメモリ管理が自動化された。
- 9.0
- VACUUM FULL が CLUSTER と類似の処理に変更され、高速化された。
パーティショニング
テーブル・パーティショニングは継承を用いて実現する。 これは、Oracle Database 7 のパーティション・ビューに近い実装である。
テーブルを作成する際、他テーブルを「親」テーブルとして指定し、継承関係を定義できる。 「子」テーブルに挿入された行は、親テーブルを参照した際にも取得される。 親テーブルに対する列の追加やCHECK制約の定義は自動的に子テーブルにも反映されるが、外部キーや一意性制約は継承をサポートしていない。
パーティショニングされたテーブルへは親テーブルを通してアクセスする。 SELECT, UPDATE, DELETE 文は子テーブルを含むよう展開されるが、クエリの条件が CHECK 制約に適合しない子テーブルは設定により自動的に除外することもできるため効率よく処理できる。INSERT については子テーブルを直接指定するか、親テーブルにトリガを作成することで挿入先を指示する必要がある。
全文検索
LIKE 述語と正規表現による文字列検索のほか、全文検索の機能を持つ。バージョン 8.3 以降は組み込みで、それ以前のバージョンでは contrib/tsearch2 として提供されている。この全文検索では文字列から単語を抽出し、転置テーブル (GIN) または単語空間を多次元木 (GiST) とするインデックスを作成できる。SQL/MM の全文検索とは異なり、「@@」演算子を使用する独自の文法で検索を行う。
SELECT * FROM テーブル WHERE to_tsvector(文字列カラム) @@ to_tsquery('検索クエリ')
標準では日本語の文字列から単語を抽出するパーサを持たないが、外部拡張である textsearch-ja を使用することで形態素解析による検索が可能となる。
また、標準の全文検索以外にも、Ludia, textsearch_senna (Senna を使用), pgestraier (Hyper Estraier), pgRast (Rast) などが外部拡張として存在する。
レプリケーション
PostgreSQL 9.0 より、組み込みのバイナリ・レプリケーションをサポートする。[2] トランザクションログを転送し、全てのデータベース・ファイルの変更をコミット後に他のサーバへ非同期に転送する。 単一マスタと複数スレーブを構成でき、スレーブは参照の問い合わせを受け付ける。 参照処理を複数のノードで負荷分散するスケールアウトが可能である。
その他の特徴
- 副問合せ (サブクエリ)
- 結合 (自然結合, 左外結合, 右外結合, 完全外結合)
- 制約 (外部キー, 一意性制約, CHECK制約)
- トランザクション / サブトランザクション (SAVEPOINT) / 2相コミット
- オンライン・バックアップ (論理 / 物理)
- バックアップ直後からデータ障害直前までの任意の時点への復旧 (en:Point-in-time recovery)
- SSLでの接続
- 表領域
性能
CPU スケーラビリティ
バージョン 8.1 以降 CPU スケーラビリティは大幅に改善された。 以降、改善を積み重ね、中規模のハードウェアであればスケーラビリティを十分に確保できるRDBMSとなっている。
なお、バージョン 9.2 では、少なくとも64コアのサーバマシン上でCPUスケールすることが確認されている。[3]
- 7.4 以前
- スケーラビリティはページ置換アルゴリズムとして採用されていた LRU により抑制されていた。ページを参照するたびにバッファ・プール全体を排他ロックしていたため、スケーラビリティは低かった。SMP 構成で 4CPU 程度が限界だった。
- 8.0
- LRU に代わり ARC が採用された(ただし、特許侵害の回避のため途中で 2Q に変更された[4])。ARC によりキャッシュヒット率は向上したものの、排他制御にオーバーヘッドが生じた。また、サブトランザクションをサポートするため追加された排他制御も新たなロック競合を生んだ。スケーラビリティは以前のバージョンと比較してむしろ低下しており、2CPU 程度で頭打ちになった。
- 8.1
- ページ置換アルゴリズムはクロックに変更され、スケーラビリティが大幅に向上した。ページの参照には共有ロックのみが必要であるため並行してアクセスが可能になった。8CPU 程度が上限となった。[5] [6]
- 8.2
- ページを管理するハッシュテーブルのロックが16個に分割され、共有ロックの実装に使用されるスピンロックへのアクセスが分散された。他にスピンロックの実装やサブトランザクションの排他制御が改良され、16CPU までのスケーラビリティが確認されている。[7]
更新処理
過去のバージョンの PostgreSQL は他の関係データベース管理システム (RDBMS) と比較して更新処理が遅いと言われていた。追記型アーキテクチャが採用されており、更新処理は削除と挿入の組み合わせとして実現されていた。特に挿入の際にインデックスのキーを追加する必要がある点で性能差が生じていた。
しかし、バージョン 8.3 にて Heap-Only Tuples (HOT) と呼ばれる機能が採用され、インデックスのキーとなっている列の値に変更が無い場合にはインデックスの更新を回避できるようになった。HOT により約2倍のスループット向上が確認されている。[8]
ベンチマーク
業界標準の規格に則ったベンチマーク結果として 2007年8月の サン・マイクロシステムズ (Sun) による報告がある。以下のハードウェアを使用し、813.73 SPECjAppServer2004 JOPS@Standard であった。[9]
- PostgreSQL 8.2.4
- Sun Java System Application Server 9.1 (商用版 GlassFish)
- Solaris 10
- en:Sun Fire T2000 (UltraSPARC T1 1.2GHz : 4スレッド × 8コア × 1個)
周辺ツール
管理ツール
PostgreSQL専用もしくは各種データベース汎用のデータベース接続クライアントを利用して管理できる。
psql
psql は PostgreSQL 付属のコマンドライン・プログラムである。 SQL を直接入力またはファイルから読み込んで実行するほか、スキーマ情報の表示などのメタコマンドを持つ。 また、SQL 構文やテーブル名などをタブキーにより入力補完できる。
pgAdmin
pgAdmin は GUI の管理インタフェースである。 Artistic License で配布される オープンソースソフトウェア (OSS) である。 多くのプラットフォームで動作し、日本語を含む多くの言語が利用できる。 また、専用の SQL エディタは psql と同様の入力補完機能を持つ。 Microsoft SQL Server Management Studio と似たインタフェースでデータベースを操作できる。
phpPgAdmin
phpPgAdminはウェブベースの管理ツールである。PHPで作られており GPL で配布されている。名称はphpMyAdminと似ているが、製品同士の関連性は無く、操作性はかなり異なる。
その他
- Webmin (OSS)
- Navicat PostgreSQL (商用)
- SQLMaestro (商用)
- Database Master (商用)
レプリケーション・アドオン
PostgreSQL はバージョン 9.0 よりレプリケーションを標準でサポートするが、サードパーティー製のオプション・ソフトウェアも利用できる。
名前 | 方式 | 開発元 | 特徴 |
---|---|---|---|
Slony-I | 非同期型マスタスレーブ | Jan Wieck | バージョンアップやバックアップにも利用できる。 |
Mammoth Replicator | 非同期型マスタスレーブ | Command Prompt, Inc. | BSDライセンス。 |
Londiste | 非同期型マスタスレーブ | Skype | 堅牢性と扱いの容易さを目標とするツール。Python製。 |
Bucardo | 非同期型マルチマスタ | Greg Sabino Mullane | BSDライセンス。 |
PGCluster | 同期型マルチマスタ | 三谷篤 | ロードバランサ機能を備える。 |
Postgres-R | 同期型マルチマスタ | Markus Wanner | 継続して開発中。 |
Cybercluster | 同期型マルチマスタ | Cybertec | BSDライセンス。 |
pgpool-II | 同期型プロキシサーバ | SRA OSS Inc. | フェイルオーバー機能を備える。 |
Sequoia | 同期型プロキシサーバ/ドライバ | Continuent Inc. | 他DBMSにも接続できる。 |
PostgresForest | 同期型プロキシドライバ | NTTデータ | JDBCラッパ。 |
Fermion | 同期型マルチマスタ | 株式会社Murakumo | 検索および更新処理の負荷分散、自動フェイルオーバー機能、マルチキャストを用いたノードの自動追加処理機能を備える。 |
接続インタフェース
PostgreSQL はクライアントサーバモデルであり、データベースへの接続は主に TCP/IP ポート番号 5432 を用いて通信を行う。通信プロトコルは「フロントエンド/バックエンドプロトコル[3]」として公開されている。
言語 | 名前 | ライセンス | 開発元 |
---|---|---|---|
C | libpq | BSD | 本体同梱 |
psqlODBC | LGPL | http://psqlodbc.projects.postgresql.org/ | |
ODBCng | GPL | https://projects.commandprompt.com/public/odbcng/ | |
C (埋め込みSQL) | ecpg | BSD | 本体同梱 |
C++ | libpqxx | BSD | http://pqxx.org/development/libpqxx/ |
Java | JDBC TYPE4 | BSD | http://jdbc.postgresql.org/ |
.NET (C#, VB) | Npgsql | BSD | http://npgsql.projects.postgresql.org/ |
dotConnect for PostgreSQL | http://www.devart.com/dotconnect/postgresql/ | ||
OleDB | PgOleDb | LGPL | http://pgfoundry.org/projects/oledb/ |
Perl | DBD::Pg | Artistic, GPL | http://search.cpan.org/dist/DBD-Pg/ |
Python | py-postgresql | BSD | http://python.projects.postgresql.org/ |
PyGreSQL | BSD | http://www.pygresql.org/ | |
psycopg2 | GPL | http://www.initd.org/ | |
pg8000 | BSD | http://pybrary.net/pg8000/ | |
PHP | php_pgsql | PHP License | http://jp2.php.net/pgsql |
Ruby | ruby-pg | Ruby License | http://rubyforge.org/projects/ruby-pg/ |
歴史
マイケル・ストーンブレーカーは、自分が開発を主導した関係データベース管理システム (RDBMS) であるIngres の商業化事業を一段落させると、カリフォルニア大学バークリー校 (UCB) に戻り、同校で新たなプロジェクトを開始した。 プロジェクトの名称は Postgres と名づけられた。 このプロジェクト名称は、Ingres の後継を意味する Post-Ingres に由来している。 Postgresプロジェクトは、関係モデルを使ったこれまでの既存のデータベース管理システムの限界に対処することを目的として、開始された。 最も重要な課題は、これまでのDBMSではユーザが自分で新たな定義域 (ドメイン、型) を既存の単純な定義域をもとにして定義できない点であった。 Postgresでは型 (定義域) を完全にサポートするために必要な最小限の機能だけを導入した。 Postgres ではデータベースが関係を「理解」すると言われ、「規則」に従って自然な方法で関連する関係 (リレーション、表、テーブル) から情報を得ることができた。 ユーザ自身が型を定義する機能に加えて、関連を完全に記述できる機能も備えていた。 プロジェクトは他にも、追記型メディア (光ディスクなど) への対応、大容量記憶装置への対応、推論、オブジェクト指向型データモデルなどを、取り入れた。 実装においては、データベースとアプリケーションソフトウェアの間の新たなインタフェースを実験的に導入した。
プロジェクトチームは、1986年からPostgresシステムの基盤を説明した多数の論文を公表した。 1988年、Postgres のプロトタイプバージョンを公開した。 1989年6月、少数のユーザに対してPostgresバージョン1を公開した。 1990年10月、ルールシステム (RULE) を実装し直したバージョン2を公開した。 1991年、バージョン3を公開した。 バージョン3では、ルールシステムが再度実装し直され、複数の記憶装置を管理する機構が追加され、クエリエンジンが改良された。 1993年には、非常に多くのユーザが、プロジェクトに対して、サポートと追加機能を要望して、圧倒させるほどの状態となっていた。 1993年、主として雑然とした部分をきれいにしたことを内容とするバージョン4.2が公開された。 バージョン4.2が公開された後、Postgres プロジェクトは終了した。 Postgres は広く使われたが、保守はユーザに任されていた。
マイケル・ストーンブレーカーと Paula Hawthorn は、Postgresを商業化するために、Illustra Information Technologies 社を創業して、Illustraの製品名で開発・販売した。その技術は IBM Informix Dynamic Server (IDS) に導入されている。
一方、オープンソースの世界のソフトウェア開発者たちは、Postgres のコピーを入手してシステムのさらなる開発を進めることができた。 なぜならカリフォルニア大学バークリー校 (UCB) は、Postgres をオープンソースライセンスであるBSDライセンスのもとで公開していたからである。 1994年に、カリフォルニア大学バークリー校 (UCB) の大学院生であった Andrew Yu と Jolly Chen は、システムの問い合わせ言語のインタプリタを、Ingres を基にした QUEL のインタプリタから、SQL のインタプリタに置き換える作業を行った。 SQLインタプリタを備えたこのシステムは、Postgres95 と呼ばれた。 Postgres95 のソースコードは、ワールドワイドウェブに公開された。
1996年7月に Hub.Org Networking Services の Marc Fournier は、大学外の組織としては最初に、開発用サーバをオープンソースソフトウェア開発のために活動する人々に、提供した。 Postgres95プロジェクトは、Bruce Momjian と Vadim B. Mikheev とともに、カリフォルニア大学バークリー校 (UCB) に由来するソースコードを堅牢にする作業を始めた。 1996年8月1日に、Postgres95の最初のオープンソースのバージョンが公開された。
1996年に Postgres95 プロジェクトは、プロジェクトの名称を、SQL のサポートをしているという意味をこめて PostgreSQLに変更した。 1997年1月に PostgreSQL プロジェクトとしての最初のバージョンである、PostgreSQL バージョン 6.0 が公開された。 このときから、インターネットを通じて世界中のデータベース開発者のグループがPostgreSQLの開発に参加し、共同作業によるプロジェクトをうまく調整する体制ができあがった。
1999年7月23日、日本PostgreSQLユーザ会が設立し、任意団体として活動を開始した。[4]
2001年以降には PostgreSQL を商用サポートする会社が現れた。
- 2001年 Command Prompt, Inc. (Mammoth Replicator; レプリケーション)
- 2003年 SRAOSS (PowerGres, PowerGRES Plus)
- PowerGRES Plusは富士通とSRAOSSが開発したRDBMSであり、SRAOSSがPostgreSQLより開発した商用RDB『PowerGres』をベースとして、ストレージ管理部分に富士通『Symfoware Server』のものを移植している。
- 2005年 EnterpriseDB 社 (Postgres Plus; Oracle との互換性向上)
- 2005年 Greenplum 社 (BizGres; データウェアハウスやBI向け)
- 2006年2月1日、日本PostgreSQLユーザ会は NPO として再編成された。
- 2011年7月 オープンソースデータベース技術者認定試験(OSS-DB Exam)において基準のRDBMSとして採用された。
バージョン履歴
PostgreSQLのバージョンは「x.y.z」(x、y、zはそれぞれ整数) で表現される。「x.y」の部分がメジャーバージョン、「z」がマイナーバージョンである[10]。
- 1986年 - カリフォルニア大学バークレー校 (UCB) でマイケル・ストーンブレーカーがPOSTGRESプロジェクトを発足
- 1987年 - プロトタイプが完成、翌年のACM-SIGMODコンファレンスで紹介される
- 1989年 - POSTGRES 1 を限定的にリリース
- 1990年 - POSTGRES 2 のリリース。前バージョンの批評をもとにルールシステムが再設計された。
- 1991年 - POSTGRES 3 のリリース。複数ストレージの管理機構追加等
- 1993年 - POSTGRES 4.2 をもってカリフォルニア大学バークレー校におけるPOSTGRESプロジェクトが終了
ver. | リリース日 | 追加機能 |
---|---|---|
0.01 | 1995-05-01 | POSTGRESのソースコードを元にした Postgres95 のリリース |
1.0 | 1995-09-05 | SQL LIKE構文などを実装した Postgres95 の正式リリース |
6.0 | 1997-01-29 | PostgreSQL と名称を変え、POSTGRESプロジェクトの連番に戻された |
6.1 | 1997-06-08 | |
6.2 | 1997-10-02 | |
6.3 | 1998-03-01 | 副問い合わせ, PL/Tcl |
6.4 | 1998-10-30 | PL/pgSQL, マルチバイト文字列サポート, ビュー |
6.5 | 1999-06-09 | MVCC, 一時表, CASE, INTERSECT, EXCEPT |
7.0 | 2000-05-08 | 外部キー制約 |
7.1 | 2001-04-13 | WAL, TOAST, OUTER JOIN |
7.2 | 2002-02-04 | コンカレントVACUUM, PL/Python |
7.3 | 2002-11-27 | スキーマ, ドメイン, PREPARE |
7.4 | 2003-11-17 | IPv6, information_schema |
8.0 | 2005-01-19 | Microsoft Windows対応, SAVEPOINT, PITR, 表領域 [11] |
8.1 | 2005-11-08 | 2相コミット, ROLE, 行共有ロック, テーブル・パーティショニング [12] |
8.2 | 2006-12-05 | ウォームスタンバイ, GIN [13] |
8.3 | 2008-02-04 | 更新処理性能の向上, XMLデータ型, 全文検索, JIS X 0213, ENUM型, UUID型 [14] |
8.4 | 2009-07-01 | 再帰クエリ, ウィンドウ関数, 列単位のアクセス制御, SQLと関数の性能解析機能 [15] |
9.0 | 2010-09-20 | レプリケーション, 一括権限変更, 匿名プロシージャ, 64bit Windows サポート, 移動平均, 列/条件トリガ, 一意性制約の遅延, 排他制約 [16] |
9.1 | 2011-09-12 | 同期レプリケーション, 外部テーブル, パッケージ管理, UNLOGGEDテーブル, 更新可能なWITH句, 近傍検索, SELinux権限制御[17] |
9.2 | 2012-09-10 | インデックスオンリースキャン, カスケードレプリケーション, JSON型, 範囲型[18] |
9.3 | 2013-09-09 | マテリアライズドビュー, 外部テーブルへの書き出し, イベントトリガ, データページ・チェックサム, LATERAL句[19] |
受賞
2008年の時点で、PostgreSQL は以下の受賞をしている。[5]
- 1999 LinuxWorld Editor's Choice Award for Best Database
- 2000 Linux Journal Editors' Choice Awards for Best Database
- 2002 Linux New Media Editors Choice Award for Best Database
- 2003 Linux Journal Editors' Choice Awards for Best Database
- 2004 Linux New Media Award For Best Database
- 2004 Linux Journal Editors' Choice Awards for Best Database
- 2004 ArsTechnica Best Server Application Award
- 2005 Linux Journal Editors' Choice Awards for Best Database
- 2006 Linux Journal Editors' Choice Awards for Best Database
- 2008 Developer.com Product of the Year, Database Tool
脚注
参考書籍
- テンプレート:Cite book
- テンプレート:Cite book
- テンプレート:Cite book
- テンプレート:Cite book
- テンプレート:Cite book
- テンプレート:Cite book
外部リンク
テンプレート:Portal テンプレート:Sister テンプレート:Sister
- PostgreSQL本家サイト (一次配布先)
- PostgreSQL Wiki
- PgFoundry (関連プロジェクト)
- NPO法人 日本PostgreSQLユーザ会
- PostgreSQL日本語ドキュメント
- Let's Postgres (JPUGポータル)
- PostgreSQL Information Page 石井達夫によるPostgreSQLの紹介ページ
- PostgreSQL Notes for Japanese くわむらじゅんによるPostgreSQLの紹介ページ
- Planet PostgreSQL (Blogの集約)
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite web
- ↑ PostgreSQL 文書, "リリース8.0.2"
- ↑ OSS iPedia, "DBT-1によるPostgreSQL8.1の32ビットマシン(IA32)でのCPUスケーラビリティに関する考察(チューニング有り) "
- ↑ OSS iPedia, "DBT-1によるパッチを適用したPostgreSQL8.1.2の32ビットマシン(IA32)でのCPUスケーラビリティに関する考察(チューニング有り) "
- ↑ Doug Tolbert (Unisys), "Scaling PostgreSQL on SMP Architectures -- An Update" (PGCon 2007)
- ↑ 【PostgreSQLウォッチ】第35回 性能を大幅に改善するPostgreSQL 8.3の新機能「HOT」とは
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web