オープンソースのリレーショナルデータベース「PostgreSQL」が信頼を獲得して広く利用されるようになるまでの歴史をエキスパートエンジニアが解説
PostgreSQLはオープンソースのリレーショナルデータベースで、2022年の調査によるとMySQLに次いで2番目に多く利用されています。そんなPostgreSQLについて、これまでどのように開発されてきてユーザーが増えていったのかという歴史をPostgreSQLのエキスパートエンジニアであるクレイグ・カースティエンスさんが解説しています。
When Did Postgres Become Cool?
https://www.crunchydata.com/blog/when-did-postgres-become-cool
PostgreSQLの起源はカリフォルニア大学バークレー校のIngres(INteractive Graphics REtrieval System)プロジェクトだったとのこと。このプロジェクトの方針が変更され、リレーショナルデータベースの開発に資金が投じられたのが始まりでした。Ingresの後継ということで、POSTGRESと命名され、1989年にバージョン1がリリースされました。
当初の言語はSQLではなくQUELでしたが、ANSI(米国国家規格協会)が1986年にSQLを優先することを決めたため、多くのリレーショナルデータベースプロジェクトがSQLに移行しました。POSTGRESの場合、1995年にリリースされたPostgres95にてSQLのサポートが組み込まれたとのこと。1996年になると「Postgres95」という名前は都合がよくないため、元のPOSTGRESという名前とSQLのサポートを明示するPostgreSQLという新たな名前で最初のバージョンの6.0がリリースされました。同時に2023年もPostgreSQLプロジェクトを率いているPostgreSQLグローバル開発チームも設立されたとのこと。
名称をPostgreSQLに変更したものの、発音のしやすさや名前の普及度合いを考慮して、従来の「Postgres」という名前の利用も続けることになりました。
1999年にリリースされたPostgreSQL 6.5で複数のユーザから同時に処理要求が行われた場合でも同時並行性を失わずに処理する技術「MVCC(多版型同時実行制御)」が導入されたのを始めとして、2000年代前半を通して下記のような機能が追加されていきました。
・ログ先行書き込み(WAL)
・外部結合(OUTER JOIN)
・過大属性格納技法(TOAST)
・40億件以上のトランザクション
・DROP COLUMN
・スキーマ
・IPv6
こうした改善の結果、2005年にはPostgreSQLはかなり信頼できるデータベースとみなされるようになりました。2000年代後半にはさらに件数の多いトランザクションをサポートしたり、SQLのサポート範囲が広がったり、WALやVACUUMが改善されたりして本番環境で使用するのに十分信頼性が高まったものの、まだ使いやすさの点では改善の余地があったとのこと。この時期には下記のような機能が追加されました。
・インデックスの同時作成
・ウォームスタンバイサーバー
・クエリ言語の改善
・すべてのデータ型(配列、UUID、ENUM、XML)
・2フェーズコミット
・より充実したロールシステム
PostgreSQLの開発には初期から同じメンバーが参加し続けていましたが、2000年代後半には新たなメンバーが主要な機能を開発することも始まったとのこと。2009年のPostgreSQL 8.4にてウィンドウ関数と共通テーブル式(CTE)が導入されたことや、強力なレポート機能が追加されたことで、カースティエンスさんはPostgreSQL以外の選択肢を考えられなくなったと述べています。
PostgreSQLは商用利用が可能なライセンスで提供されていたため、機能が充実すると同時に、多数の企業がPostgreSQLをフォークして新たなデータベースを構築するようになりました。当時誕生したフォークには2023年時点まで生き残らなかったものもありますが、一部のフォークは下記の通り他の製品に受け継がれています。
・Aster Data → Teradataが買収
・Truviso → Ciscoが買収
・Netezza → IBMが買収
・Greenplum → EMCが買収
・ParAccel → 買収はされなかったが、事実上RedShiftとなった
こうしたフォークの誕生にかかわらず、PostgreSQLの進化はそれまでと変わらず続いていったとのこと。
◆2010年:PostgreSQL 9.0および9.1
データベースからのPub/Subである「listen/notify」や、Key-Valueデータ型の「hstore」のサポートが追加されたり、pg_upgradeをサポートして簡単にアップグレードできるようになったりしました。また、GINインデックスやGiSTインデックスも登場しました。
◆2012年:JSONをサポート
MongoやCouchbaseなどのNoSQLデータベースが台頭してきており、開発者がデータを扱う別の方法を望んでいることは明らかでした。PostgreSQLはその声に耳を傾け、2012年のPostgreSQL 9.2にてJSONのサポートを開始しましたが、9.2の時点ではJSONをデータベース内に単なるテキストとして保存する仕様でした。
2012年頃はアプリのデプロイメントを簡単にするHerokuの利用が増加し、Herokuの標準データベースとしてHeroku Postgresが広まっていきました。MySQLデータベースとアプリ用のVPS共有ホスティングを組み合わせる構成から、PaaSや専用のデータベースインフラストラクチャを利用する構成に潮流が変化していったと述べられています。
◆2014年:本当のJSON
2014年にリリースされたPostgreSQL 9.4ではJSONをバイナリ形式で保存するJSONB型をサポートし、GINインデックスを利用してJSONデータのインデックスを簡単に作成できるようになりました。
◆2016年~:9.5、9.6、10
2016年以降のバージョンでは、一般的に利用される機能を目玉にするのではなく、着実にパフォーマンスを向上したり既存の機能を強化したりする方向にテーマが移っていったとのこと。例えばJSONBでインライン更新がサポートされたり、並列実行可能な件数が増加したりしたと述べられています。とはいえこうした小さな更新だけでなく、下記のような用途によっては大切になる大きな機能も追加されました。
・行レベルのセキュリティ
・論理レプリケーション
・テーブルのパーティショニング
2023年9月には、開発開始から35年経過しているとは思えないほどたくさんの内容を詰め込んだPostgreSQL 16がリリースされています。PostgreSQL 16の内容については下記の記事を読むとよく分かります。
PostgreSQL 16がリリースされる、COPYの性能が最大300%向上などパフォーマンスの改善や論理レプリケーション機能の強化など盛りだくさんな内容 - GIGAZINE
◆いつPostgreSQLがクールになったのか?
PostgreSQLの核心部分は開発当初から変わらず、「信頼性の高いデータベース」という点です。カースティエンスさんは「結局のところ、データベースに求めるのは信頼性だ」として、他の新しくて輝かしい製品に短期的に注目が集まることはあっても、最終的には長年安定して提供されている信頼できるデータベースに戻ってくることになると述べています。
そのため、PostgreSQLが多数の利用者を引きつけるクールなデータベースになったのは特定の機能が追加されたからではなく、安定したリリースサイクルを持ち、品質を重視してパフォーマンスや機能を継続的に改善するという歴史を積み重ねた結果だと言えます。PostgreSQLを偉大なデータベースにした功績は、これまでPostgreSQLの開発に貢献してきた開発者たちのものだとカースティエンスさんはブログを締めくくっています。
・関連記事
GoogleがAI対応のPostgreSQL互換データベースサービス「AlloyDB AI」を発表 - GIGAZINE
PostgreSQLには「中途半端なサイズ」のデータを格納しないほうがいい - GIGAZINE
データベースを自動でチューニングしてくれるサービス「OtterTune」 - GIGAZINE
SQLiteが「大量の小さなクエリ」の処理を得意とする理由とは? - GIGAZINE
1980年代のインターネットの書き込みが磁気テープから復活 - GIGAZINE
・関連コンテンツ