PostgreSQL

高い拡張性と SQL 標準準拠を特徴とするオープンソース RDBMS

データベースSQL
PostgreSQL」の技術書を見る (56 冊) →

PostgreSQL とは

PostgreSQL は、1996 年にリリースされたオープンソースの RDBMS で、SQL 標準への高い準拠度と豊富な拡張機能が特徴である。Amazon Aurora PostgreSQL 互換エディションや RDS for PostgreSQL として AWS でも広く使われている。

PostgreSQL の強み

PostgreSQL の強みを以下にまとめる。

特徴説明
拡張性カスタム型、関数、インデックス、拡張モジュールを追加可能
JSON サポートjsonb 型でドキュメント DB 的な使い方も可能
全文検索tsvector / tsquery で日本語を含む全文検索
ベクトル検索pgvector 拡張で埋め込みベクトルの類似検索
パーティショニング宣言的パーティショニングで大規模テーブルを分割
レプリケーションストリーミングレプリケーションで読み取りスケール

MySQL との比較

MySQL との主な違いを以下に比較する。

観点PostgreSQLMySQL
SQL 準拠高い (Window 関数、CTE、LATERAL)中程度 (8.0 で改善)
JSONjsonb (バイナリ、インデックス可)JSON
拡張性拡張モジュール (PostGIS, pgvector)プラグイン (限定的)
MVCC追記型 (VACUUM が必要)undo ログ型
デフォルト分離レベルRead CommittedRepeatable Read
AWS サービスAurora PostgreSQL, RDSAurora MySQL, RDS

PostgreSQL は複雑なクエリや拡張機能が必要な場合に強く、MySQL はシンプルな読み取り中心のワークロードで高速。

Aurora PostgreSQL

Aurora PostgreSQL 互換エディションは、PostgreSQL のエンジンを AWS のストレージ層に載せ替えたサービスで、標準 PostgreSQL の最大 3 倍のスループットを実現する。

pgvector と RAG

pgvector 拡張を使えば、PostgreSQL をベクトル DB として利用できる。Aurora PostgreSQL も pgvector をサポートしており、既存の RDB に埋め込みベクトルを格納して RAG の検索基盤にできる。

CREATE EXTENSION vector;
CREATE TABLE documents (
  id serial PRIMARY KEY,
  content text,
  embedding vector(1536)  -- 1536次元のベクトル
);

-- 類似検索 (コサイン距離)
SELECT content
FROM documents
ORDER BY embedding <=> '[0.1, 0.2, ...]'::vector
LIMIT 5;

専用のベクトル DB (OpenSearch Serverless) と比べて、既存の PostgreSQL インフラを流用できる利点がある。

よくある落とし穴

  • VACUUM の放置: 追記型 MVCC のため、不要タプルが蓄積してテーブルが肥大化する。autovacuum の設定を適切に調整する
  • コネクション枯渇: PostgreSQL はプロセスベースで、接続ごとにプロセスを生成する。Lambda のような大量同時接続には RDS Proxy を併用する

関連書籍も参考になる。

この記事は役に立ちましたか?

関連用語

関連する記事