BLOB
BLOB (Binary Large OBject) フィールド・変数・式とは、連続した可変長バイトであり、各バイトを個々にアドレス指定可能な 1つのまとまったオブジェクトとして取り扱うことができます。
BLOB は全体がメモリにロードされます。 BLOB変数はメモリ内にだけ保持され、存在します。 BLOBフィールドは、レコードの他フィールドと同様に、ディスクからメモリにロードされます。
大量のデータを保持できる他のフィールドタイプ (ピクチャーなど) と同様に、レコードを更新しても BLOBフィールドはメモリに複製されません。 したがって、Old
および Modified
コマンドを BLOBフィールドに適用しても、返される結果は意味を持ちません。
BLOB の種類
4Dランゲージでは、BLOB を扱う方法が 2つあります:
- スカラー値として: BLOB は BLOB変数またはフィールドに格納され、変更することができます。
- オブジェクト (
4D.Blob
) として:4D.Blob
は BLOBオブジェクトです。 オリジナルの BLOB を変更することなく、BLOBそのもの、またはその一部を4D.Blob
に格納できます。 この方法を ボクシング と呼びます。4D.Blob
をインスタンス化する方法については、Blobクラス を参照ください。
各 BLOBタイプには、それぞれ利点があります。 次の表を参考にして、どちらがニーズに合うかを確認してください:
BLOB | 4D.Blob | |
---|---|---|
変更可能 | ◯ | × |
オブジェクトやコレクション内で共有可能 | × | ◯ |
参照渡し* | × | ◯ |
バイトにアクセスする際のパフォーマンス | - | * |
最大サイズ | 2GB | メモリ |
参照で渡される BLOBオブジェクトとは異なり、スカラーBLOB はメソッドに渡されるとメモリ内で複製されることに注意してください。 メソッドを使用する場合は、参照によって渡される BLOBオブジェクト (4D.Blob
) を使用する方が効率的です。
デフォルトで、4D はスカラーBLOB の最大サイズを 2GB に設定していますが、OSや空き容量によっては、この制限サイズが小さくなる場合があります。
BLOB に演算子を適用することはできません。