IBM DB2 for i5/OSの変換マップに関する追加考慮事項
IBM i とIBM DB2 for i5/OSなどのデータベースが統合された環境では、特有の機能が提供されます。 マッピング・ツールは幅広いプラットフォームのデータベースをサポートできるよう設計されているので、このIBM i サーバー独自の機能により、IBM DB2 for i5/OSデータベースのコンポーネントを使用する変換マップに関しては、特別に考慮する必要があります。 このトピックでは、この考慮事項について説明されています。
IBM DB2 for i5/OSデータベース・コンポーネント内でのSQL SELECTステートメントまたはSQL-WHEREコンポーネントの使用
トランザクション・コントロールとIBM DB2 for i5/OSデータベース・ジャーナリング
注: この考慮事項は、Altova MapForceバージョン2010 リリース 3に基づく記述です。 これ以前(または以降)のマッピング・ツールでは異なった考慮事項が適用されることがあり、ここで記される特別な機能に関しても異なる場合もあります。
一般的にi5/OS環境では、アプリケーションは特定のライブラリへのハードコードによる参照を避けるようにしています。 このお陰で、同じプログラムが実行時の環境で決定されたラブラリのデータベース・テーブルやその他のオブジェクトを使って実行することができます。 LANSA Composerでは、この機能を利用してIBM DB2 for i5/OSデータベース・テーブルを使用する変換マップをサポートしています。詳細は次の通りです。
1. IBM DB2 for i5/OSデータベース・テーブルを使用する変換マップを定義
IBM DB2 for i5/OSデータベース・テーブルを使用する変換マップを定義するには、使用したい定義のファイルが含まれるライブラリを指定します。
選択するファイルが含まれるライブラリは変換マップを定義するためだけに使用されることを理解しておいてください。 これは、変換マップが実行時にそのライブラリのファイルを使用するという意味ではありません。
2. IBM DB2 for i5/OSデータベース・テーブルを使用する変換マップを準備
IBM DB2 for i5/OSデータベース・テーブルを使用する変換マップを準備するには、LANSA Composerで生成されたJavaコードからライブラリ修飾子を取り除きます。 これにより、実行時にデータベース・テーブルの異なったインスタンスを使用して変換マップを実行できます。 これはIBM i サーバー環境の優れた機能です。
LANSA Composerは、IBM DB2 for i5/OSデータベース・コンポーネントのライブラリ修飾子のみ削除します。その他の種類のデータベースは対象ではないことに注意してください。 これには一時的なマップ定義(*.mfd)ファイルが使用されます。この定義では(まだ設定されていない場合)テーブル名からMapForceのデータベース・コンポーネント設定のスキーマ名の除外が設定されます。 この処理では元のマップ定義(*.mfd)ファイルは変更されません。
注: LANSA Composerは、特定のタイプのマップ構成のライブラリ修飾子を削除しません。 詳細はIBM DB2 for i5/OSデータベース・コンポーネント内でのSQL SELECTステートメントまたはSQL-WHEREコンポーネントの使用を参照してください。
3. IBM DB2 for i5/OSデータベース・テーブルを使用する変換マップを実行
IBM DB2 for i5/OSデータベース・テーブルを使用する変換マップを実行するには、LANSA Composerで変換マップのパラメータとして提供されるデータベース構成によるJDBC接続を準備します。 このデータベース構成は使用するライブラリを指定します。
IBM DB2 for i5/OSデータベース・コンポーネント内でのSQL SELECTステートメントまたはSQL-WHEREコンポーネントの使用
マッピング・ツールでは、変換マップで実行するSQLに入るために2つの機能が用意されています。
- データベース・コンポーネントには1つまたは複数のSQL SELECTステートメントが含まれている場合があり、その結果としてマッピング目的の”仮想”テーブルが使用されることがあります。
- またもう1つのコンポーネントのSQL-WHEREでは、ユーザー自身が入るためのSQL-WHERE句を使用して、データベースのデータを条件でフィルターすることができます。
これらの機能をIBM DB2 for i5/OSデータベース・コンポーネントと共に利用する場合、テーブル名からスキーマ名の修飾子を取り除く([テーブル名からスキーマ名を除外する])機能は、ユーザー定義のSQL SELECTステートメントやSQL-WHERE句からのスキーマ(ライブラリ)名には対応しません。 つまり、変換マップの準備を行うと、存在する全てのスキーマ(ライブラリ)修飾子が生成されたJavaコード内に残るということです。
作成した変換マップが予期せぬライブラリ内のデータベース・テーブルにアクセスしたり、更新しないようにするには、これらのMapForceの機能を利用する時にSQL SELECTステートメントやSQL-WHERE句の中でスキーマ(ライブラリ)修飾子を使用しないことです。
ただし、これは派生的な結果ももたらします。 SQL SELECTステートメントやSQL-WHERE句でライブラリ修飾子を省略または削除した場合、以下のような結果になります。
- 出力タブを使ってマッピング・ツール内のマップのテストが実行できなくなります。
- Javaコードを生成中に準備段階でエラーになる可能性があります。
いずれの場合も、DSNに指定されたファイルが(1つまたは複数の)ライブラリに含まれておらず、ODBCがファイルを見つけられないために起こる現象です。 このような場合、適切なライブラリ・リストを指定するODBC DSNを使用する必要があります。 詳細はDSNのライブラリ名 を参照してください。
IBM DB2 for i5/OSデータベース・テーブルを使用する変換マップを定義する際、MapForceは使用したい定義のファイルが含まれるライブラリを指定するようプロンプトが表示されます。
そのため多くの場合、接続時にODBC DSNで使用したい(1つまたは複数の)ライブラリを指定する必要はありません。 これは1つのDSNを使用して複数のライブラリ内のテーブルに参照できるようになる便利な機能です。
しかし、このようなDSNではある特定のMapForce機能を使用する際に次のような影響を受けることがあります。
- 出力タブを使ってのマッピング・ツール内のマップのテスト実行ができなくなります。
- Javaコードを生成中に準備段階でエラーになる可能性があります。
特に、以下のような場合にこの問題が発生する可能性があります。
- (推奨通りに)ライブラリ修飾子を省略してMapForce SQL SELECTステートメントを利用した時
- (推奨通りに)ライブラリ修飾子を省略してMapForce SQL-WHEREコンポーネントを利用した時
- データベース・コンポーネント設定で[テーブル名からスキーマ名を除外する]のチェックボックスを選択した時
これらの問題を避けるには、使用したい(1つまたは複数の)ライブラリが指定されたDSNを使用することを推奨します。 このようなIBM i Access ODBCドライバのDSNを指定するには、
ウィンドウで次のいずれかの方法で行います。1. 1つのライブラリを指定する場合は、表示されているように[SQLデフォルト・ライブラリー]ボックスにライブラリ名をタイプします。
2. 複数のライブラリをリストを指定する場合は、
a. [命名規則]ドロップダウンリストからシステムのネーミング規則(*SYS)を選択します。(注:を参照のこと)
b. 表示のようにライブラリ・リスト・ボックスから必要なライブラリを指定します。
注: システムのネーミング規則を利用する場合、データベース・コンポーネントを追加するプロンプトが表示された時に、(ネイティブの代わりに)ODBC API経由で接続するオプションを選択しなければなりません。 そうしなければ、[テーブルの追加/削除]ウィンドウでライブラリ名が表示されませんし、選択もできなくなります。
トランザクション・コントロールとIBM DB2 for i5/OSデータベース・ジャーナリング
ソースまたはターゲットのマッピングとして、IBM DB2 for i5/OSデータベース・コンポーネントを含むデータベース・コンポーネントを使用することができます。
マッピングのソースとして使用する場合は、データベースは読み取り専用で使用され、トランザクション・コントロールに関する考慮事項はありません。
しかしマッピングのターゲットとして使用する場合は、マッピング・ツールで指定したデータベース・テーブル・アクションにより、変換マップが挿入、更新、削除等のアクションをそのデータベースに実行する可能性があります。 この場合、トランザクション・コントロール・オプションを使って、トランザクションが完全に終了する、もしくはエラーの場合は元に戻されることを確実にします。
マッピング・ツールでは次の2つのレベルでトランザクションの使用を指定できます。
- データベースの ウィンドウで、 のチェックボックスをチェックすると、そのデータベース・コンポーネントで使用される全てのテーブルのデータベース・テーブル・アクションにトランザクション・コントロールが適用されます。
- データベースの ウィンドウで、 のチェックボックスをチェックすると、そのテーブルのデータベース・テーブル・アクションにトランザクション・コントロールが適用されます。
これらのオプションに関する詳細は、Altova MapForceのドキュメントを参照してください。 以下は、示されたオプションがIBM DB2 for i5/OSデータベース・コンポーネントと共に使用された場合の特殊な考慮事項に関しての説明です。
1. マップで
オプションを指定しない場合は特別な考慮事項はありません。 また、関係するIBM i データベース・テーブルにデータベース・ジャーナリングを有効にする必要もありません。 (上記は以前のバージョンのLANSA Composerとマッピング・ツールでの情報から変更されていますので注意してください。)ただし、マップ実行時にSQL7008 (操作には <library> の <file> が正しくない) 、理由コード 3 のエラーになる場合は、データベース構成が適切に構成されていない可能性があります。 特にデータベース構成では、次のことに注意してください。
- トランザクション分離レベルが、"None"に指定されていなければなりません。
- データーベース・マネージャでコミットメント制御を使用するようにするJDBC接続文字にキーワードが含まれてはいけません。 例えば、'true autocommit=true'という文字が含まれていないことを確認してください。
2. マップで
オプションを指定した場合、以下を確認してださい。a. データベース自体が希望のトランザクション・コントロールをサポートするよう構成されている。 このためには、通常少なくともデータベース・テーブルがジャーナリングされていないといけません。 詳細は IBM i のドキュメントを参照してください。
b. データベース構成で希望のトランザクション・コントロールをサポートする適切な値が指定されている。
トランザクション・コントールを使用する際は、指定したマップ・オプションと使用するデータベース構成とが期待通りに作動するかテストすることを強く推奨します。正常終了した場合とエラーで終了し、トランザクションが元に戻される作業を要求する場合の両方のテストを行ってください。 i5/OSデータベースでトランザクション・コントロールを使用する変換マップは、正常な状況では正確に作動するように見えます。 データベース設定(例えばジャーナリングがされていないなど)、またはデータベース構成が、希望のトランザクション・コントロールをサポートするよう適切に指定されていない場合に必要となる、トランザクションのロールバック機能も正常に作動することを確認しておく必要があります。