Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

レコードの効率的なバッチ処理

RecordMap 機能は、一度に 1 つのレコードをインポートしますが、大量のレコードをインポートまたはエクスポートする場合は、RecordMap バッチを使用することで大幅に効率を高めることができます。RecordMap バッチ機能は同種のレコードを取り扱い、バッチのすべてのレコードを一度に処理します。バッチにはオプションで、先行するヘッダ・レコードと後続のトレーラ・レコードを含めることができます。

RecordMap バッチを作成するには、%PersistentOpens in a new tab および EnsLib.RecordMap.BatchOpens in a new tab から継承されるクラスを実装します。Batch クラスには、特定のバッチに関連付けられたヘッダおよびトレーラの解析と書き出しを処理するメソッドが含まれています。ヘッダを解析および書き出すためのコードを用意する必要があります。シンプルなヘッダとトレーラの場合は、EnsLib.RecordMap.SimpleBatchOpens in a new tab クラスを使用できます。このクラスは Batch クラスを継承し、シンプルなヘッダとトレーラを処理するためのコードを提供します。より複雑なヘッダおよびトレーラ・データを処理する必要がある場合は、これらの 2 つのバッチ実装のいずれかを拡張します。

バッチ処理では、HL7 や X12 のような、Ensemble の他のメッセージ形式に使用されるアプローチに従って処理が行われます。これは特に、RecordMap バッチ・オブジェクトを処理する組み込みのビジネス・オペレーションに関連します。このようなビジネス・オペレーションは、 EnsLib.RecordMap.BaseOpens in a new tab を拡張する RecordMap オブジェクトまたはバッチ・オブジェクト、あるいは BatchRolloverRequest タイプの要求のどちらかを受け入れます。特定のバッチのレコードを受け取ると、バッチが開かれ、バッチ・ヘッダが一時ファイルに書き込まれます。その後、オペレーションが受け取ったそのバッチ内のあらゆるオブジェクトが書き込まれます。同期的な要求の場合は、クラス名、ID、およびそのバッチに対してこれまでに書き込まれたレコード数が EnsLib.RecordMap.BatchResponseOpens in a new tab で返されます。バッチ・オブジェクト (これはデフォルトのバッチである場合があります) の受信によって、一時ファイルへのバッチ・トレーラの書き込みが開始され、その後そのビジネス・オペレーションのアダプタによってこのファイルが必要な宛先に送信されます。バッチ・オブジェクト自体を受け取った場合は、そのバッチ全体が一時ファイルに書き出され、その後このファイルが必要な場所に転送されます。

バッチ・オペレーションでは、デフォルト・バッチ・オプションもサポートしています。この場合、バッチにまだ属していないレコードがデフォルト・バッチに追加されます。このバッチの出力は、バッチ・オブジェクトをオペレーションに送るか、オペレーションに BatchRolloverRequest を送ることによって開始できます。デフォルト・バッチに対してスケジュール・ベースまたはカウント・ベースのロールオーバを使用するように、ビジネス・オペレーションを構成することもできます。これらのオプションはいずれもビジネス・オペレーションで構成します。それぞれのオプションは同時に使用できます。

サービスに関するオプションは、主に、ビジュアル・トレースでバッチ内のメッセージを表示する方法に影響します。

RecordMap バッチ・オペレーションは、最終的な出力ファイルの生成プロセスで一時ファイルを作成します。これらの一時ファイルの場所は、RecordMap バッチ・オペレーションの IntermediateFilePath 設定を指定することで制御できます。ネームスペースのデータベースがミラーリングされている場合は、RecordMap バッチ・オペレーション時に正常にフェイルオーバーできるように、すべてのミラー・メンバーが一時ファイルにアクセスできることが重要です。ミラーリングの詳細は、"Caché 高可用性ガイド" を参照してください。

ENSDEMO ネームスペースには、RecordMap バッチを使用してレコードのバッチをインポートおよびエクスポートする方法を示す RecordMapBatch の例が含まれています。

FeedbackOpens in a new tab