OceanBase データベースでは、JSON、空間データ、XML などの半構造化データ型をマルチモーダルデータ型として分類します。
マルチモーダルデータの特徴
- マルチモーダルデータ型は標準化されています。例えば、RFC8259 は JSON のデータ交換仕様であり、OGC(Open Geospatial Consortium)は座標系を記述し、座標系間の変換を定義するためのテキスト記法言語(WKT-CRS)を提供しています。また、W3C も XML の標準を定義しています。
- マルチモーダルデータは SQL で直接アクセスできます。マルチモーダルデータはすべて半構造化データであり、内部の基本データ型はすべて SQL データ型とマッピングできます。構造的には、論理木のカスケード方式により、一連の基本的な SQL データ型が組み合わさって複雑な複合データ型を形成します。
- マルチモーダルデータの計算関数は比較的固定されています。マルチモーダル型には標準化された形式があり、その形式ではデータの交換形式だけでなく、マルチモーダルデータの計算 API についても推奨事項が定められています。
マルチモーダルデータのクエリと計算
マルチモーダル型は構造が柔軟であり、データベースはマルチモーダル型の標準に基づき、マルチモーダルデータの構築、クエリ、計算をサポートする豊富な関数を提供しています。
- データ構築:例えば、JSON/XML は集約関数を提供し、リレーショナルテーブルから基本データを抽出し、特定の集約ルールに従って JSON/XML オブジェクトを構築します。
- データクエリ:例えば、JSON/XML はパス(Path)に基づいて、マルチモーダルデータオブジェクトの部分集合や特定の基本的な SQL 要素にアクセスできます。
- データ計算:例えば、空間関数を使用して空間オブジェクト間の関係を計算します。
マルチモーダルデータの格納
マルチモーダルデータ型は複合型であり、データは一般的に可変長で、非常に大きなマルチモーダルデータを構築することも可能です。格納の利便性のため、マルチモーダルデータは通常、BLOB データの格納機能を継承します。理論上、BLOB データの格納上限がマルチモーダルデータの上限ですが、実際には超大規模なマルチモーダルデータの計算や格納は非常に非効率的であるため、超大規模なマルチモーダルデータの構築は推奨されません。
- Text/Varchar2 型:標準的に定義されたテキスト形式に基づき、Text/Varchar2 型で直接データベースに格納できます。この方法の欠点は、マルチモーダルデータに対するクエリのたびに解析が必要なため、マルチモーダルデータの格納には推奨されないことです。
- ネイティブマルチモーダル型:格納されるデータ形式はすべてデータベースによって解析・最適化されており、一度マルチモーダルデータがデータベースに保存されると、次回のクエリ時に再解析されることはありません。また、格納容量においても一定の最適化が図られているため、ネイティブマルチモーダル型の使用を推奨します。
マルチモーダルデータのデータ交換
マルチモーダルデータはすべて、標準的に定義された形式に基づいて他のシステムとデータを交換します。
注意
- MySQLモードでは、現在のバージョンではマルチモーダルデータ型として空間データと JSON のみがサポートされています。
- MySQLモードでは、JSON ベースの仮想生成関数を使用することで、任意の JSON 内の子要素に対してセカンダリインデックスを構築できます。