Calender
Sun Mon Tue Wed Thu Fri Sat
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< October 2019 >>
広告
SEARCH

SELECTED ENTRIES
RECENT COMMENTS
RECENT TRACKBACK
CATEGORIES
ARCHIVES
LINKS
PROFILE
OTHERS
SKYPE
PC: skype.jojo.jp
chat
iPad: iphone.jojo.jp
chat call
THANKS



本日:
昨日:
多言語
広告
 ▼▲ 作業日報 ▼△
    What's under the hood?
<< 激安パソコン_16,800円 08/10/28日迄 &旧ML115消費電力測定 | main | 【PostgreSQL】多重継承テーブルの挙動 (INHERITS) >>
pgpool-II パラレルモード構成 導入断念_図説
 SQLServer/PostgreSQL(test)で動作可能なシステムで、PostgreSQLの分散化(parallel)を調査/テストしていたのですが、昨日のレビューで、全店参照だけでもパラレル構成にしたかったのですが、色々厳しい突っ込みを頂き、parallelモードの採用は見送ることとなりました・・

 経緯をメモとして残しておきます

(1)現状
 DBは以下のような構成になっています
 チェーン店毎にSQLServerを用意し、店毎にDBが定義されており各DBには同一のテーブルが存在します
※APP...WEBアプリケーションではありません

(2)問題・改善案
 1)串刺しで全店の集計が非常に時間がかかる
  →全店参照用DBを作成
 2)OSSを利用しコストダウンを図りたい
  →PostgreSQL採用
 3)店舗数増などによるスケールアウトが難しい
  →パラレル化して対応

(4-1)Step1構成案
 DBをスキーマ構成にて統合化し、PostgreSQLのテーブル継承機能を利用し全店参照用のテーブルを用意し"店"項目を追加。
 更新系は各店のDBに今までどおりに行い、追加された店項目はDEFAULT値にて自動的に代入するものとする
 訂正:INHERITED(誤)→(正)INHERITS

 PostgreSQL単体での機能は1500万件/T程度(2年30DB程度)であれば問題が無いことは実証済みであった為通常店舗構成では以上の構成とする

 それ以上の規模となるDBに関しては以下の構成で行う
(4-2)Step2構成案(クラスタ化)
 パラレル機能を利用し店舗毎にDBを分割する

 各ノードはへの分割は"店"項目にて行い全テーブルを分割する

(5)問題点:

 1)パラレルクエリーは制限が多い若しくは書き換えが必要
 GROUP BY,ORDER BY,HAVING, LIMIT,DISTINCT,UNION,サブクエリ,関数がNG
 大体dblink(...)とか書きたくないからパラレルを使いたいのに・・
 又、上記クエリはVerUP等で書き換えが必要なくなる可能性もある
 APP側の修正が多すぎる

 2)ノードが1つでもダウンするとDB全体にエラーとなる
 但しノードをpgpoolカスケードしレプリケーションすることは可能
 →縮退運転はできない

 3)DEFAULT値で入れた値は分散関数には渡されない(仕様)
 publicのテーブル(抽象)を対象に分散ルールを入れたが派生先のDEFAULT値は利用されなかった
 1レコード入れると全店のテーブルを見ると4件(4台構成の場合)追加となります

 4)時々 kind mismatch between backendのようなエラーとなる場合がある

 5)何かトラぶった時の情報・経験が不足>自分

 当面はpgpoolはレプリケーション、接続プール機能だけに利用し、後はPostgreSQLの基本性能でカバーしてもらい、運用状態と性能限界を見極めながら調整していくことになかると思います、DBの最適化の余地もあるし、、

補足:
(1)pgpool_catalog.replicate_defに値が入っているとそのテーブルはレプリケーションされる
→最初この辺の動きが分からず全てのテーブルを登録していたので一切分散されていませんでした

pgpool-II-2.1付属のドキュメントにはパラレルモード時の「replication_mode」「loadbalance_mode」は付属マニュアルにはtrueとありますが、こちらのサイトではfalseにするようにとあり、また別のサイトではfalse,trueにするようにとあり、 サイトによりフラグの指示が違う(これは後になって気づいたのですが、もう時間がなかったので効果については検証していません)

PGClusterPostgresL-Rどうかな・・・

リンク:
pgpool-II README
pgpool-II Wiki
pgpool-II ML
pgpool-II チュートリアル
PostgreSQLの高速化と高信頼化を実現する「pgpool-II」を使ってみる
【PostgreSQLウォッチ】第28回 パラレルクエリを実現したpgpool-II
Y-110's Wiki
PostgreSQL 8.3.3ドキュメント
PostgreSQLをクラスタリングで負荷分散で試行錯誤でorz その3
| サーバー関連 | 10:35 | comments(0) | trackbacks(0) |









http://blog.jojo.jp/trackback/998054