1.3 LOB分類

LOBには、オーディオ、ビデオ、ドキュメントなどの様々なデータが格納されます。使用されるLOBまたはメモリー管理メカニズムに格納されているデータのタイプに基づいて、分類が異なります。

1.3.1 ラージ・オブジェクト・データ型

Oracle Databaseは、ラージ・オブジェクト・データ型セットをSQLデータ型として提供しますが、LOBという用語は一般的にこのセットを示します。

通常、この表と関連する各項に記載されているデータ型の説明は、他のプログラム環境で提供される対応するデータ型にも適用されます。

次の表では、データベースでサポートされるラージ・オブジェクトの各データ型について説明し、そのデータ型を使用するデータの種類を示します。

表1-1 ラージ・オブジェクト・データのタイプ

SQLデータ型 説明

BLOB

バイナリ・ラージ・オブジェクト

すべての種類のデータがバイナリ形式で格納されます。イメージ、オーディオおよびビデオに使用されます。

CLOB

キャラクタ・ラージ・オブジェクト

文字列データがデータベース文字セット形式で格納されます。データベース文字セットを使用する大きい文字列またはドキュメント専用です。データベース文字セットの文字は固定幅形式です。

NCLOB

各国語文字セット・ラージ・オブジェクト

文字列データ(通常はラージ文字列またはドキュメント)を各国語文字セット書式で格納します。可変幅形式の文字がサポートされます。

BFILE

外部バイナリ・ファイル

ホスト・オペレーティング・システムのファイル・システム内でデータベースの外部に格納される、データベース表からアクセス可能なバイナリ・ファイルです。BFILEには、アプリケーションから読取り専用でアクセスできます。BFILEは、アプリケーションで操作されない、イメージ・データなどの静的データを格納するために使用します。

BFILEには、あらゆる種類のデータ、つまり任意のオペレーティング・システム・ファイルを格納できます。たとえば、文字データをBFILEに格納し、ロード時に文字セットを指定してBFILEデータをCLOBにロードできます。

1.3.2 LOBのタイプ

この項では、Oracleでサポートされている3種類のLOBデータについて説明します。

永続LOB

永続LOBとは、データベースの表の行に存在するLOBインスタンスです。永続LOBは、データベース・トランザクションに関係します。トランザクションまたはメディアに障害が発生した場合は永続LOBをリカバリでき、永続LOB値に対する変更はすべてコミットまたはロールバックできます。つまり、データベース・オブジェクトに適用されるACID (Atomicity, Consistency, Isolation, and Durability)プロパティはすべて永続LOBに適用されます。永続LOBのデータ型は、BLOBCLOBおよびNCLOBです。

一時LOB

一時LOBは、ローカル・アプリケーションの有効範囲内でのみLOBをインスタンス化する場合に作成されます。一時LOBは、アプリケーションの他のローカル変数と同様に一時LOBです。一時LOBは、表の行に挿入すると永続LOBになります。一時LOBのデータ型は、BLOBCLOBおよびNCLOBです。

値LOBは、参照LOBに比べてパフォーマンスと管理性が高くなるように最適化された、特殊な種類の読取り専用一時LOBです。多くのアプリケーションでは、中規模オブジェクト(サイズが数MB程度)の格納にLOBが使用されるため、SQL問合せのコンテキストにおいてのみLOB値を読み取る必要があります。アプリケーションで大きいVARCHARまたはRAWデータ型としてLOBを使用する場合には、値LOBを使用することをお薦めします。

BFILE

BFILEは、オペレーティング・システム・ファイル内のデータベース表領域外に格納されたデータ・オブジェクトです。BFILE型の表列に格納されたデータは、データベースではなくオペレーティング・システム・ファイルに物理的に置かれます。

BFILEは読取り専用データ型です。データベースでは、BFILEに格納されているデータに対する読取り専用のバイト・ストリーム・アクセスが可能です。アプリケーション内でBFILEに対する書込みまたは更新を行うことはできません。

通常、BFILEは次のデータの格納に使用します。

  • 図形など、アプリケーションの実行中に変化しないバイナリ・データ

  • 後で操作できるようにBLOBCLOBのような他のラージ・オブジェクト型にロードされるデータ

  • マルチメディアなど、バイト・ストリーム・アクセスに適したデータ

ハード・ディスク・ドライブ、CD-ROM、PhotoCDおよびDVDなど、オペレーティング・システムからアクセスする任意のストレージ・デバイスにBFILEデータを保持できます。データベースでは、オペレーティング・システムが、これらのオペレーティング・システム・ファイルへのストリーム・モード・アクセスをサポートしている場合、BFILEにアクセスできます。

ノート:

BFILEに関連するすべての情報は、BFILEまたはLOBの管理: データベース管理に排他的に記載されています。

次の図に、様々な種類のLOBの間の関係をまとめます。

様々なLOBの間の関係

1.3.3 オブジェクト・データ型でのLOB

通常、LOB列またはオブジェクト・データ型でのLOBインスタンスのメンバーとしての使用に違いはありません。

このマニュアルでは、LOB属性はオブジェクト・データ型のメンバーであるLOBインスタンスを指します。特に明記しないかぎり、LOB列の説明はLOB属性にも該当します。

1.3.4 LOBに格納されるOracleデータ型

Oracle Databaseで提供される多くのデータ型は、LOB型として格納されるか、LOB型で作成されます。

次のリストに、LOB型とともに格納できるいくつかのデータ型を示します。

  • 4000バイトを超えるサイズのVARCHAR2データ型またはRAWデータ型
  • JSONデータ型
  • BINARY XMLまたはCLOBとして格納されるXMLType
  • LOBとして格納されるVARRAY