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 明示指定がしたいがなさそう。