【図解で比較】MySQL vs PostgreSQL — 2大RDBMSの違いを徹底解説
MySQLとPostgreSQLってどっちもデータベースだよね?何が違うの?
どっちもリレーショナルデータベース(RDBMS)なんだけど、生まれた背景が全然違うんだ。MySQLは1995年にスウェーデンで生まれて、Webサービスの爆発的な成長とともに広まったんだよ。WordPressやFacebookが使っていたことで一気に有名になったんだ。一方のPostgreSQLは1986年にカリフォルニア大学バークレー校の研究プロジェクトから生まれた、学術寄りのデータベースだよ。
へー、大学生まれなんだね!でも両方とも無料で使えるの?
どちらもオープンソースで無料だけど、ライセンスが違うんだ。MySQLはGPLライセンスで、商用利用する場合はOracleから商用ライセンスを買う必要があるケースがあるよ。PostgreSQLはBSDライクなライセンスで、商用利用でもほぼ制限がないんだ。だからクラウドベンダーがPostgreSQLベースの独自サービスを作りやすいという事情もあるんだよ。
性能はどっちが速いの?
JSONとか最近のデータ形式には対応してるの?
ここはPostgreSQLが大きくリードしているポイントだね。PostgreSQLにはJSONB型という専用のバイナリJSON型があって、インデックスも貼れるし、JSONの中身を直接検索できるんだ。MySQLもJSON型をサポートしているけど、機能面ではPostgreSQLのほうが充実しているよ。NoSQLのようなドキュメント指向の使い方もPostgreSQLならかなりできるんだ。
全文検索はどうなの?ブログの検索機能とかで使いたいんだけど。
MySQLにはFULLTEXTインデックスがあって、手軽に全文検索を導入できるよ。PostgreSQLにもtsvector/tsqueryという全文検索の仕組みがあるんだけど、こっちはより柔軟で高度な検索ができるんだ。日本語の全文検索に関しては、どちらもそのままだと弱いから、MySQLならMroonga、PostgreSQLならPGroongaといった拡張を使うのが定番だよ。
クラウドで使うときはどんなサービスがあるの?
AWSだとMySQLにはAmazon RDS for MySQLとAmazon Auroraがあるよ。AuroraはMySQL互換で性能が最大5倍とも言われていて、人気が高いんだ。PostgreSQLにもRDS for PostgreSQLとAurora PostgreSQL互換版があるよ。Google CloudだとCloud SQLに加えて、PostgreSQL互換のAlloyDBという高性能サービスもあるんだ。クラウド各社がPostgreSQL互換サービスに力を入れている印象だね。
レプリケーションってデータのコピーを作る機能だよね?違いはあるの?
コミュニティの雰囲気って違うの?
MySQLはOracleが所有しているから、開発の方向性にOracleの意向が影響するんだ。それが心配で、MySQLの元開発者が作ったMariaDBというフォークも存在するよ。PostgreSQLは特定の企業に属さないコミュニティ主導の開発で、透明性が高いんだ。機能追加のペースはPostgreSQLのほうが積極的で、毎年メジャーリリースで新機能がどんどん追加されるよ。
結局、どっちを選べばいいの?
ちょっと深い話も聞きたいな。同時にデータを読み書きする仕組みって違うの?
いいところに目をつけたね。どちらもMVCCを使っているんだけど、実装が全然違うんだ。MySQLのInnoDBはUndo Logに古いバージョンを保存して、最新データを直接上書きするよ。PostgreSQLはヒープに古い行も新しい行も両方残す方式で、VACUUMという掃除処理が必要になるんだ。このVACUUMの管理がPostgreSQLの運用で一番気をつけるポイントだよ。
なるほど、内部の仕組みがけっこう違うんだね!
そうなんだ。だから「どっちが優れている」じゃなくて「何に使うか」で選ぶのが正解だよ。MySQLは手軽さと実績、PostgreSQLは拡張性と標準SQL準拠が魅力だね。最近はSupabaseやNeonのようなPostgreSQLベースのサーバーレスDBも登場しているし、両方の特徴を知っておくと技術選定で困らないよ。