« さよなら | トップページ | 黒軸・茶軸・赤軸・青軸 »

2013年2月24日 (日)

DB2 クロスプラットフォーム開発注意点 その2

「自律型トランザクション機能のサポート有無」

 

注意点というか、開発者の資質の問題でもあるのだが、

特定プラットフォーム・製品に慣れ親しんでしまうと、それがあたかもデフォルト・共通の

機能・作法となってしまうことを肌で感じた。

特定プラットフォームに相当するのが、「Oracle」です。「Oracle」の機能・作法(文法)が当然、

という認識の人がDB2のSQL/PLを作成すると、数々の落とし穴がありまして、その中でも個人的に

特大級な点が上記。

自律型トランザクション機能とは、非常に簡単に言うと、親から呼ばれた子プロシージャ側で、

親とは独立したトランザクションを切れる機能のこと。

通常、親側でなにか異常発生、あるいは、トランザクションを行ないたくないケースに該当した場合、

ROLLBACKを行うと、子側で発行したトランザクションもある意味当然ROLLBACKされます。

が、そうしたくないケースがありうる。

よく使うのは、DB内のテーブルに、処理ログ/アクセスログを書き込むようなパターン。

もし、親から呼ばれた子側の「処理ログ出力プロシージャ」もロールバックされてしまったら、

ログも書かれない=何が起きたか今イチ把握できない、、、

という、いざというときに使えないログになってしまいます。

(もちろん、トランザクションの順序等を工夫するとかして何とかする方法もありますが。)

そういう場合に便利なのが、この「自律型トランザクション機能」です。

DB2 for LUW では V9.7からこの自律型トランザクション機能が組み込まれました。

IBM DB2 9.7 for Linux, UNIX, and Windows の発表

しかし、同じDB2ファミリーでも、稼働OSによって、機能差があるのが落とし穴。

DB2 for i Series では、自律型トランザクションはサポートされていない。

これは痛かった。同一ファミリーなんだから使える機能は統一して欲しいっす。

調べてみると、自律型トランザクション機能が実装されているDBは、まだそれほど多くないらしい。

・Oracle ○

・DB2 for LUW  ○

・Firebird ○

・SQL Server ×

・MySQL ×

・PostgreSQL ×

という感じだろうか。

SQL Serverが対応していないのが意外っちゃあ意外。

こう見ると、自律型トランザクション機能実装派が少数派なので、それに依存していると、

他DBへの移植時に、それなりの労力を想定すべきっていうところか。

|

« さよなら | トップページ | 黒軸・茶軸・赤軸・青軸 »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/538346/56832684

この記事へのトラックバック一覧です: DB2 クロスプラットフォーム開発注意点 その2:

« さよなら | トップページ | 黒軸・茶軸・赤軸・青軸 »