PostgreSQL
[Wikipedia|▼Menu]

PostgreSQL

開発元PostgreSQL Global Development Group
初版1997年1月29日 (26年前) (1997-01-29)[1]
前身のPostgresは1989年6月 (34年前) (1989-06)[2]

最新版16.1[3]  - 2023年11月9日 (8日前) [±]
リポジトリ

git.postgresql.org/gitweb/?p=postgresql.git

プログラミング
言語C
対応OSクロスプラットフォーム
種別オブジェクト関係データベース
ライセンスThe PostgreSQL Licence
公式サイトwww.postgresql.org
テンプレートを表示

PostgreSQL(ポストグレス キューエル[※ 1])は、拡張性とSQL準拠を強調するフリーでオープンソース関係データベース管理システム(RDBMS)である。Postgresとしても知られている。もともとは、カリフォルニア大学バークレー校で開発されたIngresデータベースの後継としてその起源を根拠としたPOSTGRESという名前であった。1996年に、プロジェクトはSQLのサポートを反映してPostgreSQLに改名された。2007年の検討の結果、開発チームはPostgreSQLという名前とPostgresという別名を維持することを決定した。

PostgreSQLは、原子性、整合性、独立性、耐久性 (ACID)プロパティを持つトランザクション、自動更新可能なビューマテリアライズドビュートリガ外部キーストアドプロシージャを特徴としている。単一マシンからデータウェアハウスや多数の同時使用ユーザを持つWebサービスまで、さまざまなワークロードを扱えるように設計されている。macOS Serverのデフォルトデータベースであり、LinuxFreeBSDOpenBSDWindowsでも利用可能である。
概要

PostgreSQLはIllustraや、Illustraを買収しその技術を採りいれたInformixとともにオブジェクト関係データベース管理システムを実装してきた。[4]問い合わせ言語には SQL を用いており、SQL92, 99の大部分と、2003, 2008の一部をサポートしている。[※ 2]
市場シェア

DB-Engines.comによるマーケットシェア調査では、2018年2月現在、Oracle Database、MySQL、Microsoft SQL Server に続いて4位であり[5]、MySQL とのシェアの差は年々縮まる傾向にある[6]

2012年7月当時は、クラウドサービスプロバイダの Jelastic によると、オープンソースDBの中でのPostgreSQLの世界シェアは Jelastic のユーザー内では14%程度であった(MySQL系 70%(MySQL 56%、MariaDB 14%)、MongoDB 15%)[7]。日本の Jelastic のユーザー内では8%であり(MySQL系 66%(MySQL 50%、MariaDB 16%))、世界的なシェアとは状況が異なる[7]
プラットフォーム

Unix系FreeBSDOpenBSDLinuxmacOSSolaris)および Microsoft Windows で動作する。Windowsにおいては、バージョン7.4以前はCygwinを必要としたが、バージョン8.0以降はネイティブで動作する。

32ビット / 64ビット の両アーキテクチャ上で動作する。32ビット版では共有バッファサイズが最大2GBに制限されるが、64ビット版では上限は無い。

配布形態は、ソースコードや RPMAPT の他、EnterpriseDB 社よりGUIインストーラが提供されている。このパッケージにはGUIの管理ツールであるpgAdminやドライバ等の追加インストーラが同梱されている。

特徴
関数

関数(ストアドファンクション)によりサーバで実行される処理のまとまりを定義できる。PostgreSQL はを返却する関数を定義することができる。関数の出力は複数の行であり、クエリの中でテーブルと同様に扱うことができる。実行するユーザまたは定義したユーザのどちらの権限で実行されるかを指定して関数を定義できる。

関数の定義には SQL の他、分岐やループをサポートする下記の言語で実装することが可能である。言語によっては関数をデータベーストリガとして実行することもできる。
組み込みでサポートされている言語[8]

PL/pgSQL: Oracle Databaseで用いられるPL/SQLを参考にして実装されたビルトイン言語。

PL/tcl

PL/Perl

PL/Python

C言語[9]

外部のプロジェクトとして対応している言語

[10]

PL/Java[※ 3]

PL/Lua[※ 4]

PL/R[※ 5]

PL/sh[※ 6]

PL/v8[※ 7]

インデックス

PostgreSQL は組み込みで以下のインデックスをサポートしている[11]。デフォルトはB+木。また、ユーザ定義インデックスを追加することもできる。

B+木

ハッシュテーブル

GiST (汎用検索ツリー, 多次元木)[12]

SP-GiST (Space-Partitioned GiST)[13]

GIN (汎用転置インデックス)[14]

BRIN (Block Range INdex)[15]

PostgreSQL のインデックスには以下の特徴がある。

必要に応じて逆順でスキャンできる。逆順スキャン用のインデックスを別に定義する必要は無い。

式インデックス (関数インデックス) を定義できる。複数の列の値を引数に取る関数の結果をインデックス化する。

部分インデックス (条件付きインデックス) を定義できる。条件を指定し、条件に適合する行のみをインデックス化することで、インデックスのサイズを縮小できる。

クエリオプティマイザ (planner) は複数のインデックスを同時に使用するクエリ実行計画を作成できる。複数のインデックスの結果をメモリ上のビットマップとして併せ、そのビットマップに対応する行をテーブルから取得する。

トリガ

データベーストリガは SQL データ操作言語 (SQL DML) の文 (INSERT, UPDATE / UPDATE OF, DELETE, TRUNCATE) を実行した際に呼び出される。利用例として、INSERT 文で挿入される値が妥当かの検証がある。トリガが実行される条件は WHEN 句で与えることができる。

トリガはテーブルに対してのみ定義できる。ビューに対するトリガが必要な場合には、代わりにルールを使用する。複数のトリガが定義されている場合、アルファベット順に実行される。

トリガで実行される処理は関数として定義する。トリガ用の関数の定義には SQL 関数は使用できないが、PL/pgSQL やその他の多くの関数用言語を使うことができる。
ルール

ルールにより SQL の内部表現である「クエリ木」を書き換えることができる。一般的なルールの用途は更新可能ビューを実現することであり、標準 SQL で規定される "INSTEAD OF" トリガ の代わりに用いられる。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:96 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef