2022年4月25日こんにちは、植田です。前回に引き続き外部システムのDBMSと連携した時のデータ取得の挙動について理解を深めていきます。検証#機能紹介:DBRET(DBリバースエンジニアリングツール)前回記事:検証#機能紹介:DBRET(DBリバースエンジニアリングツール)2今回の検証は下記に挙げた2番目のテーマについて進めていきます。実行時に外部テーブル同士の結合はどのようになるのか?外部テーブルと内部テーブルを名寄せした時にどのような結合になるのかそれでは試していきましょう。2.外部テーブルと内部テーブルを名寄せした時にどのような結合になるのか前回まで実装してきたトランザクション配下の通りです。外部DBMS2国と地域は共に外部DBMSからリバースしたテーブルで、国は1つの地域を保持する関係で繋がっています。今回はこの状態から国と会員情報を繋げていきます。会員トランザクションで定義した独自の国情報をリバースした国トランザクションの項目に名寄せします。この状態でDiagramオブジェクトを作成し、会員と国情報が繋がったことを確認してみます。会員情報と外部DBMS上のテーブルが相関関係にあることが確認できますね。データ内容をメッセージで表示する簡単なWebPanelを作成し、これらのデータが取得できているか確認します。因みに再編成は項目の置き換えが発生しましたので以下の様になっています。実行結果がこちらです。データはしっかり取得できていますね!log4netで表示個所のSQLを見てみます。[MnbId]1でDBコネクションの接続先、2で実際のSQLステートメントが確認できます。ここでは会員データを取得するためにシステム内部のDBから情報取得していますね。続きまして国と地域に関するログを参照してみます。@Areaこちらも1と2でコネクションの接続先とSQLステートメントが確認できます。こちらで注目したいのは前回では出来ていた国と地域の内部結合がされていない所です。内部システム上のDBと外のDBを繋げると、外部DB上のテーブルはそれぞれ単独で取得されることがわかります。対応策このままだともっと外部から取得する情報が多い場合にレスポンスが気になるところですので少し対策を考えてみました。通常ですと取得した情報をGridコントロール上で表示したり、一括処理をProcedureオブジェクトで記述することが多いと思いますのでGrid表示上の処理について以下の様に実装してみました。画面上には外部から取得する項目を変数としてGridオブジェクトに配置し、EventsエレメントのLoadイベントにて読み込んだ行に対しデータ取得するように記述しています。外部DBMS同士で名寄せされているテーブル同士は内部結合で取得される但し内部システムのテーブルと結合する場合は工夫が必要ということになりますね。今回はユースケースとしては大変機会の多いパターンだと思いますので検証してみて非常に興味深い結果となりました。こちらの情報がお役に立てれば幸いです。reservedトップ。