PostgreSQLクラスタの動向

2010年10月12日(火)

4. 多くのクラスタ・プロジェクト

データベース・クラスタが実装すべき機能は、応用分野によって大きく異なります。このため、既存のPostgreSQLクラスタで満足できない人たちが、それぞれのクラスタ・ソリューション(解決策となるソフトウエア/サービス)を作るようになりました。この結果として、多くのPostgreSQLクラスタ・プロジェクトが誕生したのは、前ページの表1に示した通りです。

5. クラスタ技術の整理と、PostgreSQL本体の取り組み

このような状況の下、どのような場合にどのクラスタ・ソフトを利用すればよいのかが、分かりにくくなってきました。

こうした状況を改善するために、主要なPostgreSQLクラスタの開発者が集まる「PostgreSQLクラスタ開発者会議」(英語ページ)が、2009年11月に日本で開催されました。

会議の目的は、クラスタのアプリケーションをきちんと分類し、かつ、今後のPostgreSQL本体で拡張すべきクラスタ関連機能を議論することです。内外約20名の開発者が集まり、プロジェクト相互の類似性や独自性を確認するとともに、クラスタの利用形態をまとめ、さらにPostgreSQL本体で実装すべきクラスタ関連機能を議論しました。

ここで議論された内容は、PostgreSQLの技術を議論するWikiページにもアップロードされました。また、これを契機に、個々のPostgreSQLクラスタ開発プロジェクトの内容を、同じ尺度で記述するような動きが活発化しました。こうして、上記のWikiページにおいて、多くのPostgreSQLクラスタ・プロジェクトが紹介されるようになりました。

これらを受け、2010年のPostgreSQL開発者会議でも、PostgreSQL本体で実装すべきクラスタ関連機能が議論され、表2に示す機能に今後取り組んでいくことで合意がなされました。

表2: クラスタ開発者会議で検討した、PostgreSQLの拡張機能

機能 概要
スナップショット・エクスポート 並列SQLの実装などに必要。複数スレッドを同じコンテクストで実行させる。
グローバル・デッドロック検出 複数データベースにまたがったデッドロックの検出。
パーサーの切り出し SQLの構文解析を独立して使えるようにして、クラスタ関連ソフトウエアの構築を容易にする。
ログ・アーカイブの起動/停止 リカバリに必要なログのアーカイブを任意に起動/停止できるようにして、ディスクを節約する。
リモート・ノードでのクエリー実行 SQL文の一部をリモート・ノードで実行させ、データ検索の効率を高める。
DDLトリガー テーブルの生成、削除、変更時にもトリガー関数を実行できるようにし、トリガーを用いたレプリケーションの適用範囲を広める。
トランザクションのコミット順 コミット順序を検出することで、マルチマスター・レプリケーションが正しく作られるようにする。
動的共有メモリー割り当て 共有メモリーを実行中に確保できるようにすることで、割り当てクラスタで必要なメモリーを効率的に確保できるようにする。
XID供給 トランザクションIDを外部から供給できるようにして、マルチマスター・クラスタでのトランザクションが並列に矛盾なく実行できるようにする。

開発者会議に続いて開催された「PGCon2010」(PostgreSQLに関するオープンでグローバルな会合、毎年5月にカナダのオタワで開催されている)でも、PostgreSQLクラスタ・プロジェクトからの発表や、多くのレプリケーション・プロジェクトの代表者によるパネルが開催されました。

2010年7月には、英国においてCHAR(10)(Cluster, HA and Replication, 2010)と呼ぶ国際会議が開催されました。同会議は、PostgreSQLのクラスタ技術の発表に焦点を当てた、最初の国際会議です。

CHAR(10)では、2日にわたって17件の発表があり、ワーク・ショップでは活発な討論がなされました。筆者も、この会合に参加しました。同会合の詳細は、Let's Postgresで報告する予定です。また、ここで発表した新しいクラスタ技術について、第4回で紹介する予定です。

6. 今後の見通し

一時は、「クラスタ機能の欠如がPostgreSQLの弱点」と言われたこともありました。ところが、上記の通り、PostgreSQLのクラスタ機能は充実してきています。今後は、以下のような方向に向かうものと考えられます。

  1. PostgreSQLに埋め込まれるクラスタ機能は、Streaming Replicationを用いたデータベース・レプリケーションと、スレーブ側での参照SQLを処理するHot Standbyである。
  2. これ以外のクラスタ対応も、PostgreSQLカーネルでサポートすべき機能は、順次拡充していく。これを用いて、1. 以外のクラスタ・プロジェクトを推進することができる。
  3. 一部は、拡張機能としてPostgreSQLのリリースに含まれる可能性がある。

現在では、それぞれのPostgreSQLクラスタ・プロジェクトがバラバラに活動しています。統合されていく兆しは、まだありません。しかし、2009年から特にPostgreSQLのクラスタ技術開発が加速してきています。今後の展開が楽しみです。

次回は、今回紹介した多くのPostgreSQLクラスタ・プロジェクトのうち、いくつか代表的なものについて、もう少し詳しく解説します。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています