[pgsql-jp: 33631] Was: pgpool 2.0.2 報告

Makoto YUI m-yui @ pi.jp.nec.com
2004年 7月 12日 (月) 15:18:51 JST


油井です。

ちょっとオフトピック気味ですが..

>> master と secondary の値が違えてしまうケースとして、更新・追
>> 加時の current_timestamp や random() が 考えられますが、これ
>> の対策ってなされてるのでしょうか・・・?(current_timestamp 
>> は時計合わせとけって話なんですが)
>
>pgpoolでは何もしていません.
>
>こういった問題はなかなか頭の痛いところですが,解決方法としては以下のよ
>うなものが考えられます.
>	
>2) (これは単なるアイデアレベルですが)pgpoolの中にそうした値を生成す
>   る機能を入れる.そして値をSELECT文で取得できるようにしておき,それ
>   をアプリケーションに使ってもらう.

Clustered-JDBCというType3のJDBCドライバは,2をやっていました。
ごく簡単にSQLをパースして,SELECT now()な所には,システム側で
タイムスタンプをいました。

C-JDBCは多種多様なデータベース(PostgreSQL+Oracleなど)を
バックエンドにできるというのを売りにしていましたので,
そのSQLの違いを吸収する意味もあるようです。

pgpoolでどうなっているかわかりませんが,
SELECT doUpdate('hogehoge')
みたいなstored procedureを用いた場合の問題もあるようです
#ポリシー的な問題はおいておいて,SELECTでも全ての
#バックエンドにクエリを投げる必要がある。

昔,hackersで紹介されていて知ったのですが,
JDBCレベルで,コネクションプーリング,クエリキャッシング,
レプリケーション,ロードバランスといった機能を提供しています。

Javaメインの人は,参照してみると面白い/有用かもしれないので
紹介してみます。
http://c-jdbc.objectweb.org/

個人的にリサーチペーパーにあった,
RAIDb(Redundant Array of Inexpensive Databases)
という概念が面白いと思ったのですが,期待していた
Distributed Query Processing(RAIDb-2)がまだ実現されていないのと,
SQLパーザがしょぼい(UNIONとかサブクエリみたいな複雑なSQLに対応していない)
ので見送りました..ちょっと作業メモを残しています。
http://www.myin.org/pukiwiki/pukiwiki.php?C-JDBC

個人的には,多種多様なDBを混在させるのは魅力的でないので,
pgpoolなどの方が実用はできるかなぁ..と
http://itpro.nikkeibp.co.jp/members/ITPro/oss/20040709/147053/
のオーバヘッドの少なさをみて思いました。
#このオーバヘッドの少なさは凄いですねー

いちお,C-JDBCもフォローしておくとpgpoolなどにはない機能として
ResultSetのキャッシュもやっているので,
単純なSQLしか投げない, non-EJBなシステムで使えるかも知れません。

-- 
油井 誠 (Makoto YUI)
Key-fingerprint=0732 260A F261 68A7 8530 17AB CA86 5E08 D288 1684



pgsql-jp メーリングリストの案内