データマッピングルール
• データマッピングルールの設定
•
FireDACには、データ型のマッピング(変換)を行う仕組みが用意されている。•
TFDConncectionコンポーネントのFormatOptionsプロパティにて設定可能。→ 通常は、 [FireDAC接続エディタ]上で設定する。
•
設定例
形式オプション
FormatOptionsプロパティに相当
データマッピングルール
SourceDataType : 変換前のデータ型 TargetDataType : 変換後のデータ型 PrecMin : 最小桁数
PrecMax : 最大桁数
※BDEの場合、通常TSmallIntは使用されない為 (0-9)桁をdtInt32(Integer)として定義する。
【設定後に項目を作成】
• FireDACモニタ
•
FireDACには、FireDACとデータベースとの間で実行しているSQLコマンドや処理 件数等をロギングする仕組みが用意されている。•
アプリケーションに組み込めば、障害発生時等にどのようなSQL処理が行われたかを 確認することができる。 FireDACモニタ
想定通りの結果がでない⁉
IBM i
ログファイルを見れば どんなSQLが実行されたか 確認可能!
FireDACモニタ
• TFDMoniXXClientLinkコンポーネント
•
FireDACのログ情報を出力するためのコンポーネント。•
FDConnectionコンポーネントと同じユニットに配置。•
配置したコンポーネントにあわせて、FDConnecition のMoniterByパラメータを定義。種類 機能
TFDMoniFlatFileClientLink 指定したログファイルにFireDAC ログ情報を出力。
TFDMoniCustomClientLink イベントを使用して独自のログ出力 を実装。
TFDMoniRemoteClientLink FireDACモニターにログ情報を出力。
MonitorByパラメータ
FlatFile / Custom / Remote より 選択する。
FireDACモニタ
• TFDMoniXXClientLinkコンポーネント
•
ログ出力を行う場合、Tracingプロパティ=Trueを指定。•
常にログ出力を行うと、大量のログファイルが生成され、レスポンスにも影響の可能性があるため、トラブル発生時 のみモードを切り替えれば効果的。
•
ソースコード例デバッグ用
アプリケーションのショートカット
実行時引数
/DEBUG オプションを付けた ショートカットを作成。
• TFDMoniFlatFlieClientLinkコンポーネント
•
任意のログファイルにログを出力。 FireDACモニタ
プロパティ 機能
FileName ログファイル名をフルパスで指定。
デフォルト:C:¥Users¥<LoginName>¥AppData¥Local¥Temp¥Trace1.txt
FileEncoding ログファイル出力形式。 (ecUTF8)
FileAppend ログファイルに追記するかどうか?(False:新しいファイル作成)
ShowTraces ログトレースをしている場合にメッセージを表示する。 (False)
FDQueryを実行
ログファイルが生成。
実行されたSQLが出力。
• TFDMoniRemoteClientLinkコンポーネント
•
FireDACモニタ(FDMonitor.exe)にログを出力。•
IDEの[ツール]→[FireDACモニタ]で起動可能。•
ローカルだけでなく、リモート監視もできる。 FireDACモニタ
プロパティ 機能
Host FireDACモニタの稼働端末のIPアドレスを指定。
デフォルト:127.0.0.1
FDQueryを実行
リアルタイムなログ確認が可能。
コンポーネント毎の状況も把握できる。
• データのフェッチ
•
データベースから値を取得して、クライアントのデータセットに保持することを フェッチという。•
一般的に大量のデータをフェッチしようとすると、Openに時間がかかる。•
FireDACで、1,000件のデータと、500,000件のデータの開く時間を比較。→ 処理時間が変わらない!
データのフェッチ
IBM i
得意先マスタ (MTOKUP)
売上ファイル (FURDTP)
500,000件 1,000件
データセット
データセット FDQuery1
FDQuery2
FDQuery1を実行
FDQuery2を実行
平均Open 時間:317ms
平均Open 時間:307ms
件数にかかわらず高速にオープンできるのはなぜか?
• オンデマンドなフェッチ
•
FireDACでは、データセットを作成する際、一度に全レコードをフェッチするのでは なく、予め設定された件数までフェッチし、その後フェッチされたカレントレコード のカーソル位置にあわせて、必要になったときに都度、次のデータを取得する。•
初期設定では、50件ずつレコードがフェッチされる。 データのフェッチ
カレントレコードが50行目。
スクロールバーが最下部に きている。
次の行へ移動
次の50件が読み込まれ、
スクロールバーが中央に移動。
• FetchOptionsプロパティ
•
FDConnectionのFetchOptions.RowSetSizeに全体の フェッチ件数が指定可能。•
FDTable、FDQuery単位でも個別に上書き指定できる。→ 実行するSQLやテーブルにあわせて、フェッチする件数を 調整することで、よりパフォーマンスの向上が可能。
•
IBM i 用のFDCO400ドライバでは、さらに一度に 読込むバッファ数を調整可能。(BEFFERCOUNT) データのフェッチ
ODBCAdvancedパラメータに BUFFERCOUNT=[バッファ数]
の指定が可能。(20~100)
データセット