5.PL/Proxy- PostgreSQL のソースコードを読む

番外編。Skype の PL/Proxy の概要をまとめる。

PL/Proxy

https://developer.skype.com/SkypeGarage/DbProjects/PlProxy
最新版 plproxy 2.0.8 は 2009年1月に出ている。アクティブ。BSD License。

何?

  • PL/Proxy は組み込みの proxy 用言語。
  • field の hash値に基づいてパーティションニングすることが可能
    • 必ずしも hash値に基づく必要ない
  • Remote call
    • ユーザは proxy の function を call 。proxy の function が remote の function を call。

使い方と仕組み

http://plproxy.projects.postgresql.org/doc/tutorial.html
を読むのが早い。

要は proxy と backend に同じ名前、引数、戻り値の function を作る。

  • proxy 側では
    • partitioning のための設定を function 内に書く
  • backend 側では
    • 実ロジックを書く
  • ユーザーは proxy の function を呼ぶ(partitioning などは気にしない)

注意

  • 全て function ベースになるので開発に割り切りが必要。
    • select も insert も全て function。
  • Proxy も冗長化が必要。
  • Pooler が別途必要。
    • PgBouncer
  • partion の数は 2 の累乗でないとだめ。(と書いてあるが本当?)
  • 負荷分散の問題
    • backend のマシンが全て同じ性能のマシンではない場合など weight 明示指定がしたいがなさそう。