6.8.13 BLOBデータ,BINARYデータの部分的な更新・検索
(1) BLOBデータ,BINARYデータの部分的な更新・検索とは
登録されているBLOBデータ又はBINARYデータに対して,新たなデータを追加する場合にBLOBデータ又はBINARYデータを更新したり,BLOBデータ又はBINARYデータを検索する場合にBLOBデータ又はBINARYデータ全体を取得したりすると,サーバ及びクライアントの双方でBLOBデータ又はBINARYデータに合わせた長大なメモリを確保する必要があり,メモリ資源を圧迫します。
BLOBデータ,BINARYデータの部分的な更新・検索を行うと,メモリ使用量がBLOBデータ,BINARYデータ追加分,又はBLOBデータ,BINARYデータ抽出分だけになるため,メモリ資源の圧迫を防げます。
なお,BINARYデータの場合は,定義長が32,001バイト以上のデータに限ります。
- BLOBデータ,BINARYデータの追加更新:
-
UPDATE文のSET句に連結演算を指定することで,登録されているBLOBデータ又はBINARYデータに対して新たなデータを追加できます。
- BLOBデータ,BINARYデータの部分抽出:
-
スカラ関数SUBSTRを指定することで,BLOBデータ又はBINARYデータから,指定した部分だけを抽出できます。
- BLOBデータ,BINARYデータの後方削除更新:
-
UPDATE文のSET句に,処理対象列,及び開始位置として定数1を指定したスカラ関数SUBSTRを使用することで,BLOBデータ又はBINARYデータの後方部分だけを削除できます。
BLOBデータ,BINARYデータの部分的な更新・検索については,マニュアル「HiRDB UAP開発ガイド」を参照してください。
(2) BLOBデータ,BINARYデータの部分的な更新・検索の例
(a) BLOBデータの追加更新
複数のファイルを一つのBLOBデータとして格納します。BLOBデータの追加更新の例を次の図に示します。
- 〔説明〕
-
-
対象表(T1)の行AのC2列に,ファイル1のBLOBデータを挿入します。
-
行AのC2列に対して,ファイル2のBLOBデータを連結することで追加更新されます。これ以降にデータを追加する場合も同様です。
-
(b) BLOBデータの部分抽出
「BLOBデータの追加更新」で格納した行AのBLOBデータ(C2列)から,ファイル2の部分を抽出します。BLOBデータの部分抽出の例を次の図に示します。
- 〔説明〕
-
スカラ関数SUBSTRを使用して,行AのC2列の中からファイル2のデータ列の開始位置(100×1024+1=102401バイト目)から,ファイル2のデータ列の長さ分(200×1024=204800バイト)だけ抽出します。
(c) BLOBデータの後方削除更新
「BLOBデータの追加更新」で格納した行AのBLOBデータ(C2列)の後方部分を削除し,ファイル1とファイル2だけを残します。BLOBデータの後方削除更新の例を次の図に示します。
- [説明]
-
スカラ関数SUBSTRを使用して,ファイル1のデータ列の開始位置1バイト目から,ファイル1とファイル2の長さ分(100×1024+200×1024=307200バイト)だけを抽出したデータに置き換えて更新します。これによって,ファイル1とファイル2だけが残り,後方部分のデータは削除されます。