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一致についてはシリアルインポートではオーバーヘッドが大きいので今のところは外している。将来オプションとして選べるようにするかも。