ビデオで説明されている操作の他、以下の点についても留意してください:
BLOBについてよく聞かれる質問があります:
- これは何をするためのもので、どのような場合に使用すればよいのでしょうか
- BLOBになんでも入れられることは分かりました。でもどうやって?またどうやって取り出せばよいのでしょうか
まず2つ目の質問に取り組んでみましょう:
BLOBでは任意のバイトにアクセスできますが、ほとんどのケースでFIFO (First In First Out) と呼ばれる手法を採用することになります。つまりBLOBに入れた順番にBLOBからデータを取り出すのです。
例えば以下のようになります:
- 倍長整数 4 byte
- 日付 6 byte
- テキスト (内容やフォーマットにより可変)
これらのデータを読み出すには、この順番を使用します。つまり最初に倍長整数を読み出します。読みだす値を受け取る変数は、格納された値に対応していなければなりません。
一番目の問い (BLOBの目的は) への答えは以下の通りです:
- 変数やリスト、配列を格納する
- クライアントサーバー間でドキュメントを転送する
- BLOBを暗号化することで内容を保護する
- 変数の内容を保存する
- Webサーバーからピクチャー、テキスト、ドキュメントなど任意のタイプのレスポンスを返信する
- 等
VARIABLE TO BLOBコマンドは4Dの内部的なフォーマットでデータをBLOBに格納します。このときデータに関する情報が付加されるため、BLOBのサイズはデータの実サイズよりも多く増大します。このコマンドの利点は4D内部でBLOBを使用する限り、バイトスワップを気にする必要がないということです。
BLOBに値を格納する際、BLOBのアドレスを指定する代わりに * 引数を指定すると、4Dは自動でBLOBの最後にデータを追加します。
例としてデータベースの環境設定を保存し、読み込むケースを考えてみましょう:
- 初期画面
- 背景色
- 文字フォント名とサイズ
- 等
これらは環境設定として、ユーザーが変更することも可能です。
これらを保存するため複数の方法が考えられます (テーブルレコード、テキストファイル、XML等)。
もちろんBLOBを使用することもできます。BLOBをディスクファイルに読み書きするにはBLOB TO DOCUMENTやDOCUMENT TO BLOBコマンドを使用します。
転送時間を削減するため、BLOBを圧縮することもできます。ただし4Dのコマンドでは255 byteより大きなBLOBしか圧縮されない点に留意してください。
BLOBを解凍する際、その前にBLOBが圧縮されたものかどうかを確認してください。圧縮されていないBLOBを解凍しようとするとエラーになります。