最終更新:2011-04-01 (金) 21:03:16 (4766d)  

pgpool-II
Top / pgpool-II

http://pgpool.projects.postgresql.org/

http://pgpool.projects.postgresql.org/pgpool-II/doc/pgpool-ja.html

pgpool-IIとは

pgpool-IIはPostgreSQL専用のミドルウェアで、PostgreSQLのデータベースクライアントとPostgreSQLサーバの間に割り込む形で動作し、PostgrSQLに以下のような機能を追加します。

  • コネクションプーリング?
    • PostgreSQLへの接続を保存しておき、再利用することによってPostgreSQLへの接続オーバヘッドを低減でき、システム全体のスループットを向上させることができます。
  • レプリケーション
    • pgpool-IIは複数のPostgreSQLサーバを管理することができます。レプリケーションを使用することにより、物理的に2台以上のディスクにリアルタイムでハードディスクバックアップを取ることができ、万が一どれかのディスクに障害が発生しても運用を継続することができます。
  • 負荷分散
    • レプリケーションを運用している場合、すべてのPostgreSQLデータベースの内容が一致しているので、どのサーバに問い合わせても同じ結果が返ってきます。このことを利用して、多数のリクエストをそれぞれのサーバで分担して負荷を軽減させ、システム全体の性能を向上させることができます。最良の場合にはサーバ台数に比例した性能向上が見込めます。特に多数のユーザが大量の問い合わせを投げるような環境で威力を発揮します。
  • 接続数?制限?
    • PostgreSQLに接続可能なセッション数には限界があり、それを超えて接続することはできません。かと言って、同時セッション数をむやみに多く設定すると、メモリーなどのリソースが多く消費されてパフォーマンスに影響があります。pgpool-IIでもクライアントからの接続数には上限がありますが、それを超えてもただちにエラーになることはなく、一定の間待たされるようになっています。したがって、pgpool-IIはPostgreSQLへの接続要求を実質的にキューイングし、PostgreSQLへの過大な接続数を制限することが可能です。
  • パラレルクエリ?
    • 複数のサーバにデータを分割して受け持たせ、それぞれのサーバに同時に検索問い合わせを投げて、問い合わせの処理時間を短縮するパラレルクエリが利用できます。特に大規模なデータを検索するときに威力を発揮します。

pgpool-IIはPostgreSQLバックエンドとフロントエンドの通信プロトコルを理解してその間を中継します。すなわち、PostgreSQLのデータベースアプリケーションからはPostgreSQLサーバに、PostgreSQLからはデータベースアプリケーションに見えるように設計されています。そのため、PostgreSQLそのものはもちろん、アプリケーションの開発言語によらず、PostgreSQLのデータベースアプリケーションにほとんど手を加えることなく、pgpool-IIの機能が利用できます。

参考