TOP
>
サーバ構築・運用
> PostgresForestの構成
徹底比較!! PostgreSQL vs MySQL
第4回:レプリケーションの比較
著者:
NTTデータ 藤塚 勤也
2006/5/22
前のページ
1
2
3
4
次のページ
PostgresForestの構成
PostgresForestは3つの構成要素に分かれています。
まず1つめの構成要素として、データベースサーバ側にグローバルシステムカタログと呼ぶPostgresForest専用のデータベースが必要になります。このグローバルシステムカタログには、PostgresForestの管理下にどのようなデータベースやテーブルが存在しているかなどのPostgresForest専用のメタ情報を格納します。
2つめの構成要素には、グローバルシステムカタログのメンテナンスを行う環境構築ツールと呼ぶアプリケーションがあります。
そして3つめの構成要素は仮想化モジュールであり、これはアプリケーション側に存在します。この仮想化モジュールは、PostgresForestを構成する核となる要素であり、レプリケーションを実現するエンジンです。アプリケーションにとっての仮想化モジュールは、PostgreSQL用のJDBCドライバと同じ扱いになります。よって、レプリケーション環境を構築するためにアプリケーションは、PostgreSQL用のJDBCドライバのかわりに仮想化モジュールを導入する必要があります(図2)。
図2:PostgresForestの構成
PostgresForestの動作
アプリケーションが動作した時、どのような流れでレプリケーションが行われるかを、仮想化モジュールの動作を中心に解説します。
まず、アプリケーションはデータベースへ接続します。データベースへの接続要求を受け取った仮想化モジュールは、グローバルシステムカタログから情報を入手し、レプリケーション対象のすべてのデータベースに対して接続します。
もちろん、アプリケーションは複数のデータベースに接続されていることを意識する必要はありません。なお、この時にグローバルシステムカタログから入手した情報は、仮想化モジュールのメモリ内にキャッシュされます。
次に、アプリケーションはSQL文を発行します。SQL文を受け取った仮想化モジュールは、SQL文の構文解析を行います。構文解析の結果、検索処理のあるSQL文の場合は、接続しているデータベースの1つのみに対してSQL文を実行します。
なぜならば、接続しているすべてのデータベースは常に同一のため、どのデータベース対して検索処理を行っても得られる結果は同一だからです。この動作は、SQLの検索文の負荷分散効果を得ることができるため、システムの性能向上が期待できます。
一方の更新処理があるSQL文は、接続しているデータベースすべてに対してSQL文を実行します。本来なら1つのデータベースに対して行えばよい更新処理を複数のデータベースに対して行うため、若干のオーバーヘッドが発生します。
このように検索と更新では処理の方法が異なりますが、アプリケーション側はこのことを意識する必要はありません。
また、仮想化モジュールがデータベースの障害を検出した場合は、そのデータベースをレプリケーション対象から削除します。1つでもデータベースが正常に動作している限り、アプリケーションの処理は継続できるため、データベースの対障害性を向上させています。
制限事項
PostgresForestが提供するレプリケーション機能は、非常にシンプルな方式で実現している反面、利用上いくつかの制限事項があります。その1つとして、データベース内で自動的に生成する値はレプリケーションできないといったものがあります。
例えば、「INSERT INTO TableA (Col01) Values ('now()')」のように「now()」関数を使用して、テーブルのあるカラムに現在時刻を挿入したいとします。「now()」関数にて生成される現在時刻の値は、そのデータベースのシステム時刻です。PostgresForestは、このINSERT文を複数のデータベースに対して実行することによりレプリケーションします。よって、この「now()」関数がそれぞれ別のデータベースにて実行されることになります。
例えそれぞれのデータベースのシステム時刻をあわせておいたとしても、「now()」関数が同時刻に実行され、同一の値が生成される保証はありません。よってこのような場合は、アプリケーションにて現在時刻の値を生成し、その値を用いたINSERT文を使用する必要があります。
前のページ
1
2
3
4
次のページ
著者プロフィール
株式会社NTTデータ 藤塚 勤也
基盤システム事業本部 オープンソース開発センタ シニアスペシャリスト。
日本タンデムコンピューターズ(現日本HP)を経て、2003年よりNTTデータにてOSS分野に参画。日頃はオリジナルOSSの開発や、OSSを用いたシステム構築への技術支援に従事。「RDBMS解剖学」(翔泳社)を共著。
INDEX
第4回:レプリケーションの比較
はじめに
PostgreSQLとMySQLのレプリケーション
PostgresForestの構成
MySQL標準レプリケーション機能の構造