20周年、これまでの歩み
2016年は「PostgreSQL」と命名されてから20年となる。20年でも十分長いが、ソースコードで見るとおよそ30年の歴史がある。イベント基調講演でPostgreSQLの歴史を解説したのはピーター・ハルデンベルグ(Peter van Hardenberg)氏。Heroku PostgreSQLチーム創設メンバーの一人で、PostgreSQLに詳しい。
70年代にエドガー・F・コッド(Edgar F. Codd)博士がリレーショナルデータベース理論を考案し、実際に作られた製品の一つにIngresがある。名前の由来は「INteractive Graphics REtrieval System」。SybaseやMicrosoft SQL ServerもこのIngresの流れをくむ。
1985年、カルフォルニア大学バークレー校のマイケル・ストーンブレーカー博士らがIngresの後継としてPostgresの設計を発表。ここが実質的にはPostgreSQLのスタート地点と考えていいだろう。1989年に最初のバージョンとなるPostgres 1.0が限定的にリリースされ、1994年にはPostgres 4.2へと到達すると同時に大学における研究プロジェクトとしては終了した。
このころ独自のクエリー言語に課題を抱えていた。当時の関係者らは「Postgresが持つクエリー言語はいいエンジンだが、クルマに例えたらステアリングではなくノブとレバーで運転するようなもの」と考えていた。つまり、操作しづらい。そこで同大学の大学院生らがクエリー言語をSQLに置き換え「Postgres95」を公開した。
SQLに対応したものの、Postgres95(Postgresのバージョンの流れだと5.0に相当する)はまだ性能や信頼性に課題があった。また開発者は少ないことも課題となっていた。そこで1996年ごろからFreeBSDなどを参考に、コアチームやコミッターなど役割分担して開発を進めていく体制を整えるようになった。
1995年に大学の研究プロジェクトから離れ、あらためて「Postgres95」としたものの、コミュニティ内で「次の名前はどうする?Postgres96?Postgres V6?」と議論になった。結果的にはSQLに対応していることもあり、1996年末に正式に「PostgreSQL」と決定し、バージョン番号はPostgres時の数字を引き継いで進めることにした。それが20年前。
コミュニティという体制にしても「PostgreSQL」という名前にしても、現在につながる形になったのはこの1996年から。20年が過ぎ、今でもPostgreSQLを発展させているのはグローバルなコミュニティだ。メーリングリストを介して世界中の参加者と意見交換し、コンセンサスを重視する風土を育て、開発を進めてきた。
PostgreSQLと改名した翌月の1997年1月、最初のバージョンPostgreSQL 6.0がリリースされた。6.5ではMVCC(MultiVersion Concurrency Control:多版型同時実行制御)で性能向上させることや日本語などマルチバイト対応が進められてきた。
ここでハルデンベルク氏は「安心して。ここから全てのリリースノートを見直すことはしないよ」と言い、話題を各バージョンの新機能にするのではなく、ビジネスに切り替えた。
2000年前後からPostgreSQLでビジネスをする企業がいくつか生まれた。最初に生まれたのは「PostgreSQL Inc」。コミュニティファウンダーなどが1997年に創設したが、ビジネス的には成功せずひっそりと姿を消した。続けて2000年には「Great Bridge Inc」が生まれた。「データベースのレッドハットになる」と目指し、同年の「25 Coolest Global Companies」に選出されたものの、同じく長くは続かなかった。ようやく機が熟したのか、2004年に生まれたEnterpriseDB社は現在も健在だ。PostgreSQLの開発者たちを抱え、企業向けサポートでビジネスを進めている。こうした起業の動きもPostgreSQLの歴史と無縁ではない。
PostgreSQLの未来
PostgreSQLからはフォークも多く生まれた。PostgreSQLをベースにした製品は多数実在している。SRA OSSの「PowerGres」や富士通の「Enterprise PostgreSQL」はよく知られている。他にもデータウェアハウスアプライアンスの「Netezza」(IBMが買収)、並列処理可能な「Greenplum」、Amazon Web Serviceのデータウェアハウスサービスの「Redshift」、クラスタデータベースの「StormDB」、ストリーミングデータベースの「TelegraphCQ」とその商用版「Truviso」(シスコが買収)などもPostgreSQLをベースにしているのでフォークの一種と言える。フォークは本流ではないものの、PostgreSQLがあったからこそ生まれた功績と言えるだろう。
PostgreSQLには多くの開発目標やテーマがある。性能に関しては長年取り組んできたテーマとなるが、性能向上のための施策は1つではない。開発者たちが「ここを変えればよくなる」という改善を多岐にわたり、いくつも積み重ねて性能を向上させてきた。可用性ならWAL(Write Ahead Logging)、ホットスタンバイ、ストリーミングレプリケーションなどのレプリケーション機能を拡張させてきた。
そして2016年、現在はどうか。ハルデンベルク氏はコミュニティの広がりや、コミュニティメンバーを雇いPostgreSQLでビジネスをしている企業が多様に増えたことをたたえた。先に挙げたEnterpriseDBのほかにも海外なら2nd QuadrantやAWS、日本ならSRA OSS、NTTグループ、NECがある。加えて「コミュニティの初期段階から石井達夫さんなど日本からの貢献がありました。日本は常にコミュニティの一員でした」と同氏は日本の関与の強さも付け加えた。
最後にハルデンベルク氏は「(30年前に始まった)Postgresプロジェクトが掲げた目標は達成され、成功しました」と指摘した。大学のプロジェクトとしてだけではなく、その後のデータベースに大きな影響を与えたという意味では功績は計り知れない。源流にBSDライセンスとバークレーの寛大な文化があり、これらが強力な支えとなりコミュニティを発展させたとも言える。そして多様な形で多くの関係者が力を合わせて改良を続けてきたことがPostgreSQLをここまで発展させた。偉大な歴史である。
ミッションクリティカルの要件でPostgreSQLだけではできないことを日立の技術でサポートする
「ミッションクリティカルシステムへのPostgreSQL適用に向けた日立の取組み」と題して講演を行ったのは、日立製作所の稲垣 毅氏だ。日立は社会インフラを支えるITを展開してきた。「社会インフラは安定稼働が重要です」と稲垣氏。
社会インフラでは「データベースの信頼性がIT基盤の信頼性につながります」と。そのためこれまではHiRDBなど自社製のデータベースシステムにこだわってきた。なぜPostgreSQLなのか。顧客の期待の変化がそこにはある。コスト低減から、IoTなどテクノロジーの先進性がOSSでは注目されていると指摘する。
ミッションクリティカルでは24時間365日止まらない、データ欠損を許さない高信頼性、高いサポート体制、高品質が求められる。PostgreSQLとHiRDBを比較すると、たとえば可用性面では同期レプリケーションの際に、PostgreSQLは性能劣化が懸念される。
日立ではPostgreSQLだけでは実現できない高度な要件に、これまで培ってきた技術を適用し、高可用性システムの実現をサポートしている。障害対応、障害検知では、自社製のHAモニターを使うことで日立のハードウェアとの組み合わせて幅広い障害にも対応可能だ。
PostgreSQLのエキスパート人材の育成も強化しており、技術力のあるHiRDBの技術者をアサインしている。さらにコミュニティ活動としてPGEConsにも参加し、開発コミュニティへの貢献も今後は行っていく。また、日立にはサポート360というワンストップサポートがあり、全国300カ所のサポート拠点をPostgreSQLでも活用できるのも強味となっている。
PostgreSQLはデジタル時代に最適なデータベース
「なぜ、今PostgreSQLなのか ~ 富士通の取り組みご紹介 ~」というタイトルで講演を行ったのは、データベース関連の開発を担当する富士通の樋口大輔氏だ。PostgreSQLを活用した事例もたくさんあり商用データベースを移行しチューニングしなくても性能が2倍になった例もあると言う。英国環境庁の洪水警報システムでは、富士通クラウドでPostgreSQLのGIS機能を活用している。「PostgreSQLはまさにデジタル時代のデータベースです」と樋口氏。商用データベースのリプレイス先だけでなく、新たな情報活用に最適なプラットフォームだ。
そんな中、富士通ではPostgreSQLをビジネス領域で使いやすくする取り組みをしている。性能面では更新処理に影響を与えずに大量データの高速集計を行う、カラム型インデックスを追加した。商用のインメモリオプションのようなもので、リアルタイムな高速集計を実現し、これは他のインデックスと同等に扱える。
セキュリティ面では監査ログ機能を開発中だ。pgauditでもほとんどの監査ログは取得できるが、どこからコネクションが貼られたか、SELECT文が実行されたかなどまでは分からない。そのためいつ、だれが、どこから、何に対し、どんな処理を行い、結果どうなったかを網羅的に獲得できるようpgauditを拡張しようとしている。
これらの拡張は「コミュニティに機能提案し、皆様に使っていただきたいと思っています」と樋口氏。また、11月には新たにFUJITSU Software Enterprise Postgresを国内発表しており、同製品では埋め込みSQL用COBOLプリプロセッサも提供しているとのことだ。「一緒にPostgreSQLを発展させましょう」と樋口氏は呼びかけた。