大容量データの対応
大容量データの対応
HULFT Squareでは、大容量データを扱った際にメモリ不足にならないように、スマートコンパイラと大容量データ処理という2つの機構を用意しています。
デフォルトではスマートコンパイラは有効です。スマートコンパイラは理論上データ容量の制限がないパラレルストリーミング処理(以下:PSP)を自動で適用する機能です。
PSPでは、ブロックごとに分割されているデータの読み取り、変換、および書き込みといった一連の流れをマルチスレッドで処理するため、大容量データを高速に処理できます。
ただし、機構の特性上すべての処理がPSPに対応しているわけではありません。
-
スマートコンパイラの詳細については、「スマートコンパイラ」を参照してください。
-
PSPの詳細については、「パラレルストリーミング処理」を参照してください。
大容量データ処理とは
通常の処理はすべてのデータをメモリ中に保持しますが、大容量データ処理は処理に必要な最低限のデータのみメモリに格納し、ほかのデータをファイルに保存することで、大容量のデータの処理を実現できます。
コンポーネントの処理で大容量のデータを扱う場合(主にコネクターの読み込み処理)に、スクリプトの設定またはコネクターの設定で大容量データ処理を行うを選択します。
テーブルモデル型のすべてのコネクターおよび、一部のXML型コネクター(大容量データ処理タブがあるのもの)、Mapperが大容量データ処理に対応しています。
大容量データ処理を行った場合、テーブルモデル型コンポーネント、XML型コンポーネント、Mapperいずれも結果データをメモリ中に保持するのではなく、ストレージに保存されます。
メモリ中には実際に処理を行うために必要な最小限のデータだけが格納されます。
XML型では固定のバッファサイズ分、または1ノードあたりのデータごとにメモリに格納されています。
テーブルモデル型では1行分のデータごとにメモリに格納されます。1行分読み終えると、ファイルに保存されます。
ファイルに書き出される際には書き込みバッファにデータが書き込まれるため、実際に1行ごとにファイルに書き込まれているわけではありません。
結果データをファイルに保存するため、結果データ分(XML型の場合には要素名などのデータ量も考慮に入れる必要があります。)のディスク空き容量が必要となります。
生成されるファイルは結果データを使用するスクリプトが終了するタイミングで削除されます。