PostgreSQL情報
PostgreSQLとは
PostgreSQL(ポストグレエスキューエル)とは、C言語で実装されたオープンソースのオブジェクトリレーショナルデータベース管理システム(ORDBMS)です。
PostgreSQLの前身POSTGRESがカリフォルニア大学バークレー校で開発されて以来、世界中のコミュニティメンバーによる積極的な開発が続けられ、バージョンアップを繰り返す中で多くの機能追加が行われてきました。現在では、PostgreSQLは商用製品と比較しても遜色の無い本格的な機能と信頼性を持っており、MySQLと並ぶ人気のオープンソースデータベースです。
PostgreSQLは、バージョン6.3から日本語に対応し、日本語の情報も充実していたため、日本でも早くからさまざまな規模のシステムで幅広く使われてきました。多機能であるという特徴に加え、近年では大規模ユーザ向けの性能改善が積極的に行われたことでスケーラビリティもさらに向上し、大規模システムでのPostgreSQL導入事例も増えてきています。
主な特徴
PostgreSQLは、次のような特徴があります。
スケーラビリティと柔軟性
PostgreSQLは組み込みアプリケーションから大規模データ・ウェアハウスまで幅広く対応できます。
ただし、PostgreSQLはクライアント/サーバ・アーキテクチャであることからアプリケーションと別プロセスで動作することになります。 ですので、組み込みシステムのアーキテクチャによっては対応できない場合もあります。
また、専用のミドルウェアのpgpool-IIを利用することで複数構成のPostgreSQLをロードバランシングして利用でき、スケールアウトすることが可能です。
高機能
PostgreSQLはISO/IEC 9075:2016に準拠し、トランザクション、アーカイブログ、ストアドプロシージャ、ビュー、トリガ、マテリアライズドビューなど、商用DBと遜色の無い多くの機能を実装しています。
PostgreSQLはスタンダードなSQLに非常に近いため、他のDBと同様のスキルで使用することができます。
PostgreSQLは高度なオプティマイザを実装しています。
PostgreSQLのカタログ情報もビューの形式で保持しているため、SQLを用いて統計情報にアクセスすることができます。
高性能
PostgreSQLはテーブル・パーティショニングやテーブル・スペースなど大規模システム向けの機能拡張が実装されています。
高可用性
PostgreSQLではバージョン9.0から標準機能でレプリケーションをサポートしています。
さらに専用のミドルウェア(pgpool、pgpool-IIなど)を利用することで可用性の高いシステムを実現する方法が複数あります。
PostgreSQLは欠点とバグの少ない堅牢なコードを提供しています。
マルチプラットフォーム
PostgreSQLは、Linux(最近のディストリビューションすべて)、FreeBSD、OpenBSD、NetBSD、macOS、HP/UX、Solaris、AIX、Microsoft Windowsなど、さまざまなOSプラットフォームに対応しています。
マルチバイトコード対応
PostgreSQLは、日本語その他のマルチバイトコードに対応し、テーブル名、カラム名、格納するデータへのマルチバイトコードの利用やLIKEや正規表現によるマルチバイト検索もサポートしています。
他のDBMSとの比較
PostgreSQLとMySQL Community Server(マイエスキューエル)との比較結果を下表に記します。
比較項目 |
PostgreSQL |
MySQL |
コメント |
---|---|---|---|
接続時のデータベース指定 |
任意 |
任意 |
データベース指定自体は任意ですが、MySQLでは非選択状態になり、 PostgreSQLの場合はユーザ名と同名のデータベースにログインしようとし、存在しない場合はエラーとなるという違いがあります。 |
アーキテクチャ |
マルチプロセス |
マルチスレッド |
MySQLはプログラム全体が1プロセスで実行されます。 |
自動キャスト |
なし |
あり |
MySQLでは数値と文字列などの自動キャストを行います。 |
トランザクション内のDDL |
サポートする |
サポートしない |
MySQLではトランザクション内のDDLは自動コミットされるので、 ロールバックできません。 |
returning句 |
サポートする |
サポートしない |
PostgreSQLではINSERTやUPDATEの際に RETURNING句を指定することで戻り値にカラムの値を指定できます。 |
開発主体 |
コミュニティ |
企業 |
MySQLはOracle社が開発・保守を行い、PostgreSQL ではコミュニティが主体となって開発・保守を進めています。 |
ライセンス |
PostgreSQL |
GPL |
MySQLのコミュニティ版はGPLです。 |
このように、PostgreSQLはMySQL(マイエスキューエル)と比較すると、標準的なSQLに準拠している厳格なDBMSだといえます。
独自のデータ定義
PostgreSQLは、「ユーザ定義データ型」を定義できます。
豊富な専用ミドルウェア/ツール
PostgreSQLには、さまざまな目的に対応した専用のミドルウェアやツールがあります。
Pgpool-II
PostgreSQLデータベースのフロントエンド・ミドルウェア
データベースの性能向上と高可用性実現のための強力なツールです。負荷分散、フェイルオーバー、レプリケーション、コネクションプーリング、読み書き分離、SQLルーティング、SQL解析機能など豊富な機能を提供します。
PGBouncer
コネクションプーリングミドルウェア
データベース接続をプールすることで、クライアントとの接続オーバーヘッドを削減し、クエリの応答性能を向上します。また、多くのクライアントの同時接続を可能とし、スケーラビリティの向上、リソースの効率化ができます。
Barman
バックアップツール
レプリケーションと連携してバックアップと復元を自動化することで、高可用性を実現します。リアルタイムバックアップすることで、RPOを極限まで短くすることができます。不要なバックアップの自動削除機能も備え運用管理の負荷を軽減できます。
Patroni
クラスタ管理ツール
複数のデータベースノードを管理し、高可用性(HA)なクラスタを構築するためのツールです。etcdを利用してクラスタの状態を共有し、構成情報を保存します。
Slony-I
非同期レプリケーションツール
多段階や異なるバージョン間のレプリケーションなど柔軟なレプリケーションを実現し、データベースのアップグレード時でも停止することなくレプリケーションを行えます。
他にも多数のミドルウェアやツールがオープンソースとして提供されています。
万全なサポート
PostgreSQLはNRIをはじめとした企業提供によるハイレベルで正式なサポートが提供されます。
コスト効果
PostgreSQLは高機能なDBMSでありながら、データベースのライセンスコストを削減することができます。
類似プロダクト
商用ソフトウェア製品では、IBM Informix/Illustra、IBM DB2 、Oracle、PowerGres Plus が同様の機能を提供しています。
動作環境
前提となる主な動作環境は、以下のとおりです。(各バージョン、リリースノートなどで確認が必要です。)
CPUアーキテクチャ
- x86, x86_64
- IA64
- PowerPC, PowerPC 64
- S/390, S390x
- Sparc, Sparc 64
- ARM
- MIPS, MIPSEL
- PA-RISC
OS
- Windows(Win2000 SP4以降)
- Linux(最近のディストリビューションすべて)
- FreeBSD
- OpenBSD
- NetBSD
- macOS
- AIX
- HP/UX
- Solaris
PostgreSQLのライセンス
PostgreSQLのライセンスは、BSDライセンスやMITライセンスと類似する独自のPostgreSQLライセンスです。
この独自ライセンスはBSDライセンスやMITライセンスと同様にソースコードを無料で使用できるのはもちろんのこと、著作権表示やライセンス条文、無保証であることを明記すればソースコードを複製・改変して作成した場合でもソースコードを公開せずに頒布することができます。
製品ダウンロード
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。