« フレームワークがもたらした生産性 | メイン | [postgresql] pgpoolでinsert_lock=trueがありえない場合 »

[postgresql] postgresqlでハイアベイラビリティ?とかやってみる(2008/06/17)

 先日のエントリーで「フレームワークを売り込むブログなのにフレームワーク批判をしてるなんて、楽しいですね?」といったコメントがあったのだが、確かにこのブログがフレームワークを売り込んでいることを思い出した。えっと、UIEngineがんばれ!と。

 postgresqlでハイアベイラビリティ?とかそんなことをやっていると、pgpoolだとか、slonyだとか、石井達也だとか、あれ、違ったか、 石井達夫だ、といったものが目につく。postgresqlを使ってそこそこのサイズのサイトを構築しようとするといろいろ面倒みたい。

 pgpoolはとりあえず、http://pgpool.sraoss.jp/を見て確認すれば良いだろう。一応、レプリケーションを使う際には同期である点、それと、シーケンスや時刻(current_timestamp)は上手にレプリケーションできないのでテーブルロックさせる必要がある点は抑えておくべき。テーブルロックするということは、大量の書き込みトランザクションが来たとき、皆待たされるので期待するパフォーマンスが出ない可能性がある。

 ロックさせずにレプリケーションを使う場合は明示的にシーケンス値をマスタ側から取得、insert,updateをする値を明示的に指定するといったアプリケーション側の気遣いが必要。つまり、アプリケーション側からpostgresqlが一つに見えるように作ることができないということ。

 レプリケーションをslonyに任せる方法もある。slonyは非同期ゆえ、いつスレーブ側に書き込まれるかわからないので心配といえば心配。あとは、別のレイヤーでレプリケーションする方法もあるのだろうがその辺はおいおい書くかもしれない。

トラックバック

この記事のトラックバックURL:
https://www.typepad.com/services/trackback/6a00d8341c2e2e53ef00e5537404418834

[postgresql] postgresqlでハイアベイラビリティ?とかやってみるを参照しているブログ:

コメント

この記事へのコメントは終了しました。