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