PGCluster
JPUG広島の三谷さんによる高可用システム構築というかPGClusterの話。止まらない、信頼性の高いシステムをどう作るか。
PostgreSQLの問題点:差分バックアップ機能→8.0から導入。リッチな環境を活用できない(遅い)→8.0で改善(?ベータ版では遅い。正規版を待て)。検索・更新性能が半分であれば、2台入れればいい?ううむ、そんなものなのか?多重化するのって結構大変では。で、PGClusterを使えという話か。
負荷分散要るよな。マシンのスペックは不明なんだけど、1秒間に1000くらいインサートしてみたら、データがかなり落ちたんだよね…。と、レプリケーションの話で負荷分散ではないか。某携帯コンテンツサーバは負荷集中時には1億アクセス/月だと…ざっと割って2000アクセス/分くらいですか。ってこっちは更新系じゃなくて検索系か。
PGCluster:三層構成=load Balancer(pgpool+負荷分散機能)+DB(PostgreSQLにクラスタ用パッチ)+Replicator。昔PGReplicatorといっていた(紛らわしいのがあったので変更)。
PGClusterのレプリケーション機能
- 更新系クエリ
- トランザクション
- COPYコマンド(INSERTよりCOPYの方が速い(10倍くらい))
- シリアル型データ
- 現在時刻取得関数
- 乱数関数(なんで?Seedに時刻放り込んでるだけ…ぉ)
- ユーザ定義関数(珍しい)
- トリガー
- ラージオブジェクト(新機能)←Iさんの挑戦?(w
- OID(ラージオブジェクト用)(新機能)
- 部分レプリケーション
今後の機能拡張(1.1系, 2.0)
レプリケーションサーバ(Replicator)の故障(停止)時への対応。DB側で仕事が切れたことを検知して自力で確認。レプリケーションサーバもいくつかあるのね?デモあり…地味なのが。
その他:
- 更新系の速度改善
- 7.4対応(2.0)
- マルチバージョン化←対抗SlxxnyI(伏せてない伏せてない)
- 本家コントリビューション
- 管理ツール作成(誰か作って欲しい)
OID一致についてはシリアルインポートではオーバーヘッドが大きいので今のところは外している。将来オプションとして選べるようにするかも。