分散DB

XA-Compliantな実装覚書

以前に1-pipe方式では、XAの関数の中で有効な実装が必要なのはxa_recover()(とxa_open/close())だけと書いたがこれは間違いであった。xa_recover()要求に対しリストアップされるin-doubtトランザクションに対してxa_rollback()かxa_commit()を発行する(msd…

psqlodbcドライバ実装シミュレーション覚え書き

少し気になっていたインターフェイスポインターのスレッドをまたがる使用についてであるが、まずDTC Proxyから渡されるITransactionEnlistmentAsyncへのインターフェイスポインターはThreadingModel=Bothで実装されているようなので、どのスレッドからも同じ…

psqlodbcのMSDTC対応シミュレーション

前回記載のITransactionResourceAsyncオブジェクトの早死に問題をもう少し追いかけてみた。今回はITransactionReourceAsyncオブジェクトを正式にCOMを通してCoCreateInstanceで作成した。更に念には念を入れてCoLoadLibraryも呼び出してみた。しかし残念なが…

psqlodbcドライバによるXA-Compliantな? DB接続シミュレーション

前回記載のone-pipe方式の動作が気になったので調べてみた。前回はWindows2000だったが、今回はWindowsXP SP2を使用した。securityを強化しているせいか、なかなか動作せずに(XARMCreateでエラー)苦労したが、なんとか動作するようになった。実行内容を確…

MSDTC -> psqlodbc 〜 XA-Compliant? DB接続

以前にODBCドライバ(psqlodbc)を使って、MSDTC(MicroSoft Distributed Transaction Coordiantor)からXA-Compliantなデータベースへのアクセスをトレースしたことがある。今回そのコードを引っ張り出してきて再度試してみた。ちなみにMSDTCはXAインターフェ…

 何のための標準? 何のための2PC?

PGでは2PCらしきものの実装が終り、徐々にその後の議論が始まっているようである。全く順序が逆であろう。XAなどの標準が存在しなかった時代から2PCを実装しているデータベースがXA-Compliancyを実現するのに苦労したとしてもそれはやむをえないことだった…

The Two-phase commit implementation could be XA-compliant ?

PGの今回の2PC実装について引き続き少し調べてみたが、中途半端で危険というのが印象だ。最近の(5月位からの)議論にはXAインターフェイスのことはほとんど出てきていないようだし、わずかに出た質問(もっともな質問だと思うが)も無視されてしまったよう…

 PGの2PC実装

PGに2PC(2相コミット)が取り込まれることになったようだ。早速 http://itpro.nikkeibp.co.jp/members/ITPro/oss/20050616/162881/ の解説を見てみたがPREPARE TRANSACTION等のコマンド追加により2PCを実現するものであり、以前に見たことのあるFE/BEプ…