« 次世代のソーシャルブックマーク&ソーシャルニュースBookDAQ | メイン | Hinemosでできる!今日から始める運用管理 »

2007年7月20日

pgpool-IIのご紹介 ~PostgreSQLで並列分散処理を実現するミドルウェア~

カテゴリ:OSC 2007 Kansai

2007.7.20 15:15-
[pgpool-IIのご紹介 ~PostgreSQLで並列分散処理を実現するミドルウェア~]
・最近はでかいところでも使われ始められている
・8.3が年内にリリースされる予定
・8.3では更新が速くなる
・要求としてダウンタイムを減らし、レスポンスをよくしてもらいたい
・とにかく止めたくないんだよ!サービス止まっちゃうし
・でも、信頼性とレスポンスはトレードオフの関係なんだよねぇ
・シングルサーバの限界というのはその辺りの話
・CPU追加によるスケールアップの限界
・搭載メモリ量の限界
・ディスクのハードウェア故障による可用性の低下
・つまり複数のマシンに仕事をさせればよいのですよ!

・クラスタリングのお話し
・複数台のシステムを使って一つのサービスを提供する仕組み、外から見ると複数台かどうかは分からない
・冗長化、一台に異常が発生しても、残りのサーバ(ノード)で頑張る
・高速化、負荷を複数台に分散する
・RDBMSのクラスタリング
・冗長化、共有ディスク方式、ミラーリング(レプリケーション)方式
・付加分散、リクエストの振り分け、リクエストの並列処理

・pgpool-II
・2003年にたっつあんが開発開始
・最初はコネクションプーリングから
・ライセンスはBSDライセンス
・現在はpgpool Global Development Groupという開発団体に移行
・pgpoolはクライアントとPostgreSQLの間に入る(proxy)
・pgpool-IIの機能
・コネクションプーリング、接続オーバーヘッドの軽減、forkに時間が掛かる部分をpgpoolが代行、携帯サイトのセッションみたいな細かい接続にはうってつけ
・同期レプリケーション、信頼性向上、二つのpgにpgpoolがクエリを投げる、一つのpgが落ちても縮退運転するからだいじょうび
・ロードバランス、クエリの負荷分散、同じデータが2台居るからselectはどっちのpgに聞いてもOK
・パラレルクエリ、リクエストの並列処理。一つのテーブルを複数サーバに分割しておき、selectの結果をproxyでまとめることで、仮想的に一つのテーブルとして扱う
・パラレルクエリのINSERT、複数のサーバのテーブルを仮想的に一つのテーブルとして扱う、分散ルールはpg関数でユーザが定義
・パラレルクエリのSELECT、pgpoolが必要に応じてクエリを書き換え、ノードに送信、ノードからの戻りをpgpoolがまとめてクライアントに返す
・パラレルクエリの利点・欠点、大容量テーブルへの検索高速化、TBとか数百GBのような超でかい奴
・pgpool-II 管理ツール、PHPによるWebベースの管理ツール、設定ファイルの編集、統計情報の表示、ノード管理(ステータス、切り離しなど)
・pgpool-HA、pgpoolの冗長化
・heartbeatによるpgpoolの監視
・pgpoolの制限事項、オンラインリカバリ(CSVにはコミット済み、もうちょいで導入される)、一部のSQLに対応していない、パラレルクエリはJDBC等でつかう問い合わせには今のところ対応できない

・ロードマップ pgpool-II 2.0
・2007年10月リリース予定
・レプリケーションの高信頼化
・パラレルクエリの高速化(最適化したい)
・オンラインリカバリ実装
・その他制限事項の解除

・時間が余ったので、おまけでPostgreSQLの話
・PostgreSQLのソースを読もう
・CFLAGS=-O0 をつけて最適化を解除して、--enable-debugオプションをつけてconfigureする
・gdb等のデバッガでソースを追いましょう



投稿者 ymkx : 2007年7月20日 15:15 |