[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 メーリングリストの案内