Postgres-XC Java版のgtmとgtm_proxy

追記(2011.1.22):ポツポツとアクセスがあるのでアップデイト。

2011年1月現在、最新版はver0.9.3だが、ver0.9.2で動作するgtmとgtm_proxyのJava版を作ったので公表する。

(2016.2.11) 多重化gtmが動くVagrant boxを作成して公開: [Vagrant box| GitHub] したので、興味があればどうぞ。

なお、機能には大きな制約がある:

  1. 基本的にver0.9.2でpgbenchを実行することを目標とし、シーケンスなどはサポートしていない。
  2. coordinatorやdatanodeには"autovacuum=off"を設定しなければならない。

ダウンロード

jgtm-0.3.2a.jarをダウンロードする。

Java1.5以上のJDK、もしくはJREを用意すること。

実行方法

パラメータなどはオリジナルのgtmやgtm_proxyのものを踏襲している。

jgtmの起動

jgtmの起動方法は以下のとおり:

gtm> java -classpath jgtm-0.3.2a.jar jgtm -x 1000 -D /home/postgres/co2dn2/gtm  -p 16680

gtm_proxyの起動

coordinator1で以下のコマンドを実行する。

coordinator1> java -classpath jgtm-0.3.2a.jar jgtm_proxy -D /home/postgres/co2dn2/gtm_proxy  -p 6666 -s gtm -t 16680 

coordinator2でも同じコマンドを実行する。

coordinator2> java -classpath jgtm-0.3.2a.jar jgtm_proxy -D /home/postgres/co2dn2/gtm_proxy  -p 6666 -s gtm -t 16680 

以降、こちらで説明した手順でpgbenchを実行できるはずである。

上にも書いたが、pgbenchを実行するだけの機能しか実装していないので、シーケンスなど使うとjgtm_proxyが終了するように作ってあるので注意。

P.S.

グローバルトランザクションによるクラスタは古くから大学などの実験的実装がある。
今さらながら登場したXCに皆が期待しているのは「営利企業NTTがまともに使えそうなクラスタを開発している」という点だと思う。

なので、シーケンスを実装しているときにオリジナルgtmのバグを発見したので報告したところ、
こんな回答があった:

Practically, it is just for internal use.   When coordinator receives statements 
using sequence, it first looks up coordinator catalog and go to GTM only when 
it is registered.   So this will not cause any problem.

Call to gtm is not exposed to XC application.   It is only called from within 
coordinator and datanode internals. 

実は、指摘したバグは単体テスト(異常値"存在しないシーケンス名"の入力テスト)をしていないという明白な証拠なのだが、 「内部エラーだから表面化しないんでOK」でいいんだろうか?
個人的にXCには期待しているんだけども。


Last-modified: 2012-10-28