11.2. データ管理
Cursoring and batching
Data Virtualization は、1 つのソースまたは多くのソースからのどれかに関係なく、結果に対してどのタイプの処理が行われたかに関係なく、すべての結果のカーソルを行います。
Data Virtualization プロセスにより、バッチ処理が行われます。バッチは、単にレコードのセットです。バッチの行数は、バッファーシステムプロパティー processor-batch-size によって決定され、バッチの推定メモリーフットプリントにスケーリングされます。
クライアントアプリケーションはバッチやバッチサイズに関する直接知識はなく、フェッチサイズを指定します。ただし、フェッチサイズに関係なく、最初のバッチは常に同期クライアントに事前に返されます。後続のバッチは、データのクライアント要求に基づいて返されます。クライアントレベルとコネクターレベルの両方で、事前フェッチが使用されます。
バッファー管理
バッファーマネージャーは、クエリーエンジンで使用されるすべての結果セットのメモリーを管理します。これには、接続ファクトリーから読み取られた結果セット、処理中に一時的に使用される結果セット、およびユーザーに準備される結果セットが含まれます。各結果セットはバッファーマネージャーでタプルソースとして参照されます。
バッファーマネージャーからバッチを取得する場合、バッチのサイズ(バイト単位)が推定され、最大限に対して割り当てられます。
メモリーの管理
バッファーマネージャーには、メモリーマネージャーとディスクマネージャーの 2 つのストレージマネージャーがあります。バッファーマネージャーはすべてのバッチの状態を維持し、バッチをメモリーからディスクに移動する必要があるタイミングを決定します。
ディスク管理
各タプルソースには、ディスク上の専用ファイル(ID によって名前)があります。このファイルは、タプルソースに対して少なくとも 1 つのバッチがディスクにスワップする必要がある場合にのみ作成されます。ファイルはランダムなアクセスです。processor バッチサイズプロパティーは、データが 2048 ビット以上であると仮定して、バッチに乗算的に存在すべき行数を定義します。行がそのターゲットより大きいか、または小さい場合、エンジンはそれらのタプルのバッチサイズを適宜調整します。バッチは、常にストレージマネージャー全体で読み取り、書き込みされます。
ディスクストレージマネージャーはオープンファイルの最大数を制限し、ファイルハンドルが不足しないようにします。バッファーが大きい場合、ファイルハンドルが利用可能になるまで待機している間に待機する可能性があります(デフォルトのオープンファイルは 64 です)。
Cleanup
タプルソースが必要なくなった場合は、バッファーマネージャーから削除されます。バッファーマネージャーはメモリーストレージマネージャーとディスクストレージマネージャーの両方から削除します。ディスクストレージマネージャーはファイルを削除します。さらに、すべてのタプルソースは、通常クライアントのセッション ID である「グループ名」でタグ付けされます。(接続、クライアントのシャットダウンまたは管理終了など)クライアントのセッションが終了すると、呼び出しがバッファーマネージャーに送信され、セッションのタプルソースすべてが削除されます。
さらに、クエリーエンジンがシャットダウンすると、バッファーマネージャーはシャットダウンされ、ディスクストレージマネージャーからすべての状態が削除され、すべてのファイルが閉じられます。クエリーエンジンが停止した場合に、クエリーエンジンの再起動で使用されていないため、バッファーディレクトリー内のファイルは安全に削除でき、バッファーファイルがクリーンアップされないシステムクラッシュが原因で実行する必要があります。