[pgsql-jp: 27621] Re: データベース間のリレーションの図り方

Tatsuo Ishii t-ishii @ sra.co.jp
2002年 10月 12日 (土) 21:10:43 JST


石井です.

> > やっぱり良く分からないので,具体例をあげていただけませんか?
> 
> んーと、リモートとローカルでどういう順にbeginをかけるかによると思うのですが、
> 例えば、リモート→ローカルという順番でトランザクションを始める場合に、
> 
> リモートにbeginかけて、何らかの理由でレスポンスが遅れてる間に
> ローカルでは他のトランザクションによってデータが更新されて、
> その後ローカルにbeginする、とかというのは、ローカルとリモートでbeginが始まる
> タイミングが大きくズレる場合がありますよね?
>
> 本来ならリモートでbeginするのと同時にローカルでもトランザクションを開始して
> ほしいわけですが、「双方にbeginを発行するタイムラグ」が問題になることは
> 無いのかなぁ、と。

dblinkのような仕掛けを使う限り,そういうことはあり得ないのではないでしょ
うか.

SELECT dblink("dbname=test host=hoge", "BEGIN");

ってやると,dblinkの中でlibpqがhogeにコネクトしてBEGINを実行し,BEGIN
が完了するまでブロックするので,dblinkから戻ってきたときにはリモートで
BEGINが必ず終わっていますよね.あ,そういうことではない?

> すみません。SQL99じゃなくて、策定中の(?)SQL4(?)みたいです。
> 先日プレゼンでキーワードを見たのを、後日検索してみました。
> 
> http://www.atmarkit.co.jp/fnetwork/tokusyuu/01sql99/sql99_3d.html
> 
> これの「SQL/MED」のあたりです。

なるほど.このURLはちょっと説明が大ざっぱすぎて良く分かりませんが,オ
プティマイザの問題はどうするんでしょうかね.そこまでは考えてないのかな.

オプティマイザの問題を考慮しなくて良いのなら,dblink程度で十分実現でき
そうな機能のように見えました.それどころか,dblinkなら,周辺機器から上
がってくる情報のようなものさえテーブルに見せかけるようなこともできます.
個人的にはこっちの方が面白そう.
--
Tatsuo Ishii



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