このページの本文へ

前へ 1 2 次へ

日本PostgreSQLユーザ会主催の「PostgreSQL Conference Japan 2017」をレポート

PostgreSQL「進化」の軌跡――誕生から20年を石井達夫氏が振り返る

2017年11月06日 11時00分更新

文● 羽野三千世/TECH.ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

石井氏が注目する3つの新機能

 2017年10月5日に、PostgreSQLの最新バージョン「PostgreSQL 10.0」がリリースされた。石井氏は、バージョン10.0および最近のバージョンで追加された新機能のうち、個人的に特に重要視しているものとして、「ストリーミングレプリケーションの改良」、「パラレルクエリ」、「論理レプリケーション」の3つを挙げた。

 1つ目のストリーミングレプリケーションは、2010年リリースのバージョン9.0で初めてPostgreSQLに実装された。

 1台のデータベースがクラッシュしたときにシステムを止めたくない、性能が必要になったときに1台のデータベースをスケールアップするのではなく複数台を束ねてスケールアップできるようにしたいなどのニーズから、PostgreSQLにレプリケーションやクラスタリングの機能があったらよいという議論はずいぶん前からあった。バージョン9.0より前は、SQL文を複数サーバーに投げることによるレプリケーション、更新トリガーを利用して更新差分を転送することでレプリケーションするなどの独自実装や、dblinkを使ったサードパーティー実装でレプリケーションを実現していたが、これらの手段は性能が出ない。加えて、すべてのデータオブジェクトがレプリケーションできるわけではないという共通の問題を抱えていた。

 ストリーミングレプリケーションは、PostgreSQL本体に組み込まれたレプリケーション技術であり、オーバーヘッドが少なく、実用的にはほとんどすべてのオブジェクトをレプリケーションできる。その後もストリーミングレプリケーション機能は改良が続けられ、最新版では、スタンバイがプライマリに昇格する際にデータを失わない同期レプリケーション、レプリケーションの遅延と一貫性保証のコントロールができる機能(アプリケーションの特性により、プライマリでコミットされたデータがスタンバイに反映されるまでの時間と、プライマリとスタンバイのデータ一貫性のどちらを優先するかコントロールできる)が実装されている。

 2つ目のパラレルクエリは、2016年リリースのPostgreSQL 9.6で追加された機能だ。PostgreSQLは誕生から長らく、1つのクエリを1つのプロセスで実行する仕様だった。パラレルクエリが登場したことでこれが根本的に変わり、1つの検索クエリがパラレルワーカーと呼ばれるプロセスで分担されるようになった。「あくまで検索のプロセスのみだが(更新などの他プロセスには適用されない)、十分なメモリとCPUがある環境では、検索クエリが劇的に早くなるケースがある」(石井氏)。

 3つ目の論理レプリケーションは、最新のPostgreSQL 10.0で追加された機能。これは、データベースへの変更内容を論理的に後から操作できる形でログとして保存し、特定の変更だけ取り出せる仕組みだ。MySQLなどでは従来から実装されている。応用できるケースが広く、「例えば、マスターからスレーブ側へ特定のテーブルだけをレプリケーションする、異なるバージョン間のPostgreSQLデータベースでレプリケーションする(ストリーミングレプリケーションではできない)、複数のデータベースを1つに集約する、といったことが可能」(石井氏)。

PostgreSQLの将来への期待

 最後に石井氏は、個人的な意見として(開発コミュニティの意向とは関係ないと前置きした上で)、PostgreSQLの将来への期待を述べた。

 まず、PostgreSQL 10.0で論理レプリケーションが実装されたので、「この延長上で双方向レプリケーションが実現できるはず、是非つくってほしい」(石井氏)。また、現在は検索クエリにのみ対応しているパラレルクエリが更新処理までサポートすると嬉しいという。さらに、「複数ノードをまたがったパラレルクエリが実現されると、スケールアウトが可能になるので嬉しい。これはつまり、Postgres-XC(NTTなどが開発しているスケールアウト可能なPostgreSQLクラスタ)と同じことが、PostgreSQL本体で実現できるということだ」(石井氏)。

 もう1つ、「(すでに開発が進行中の)スキーマ変数の機能が実現されれば、商用データベースからPostgreSQLへの移行が楽になる」と石井氏は説明する。スキーマ変数は、スキーマごとに独立した変数を定義できる機能だが、これが、商用データベースが採用するパッケージ変数の代替になるため、商用データベースからPostgreSQLへの移行が容易になるという。石井氏は、そのほかの小さな期待として、「PostgreSQLのマニュアルには、なぜか図がないので分かりづらい。図を入れてほしいと切実に思う」と述べていた。

■関連サイト

前へ 1 2 次へ

カテゴリートップへ

本記事はアフィリエイトプログラムによる収益を得ている場合があります

アクセスランキング

  1. 1位

    sponsored

    60年の時を超え「COBOL」がGitHub Copilotでよみがえる 勘定系アプリの“超難関”モダナイに7社が挑戦

  2. 2位

    ビジネス・開発

    富士ソフトがエンジニア1万人超を「AIネイティブ」化 実装力を武器にフィジカルAIなど3本柱に注力

  3. 3位

    ITトピック

    IT技術者の8割超「AI生成コードには人間のレビューが必要」/「偽・誤情報を見破れる」と自信を持つ人はICTリテラシーテストの正答率が低い、ほか

  4. 4位

    sponsored

    「現場に行くのが当たり前」を変えたアズビルのリモート調整 効果はプライスレス

  5. 5位

    TECH

    攻撃するAIと防御するAI 日本企業のセキュリティ対策にいま何が必要か?

  6. 6位

    デジタル

    東京タワー相当の紙を“完全撤廃” 点検業務をkintone化した“現場ファースト”な改善術

  7. 7位

    ITトピック

    実用化が楽しみすぎるスマート技術たち 「長距離ワイヤレス給電」から「室内向け太陽電池」「超音波センサー」まで

  8. 8位

    TECH

    パンや酒、チョコづくりにも関わる微生物「酵母」の進化を追求

  9. 9位

    デジタル

    IoTデバイスをサイバー攻撃から守る IoT向けゼロトラストの“3つのアプローチ”

  10. 10位

    ITトピック

    6割超の企業で「セキュリティは取引条件」 SCS対応も進む/パワハラと指導の違い、あなたの基準は?/AIへの危機感か 転職希望のIT人材が増加、ほか

集計期間:
2026年07月22日~2026年07月28日
  • 角川アスキー総合研究所