TOPサーバ構築・運用> PostgresForestはどのように動くのか
PostgresForest
予習!復習!PostgresForest!

第2回:解体、PostgresForest!

著者:NTTデータ  長妻 賢   2007/7/26
前のページ  1  2   3  4  次のページ
PostgresForestはどのように動くのか

   ここからは、ユーザが作ったアプリケーションがPostgresForestにアクセスした際、どのようなことが起きるのかを順を追ってみていきたいと思います。

   次のように、ユーザのJavaアプリケーションからJDBCアクセスを開始します。JDBCへの接続方法の詳細に興味のある方は「PostgresForest4.0 開発者ガイド」をご覧ください。

Class.forName("org.postgresforest.Driver");
String url = "jdbc:postgresforest:GSC=//192.168.1.100:5432/gsc@sampledb";
con = DriverManager.getConnection(url, "user", "pass");

   この時、JDBCドライバは最初にGSCに接続し、GSCに格納してあるPostgresForestの構成などに関する情報を取り出します。続いて、実際に接続するユーザデータベースの場所をGSCの情報から取り出し、そのデータベースに接続します。

   GSCやユーザデータベースに対するコネクションは、アプリケーションがJDBCへの接続を終了するまでそのまま存在し続け、SQLを発行するたびにこのコネクションを通して処理を行います。

   続いてこのコネクションに対してSQLを発行します。

stmt = con.createStatement();
stmt.execute( “SELECT * FROM sample_table;” );

   この時JDBCドライバが行う処理の概要は次のようになります。

PostgresForestの処理の流れ
図2:PostgresForestの処理の流れ


1.与えられたSQLを解析

   SQLが参照系なのか更新系なのか、対象となるテーブルがレプリケーション構成なのか、パーティション構成なのか、あるいはwhere句にどんな条件がついているのか、といったことを解析し、この情報を基に以降の処理を行います。


2.SQLの書き換え

   PostgresForestはPostgreSQLサーバに対して、ユーザから与えられたSQLをそのまま発行するとは限りません。これは、高速化や負荷分散のためにユーザ指定とは異なるテーブルにレコードが格納されている場合があるためです。具体的にはパーティションテーブルを使っている場合がこれにあたります。

   そのため、必要に応じてユーザから与えられたSQL中のテーブル名を書き換える処理を、この段階で行います。


3.SQLの振り分け

   2で書き換えられたSQLを、どのPostgreSQLサーバに送るべきかを判断して、振り分けを行います。すべてのPostgreSQLサーバに振りわけることもあれば、1つのPostgreSQLサーバのみに振りわけることもあります。


4.SQLの結果を収集してユーザアプリケーションに返却

   3で問い合わせたSQLの結果を集めて、ユーザアプリケーションに返却します。

   すべてのSQLに対してこの一連の処理を繰り返すことで、PostgresForestが動作しているわけです。

前のページ  1  2   3  4  次のページ


株式会社NTTデータ 長妻 賢
著者プロフィール
株式会社NTTデータ  長妻 賢
基盤システム事業本部
オープンソース開発センタ 技術開発担当
PostgreSQLを用いた並列分散データベースの研究開発に従事。その後PostgreSQLを使った非常に大規模なシステムの検証などを行う。2006年より、現在のPostgresForest開発チームに加わり、PostgresForestの開発と普及活動を行っている。


INDEX
第2回:解体、PostgresForest!
  PostgresForestの動作を決めるグローバルシステムカタログ
PostgresForestはどのように動くのか
  レプリケーションテーブルに対するSQL処理
  パーティションテーブルに対するSQL処理