今回は、PostgreSQLの機能面や性能面がどのように進化、成長してきたかを紹介します。PostgreSQLは、2001年ごろのバージョン7.1の時点で、前回記事で紹介した信頼性を確保するWALや、追記型アーキテクチャによる効率的なトランザクション制御の仕組みを備えていました。SQL言語としても、一通りの機能をサポートしていました。PostgreSQLは、ここからさらに成長していきます。図1は、7.0以降の各バージョンのソースコード一式の総サイズ(ビルド前)に、各バージョンの主な拡張個所を付記したものです。10年間の間にコード量が倍以上に成長しています。それでは、機能項目ごとにどのように拡張されているかを紹介していきます。SQL言語の基本機能についてSQL言語としてのコア機能サポートは、バージョン7.1時点で、ビューや副問い合わせ、外部結合、カーソル、手続き言語(ストアドプロシージャ)、バイナリラージオブジェクトなどの機能を持ち、ほぼ一通りの完成をみています。それ以降は、いくつかの欠けていた機能の追加や、SQL標準規格に合わすための構文の追加修正、プランナの改善などが行われています。TABLE」など、データ定義構文の拡充などがあります。トランザクション処理関連では、SAVEPOINTのサポート(バージョン8.0)、二相コミットのサポート(バージョン8.2)などが追加されています。近年、PostgreSQLは、しばしばSQL標準規格に合わす修正が適用されています。これにより後方互換性が失われるケースもありますが、もともとメジャーバージョンアップに際しては、データ移行はできても、前バージョンとのSQLコマンドの互換性はそれほど重視されません。この点は商用データベース製品と異なります。現在、PostgreSQLは「SQL:2003」規格のコア部分について、ほとんどをサポートしています。SQLは、データを取得したり操作したりする条件を記述して、手順の詳細は指定しない言語です。PostgreSQLはコストベースのプランナを備えていて、SQLコマンドを実現するためのすべての方式(プラン)のコストを算出して、最も低コストの方式で処理を実行します。このプランナ部分は商用データベース製品と比べ幾分見劣りしていて、SQL文の書き方に注意が必要でした。バージョン7.3から8.3くらいまでの数年で少しずつプランナが改善され、また、ビットマップインデックススキャンなど新たな検索方式が追加され、悪いプランが実行されてしまうケースは少なくなっています。PostgreSQL関連の業務に携わる。日本支社にて、PostgreSQLサポートサービス、PowerGres製品の開発などを担当する。PostgreSQLトレーニングで講師を務めることも。ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。VeloCloudが選ばれる理由SD-WANとはなにか。Linuxエンジニア育成への思いF5とNGINXの組み合わせで、サービス公開をよりセキュアに。ITがお届けするポッドキャストです。