PostgreSQL
PostgreSQL とは
PostgreSQL(ポストグレスキューエル、通称「ポスグレ」)は、オープンソースのリレーショナルデータベース管理システム(RDBMS)である。1986 年にカリフォルニア大学バークレー校の POSTGRES プロジェクトから始まり、30 年以上の歴史を持つ。ライセンスは PostgreSQL License(BSD 系)であり、商用利用を含めて自由に使用できる。
高い信頼性、豊富な機能、SQL 標準への準拠度の高さから、世界中で広く使用されている。DB-Engines Ranking でも常にトップクラスに位置する人気の RDB である。
なぜ SIer で重要か
SIer の業務システム開発において、PostgreSQL の採用は近年急速に増加している。その最大の理由は ライセンスコストが無料 であることだ。
従来、SIer の大規模案件では Oracle Database が定番であったが、Oracle のライセンス費用は非常に高額である(CPU ライセンスで数百万〜数千万円)。DX 推進やコスト削減の圧力から、Oracle から PostgreSQL への移行を検討する企業が増えており、新規開発でも PostgreSQL を第一候補とするケースが増えている。
SIer の新入社員が最初に触るデータベースが PostgreSQL であることも珍しくなくなっており、基本的な知識を身につけておくことが重要である。
基本概念
PostgreSQL の主な特徴
| 特徴 | 説明 |
|---|---|
| オープンソース | ライセンス無料。商用利用可能 |
| SQL 標準準拠 | SQL:2016 規格への準拠度が高い |
| MVCC | Multi-Version Concurrency Control による高い同時実行性能 |
| 拡張性 | ユーザー定義型、関数、演算子を追加可能 |
| JSON サポート | JSON / JSONB 型を標準サポート |
| 全文検索 | テキスト検索機能を内蔵 |
| レプリケーション | ストリーミングレプリケーションによる高可用性 |
MVCC(Multi-Version Concurrency Control)
PostgreSQL はデータの同時アクセスを効率的に処理するために MVCC という仕組みを採用している。これにより、読み取り処理(SELECT)と書き込み処理(UPDATE / INSERT)が互いをブロックしない。業務システムでは多数のユーザーが同時にデータにアクセスするため、この特性は非常に重要である。
主要なデータ型
整数型 : integer, bigint, smallint
浮動小数点 : numeric, real, double precision
文字列型 : varchar(n), text, char(n)
日付時刻 : date, timestamp, timestamptz
真偽値 : boolean
JSON : json, jsonb
配列 : integer[], text[]
接続とツール
PostgreSQL への接続には以下のツールがよく使用される。
- psql --- PostgreSQL 付属のコマンドラインツール。SQL の実行やデータベース管理に使用
- pgAdmin --- GUI 管理ツール。テーブルの閲覧やクエリの実行が視覚的に行える
- DBeaver --- 複数の DB 製品に対応した汎用 GUI ツール。SIer の現場でも人気
SIer での使われ方
Oracle との違い
SIer の現場では Oracle Database との比較が頻繁に行われる。主な違いは以下の通り。
| 観点 | PostgreSQL | Oracle |
|---|---|---|
| ライセンス | 無料(OSS) | 有償(高額) |
| サポート | コミュニティ or 商用サポート(EDB 等) | Oracle 社の公式サポート |
| 空文字と NULL | 空文字と NULL は別物 | 空文字は NULL として扱われる |
| 自動採番 | SERIAL / IDENTITY | SEQUENCE |
| ストアドプロシージャ | PL/pgSQL | PL/SQL |
| 文字列結合 | ` | |
| クラスタ構成 | ストリーミングレプリケーション | RAC(Real Application Clusters) |
特に「空文字と NULL の扱いの違い」は、Oracle から PostgreSQL への移行時に頻繁に問題となるポイントである。
コスト重視の案件での選定
SIer の案件では、以下のような場合に PostgreSQL が選ばれることが多い。
- 新規開発でコストを抑えたい場合 --- ライセンス費用がゼロのため、インフラコストを大幅に削減できる
- 自治体・中堅企業の案件 --- 予算に限りがある案件で選ばれやすい
- クラウド環境での利用 --- AWS の Amazon RDS for PostgreSQL や Azure Database for PostgreSQL など、マネージドサービスとしても提供されている
商用サポート
OSS である PostgreSQL にはメーカーの公式サポートがないが、以下の企業が商用サポートを提供している。
- EDB(EnterpriseDB) --- PostgreSQL の商用ディストリビューションとサポートを提供
- SRA OSS --- 日本国内で PostgreSQL のサポートとコンサルティングを提供
- NEC、富士通 --- 自社の PostgreSQL ベース製品を提供
SIer の案件では「OSS を使うが商用サポートは必須」という要件が多く、これらのサポートサービスと組み合わせて導入されることが一般的である。
Amazon RDS での利用
クラウド上で PostgreSQL を使う場合、Amazon RDS for PostgreSQL が広く採用されている。RDS を使うことで、バックアップ、パッチ適用、レプリケーションなどのデータベース管理作業が自動化され、運用負荷が大幅に軽減される。
まとめ
- PostgreSQL はオープンソースの RDB であり、ライセンス無料で商用利用可能である
- SQL 標準への準拠度が高く、MVCC による高い同時実行性能を持つ
- SIer ではコスト削減の流れから、Oracle に代わって PostgreSQL を採用する案件が増加している
- Oracle とは空文字と NULL の扱い、自動採番、クラスタ構成などに違いがある
- 商用サポートやクラウドのマネージドサービスと組み合わせて導入されることが多い