これは InterSystems FAQ サイトの記事です。
仮想ドキュメント(以降VDOC)とは複雑な構造のドキュメント(メッセージ)を効率良く高速に処理するために考えられたメッセージ処理の仕組みです。
HL7に代表される EDI 標準は電子データ交換のための汎用的なかなり複雑なメッセージ形式を含んでいます。
また、メッセージの種類を増やすと運用が複雑になってしまうため、1 つのメッセージに様々なデータを詰め込む傾向があります。
その結果 1 つのメッセージは複雑かつデータ量が多いものになりがちです。
一方、実際のメッセージ交換では、メッセージの全てのデータを処理することはまれで一部のデータのみが必要となるケースがほとんどです。
複雑なメッセージ構造から必要な項目を抽出して処理する際、メッセージを InterSystems IRIS data platform のオプジェクト指向フレームワークに基づき一度オブジェクトとしてインスタンス化することで処理を簡潔に記述できます。
しかし、データ量の多いメッセージを解析しオブジェクトにインスタンス化する処理は非常に負荷のかかる処理で、しかも大量のメッセージを処理しなければならない場合は求められるスループットを満たせない状況になりがちです。
しかも必要なデータは「全体の中のほんの少し」という状況の場合、無駄の多い処理となります。
この課題を解決するために考えられたのが VDOC (Virtual Document) です。
VDOC のメッセージは、オブジェクトとしてインスタンス化せずそのままの形式で読み込みますが、メッセージを処理するコードの中ではオブジェクトの操作と同様の表記で記述が行えます。
記述したコードがコンパイルされるとき、予め用意されたメッセージ形式に関するスキーマ情報と突き合わせることで実際のメッセージ上の位置や文字数などの情報を特定し、その情報に基づいてメッセージ項目にアクセスするコードを自動生成します。
こうすることでプログラム実行時、オブジェクトをインスタンス化せず直接メッセージ上の特定の位置からデータを取得することができます。