OceanBaseデータベースが現在サポートしているボールドオブジェクトデータ型には、CLOBとBLOBが含まれます。
1つのLOBオブジェクトは、データとデータを位置特定するための関連情報(ロケーター)で構成されており、その関連情報にはテーブルIDや行IDなどが含まれ、このオブジェクトが対応するテーブルのどの行のデータであるかを特定できます。現在、大規模オブジェクトのストレージはVARCHAR型と同様に、データ部分のみを保存しており、クエリ時には上位インターフェースがロケーター部分を生成します。
LOBオブジェクトは、任意の同一型のオブジェクトに代入できます。通常、ユーザーはアプリケーション内でLOBオブジェクトを使用でき、ロケーターのセマンティクスを考慮する必要はありません。一部のシナリオでは、ロケーターが必須ですが、他のシナリオでは冗長なロケーター情報を含むこともできます。
LOBオブジェクトの読み取りや変更には、ロケーターを使用することも、使用しないこともできます。
ロケーターを使用しない方法
多くの操作において、LOBオブジェクトはVARCHAR2やRAW型と類似しており、これらの操作ではデータのみが使用され、ロケーター部分は無視されます。このような操作には以下が含まれます:
SQLおよびPLの組み込み関数
ユーザーが
LOB列のデータを照会したり、LOB列にデータを挿入したりできる以下のインターフェース:LOB列の変数をバインドして、CLOB列に文字データを挿入したり、BLOB列にRAWデータを挿入したりします。例えば、PLではVARCHAR2バッファをCLOB列に挿入できます。アプリケーションで、
CLOBから照会した文字データ、またはBLOBから照会したRAWデータを出力として定義します。例えば、PLでは照会結果のCLOBをVARCHAR2バッファに格納できます。
ロケーターを使用する方法
OceanBaseデータベースが提供するLOB APIを使用し、LOBオブジェクトをパラメータとして渡します。これらのAPIはほとんどがDBMS_LOBパッケージに含まれており、DBMS_LOB.READ、DBMS_LOB.WRITE、DBMS_LOBUPDATEなどがあります。