OceanBaseデータベースでは、JSON、空間データ、XMLなどの半構造化データ型をマルチモーダルデータ型に分類します。
マルチモーダルデータの特徴
- マルチモーダルデータ型は標準化されています。例えば、RFC8259はJSONのデータ交換仕様であり、OGC(Open Geospatial Consortium)は座標系を記述するためのテキストマークアップ言語(WKT-CRS)および座標系間の変換方法を提供しています。また、W3CもXMLの標準を定義しています。
- マルチモーダルデータはSQLで直接アクセスできます。マルチモーダルデータはすべて半構造化データであり、内部の基本型はすべてSQL型とマッピング可能です。構造的には、論理木のカスケード方式により、一連の基本的なSQL型が組み合わさって複雑な複合データ型を形成します。
- マルチモーダルデータの計算関数は比較的固定されています。マルチモーダル型には標準化された形式があり、その形式ではデータの交換形式だけでなく、マルチモーダルデータの計算APIについても推奨事項が定められています。
マルチモーダルデータのクエリと計算
マルチモーダル型は構造が柔軟であり、データベースはマルチモーダル型の標準に基づき、マルチモーダルデータの構築、クエリ、計算をサポートする豊富な関数を提供しています。
- データ構築:例えば、JSONやXMLは集約関数を提供し、リレーショナルテーブルから基本データを抽出し、特定の集約ルールと組み合わせることで、JSONやXMLオブジェクトを構築できます。
- データクエリ:例えば、JSONやXMLではパスを基にマルチモーダルデータオブジェクトの部分集合や特定の基本的なSQL要素にアクセスできます。
- データ計算:例えば、空間関数を利用して空間オブジェクト間の関係を計算できます。
マルチモーダルデータの格納
マルチモーダルデータ型は複合型であり、データは一般的に可変長で、非常に大きなマルチモーダルデータを構築できます。格納の利便性のため、マルチモーダルデータは通常、BLOBデータの格納機能を継承します。理論上、BLOBデータの格納上限がマルチモーダルデータの上限ですが、実際には超大規模なマルチモーダルデータの計算や格納は非常に非効率的であるため、超大規模なマルチモーダルデータの構築は推奨されません。
- CLOB/VARCHAR2型:標準で定義されたテキスト形式に基づき、CLOB/VARCHAR2型で直接データベースに格納できます。この方法の欠点は、マルチモーダルデータに対するクエリのたびに解析が必要なため、マルチモーダルデータの格納には推奨されません。
- ネイティブマルチモーダル型:格納されるデータ形式はすべてデータベースによって解析最適化されており、一度マルチモーダルデータがデータベースに保存されると、次回のクエリ時に再解析されることはありません。また、ストレージ容量にも一定の最適化が施されているため、ネイティブマルチモーダル型の使用を推奨します。
マルチモーダルデータのデータ交換
マルチモーダルデータはすべて標準で定義された形式に基づき、他のシステムとデータを交換します。
注意
Oracleモードでは、JSONに基づく仮想生成関数を使用することで、任意のJSON内の子要素に対してセカンダリインデックスを構築できます。
JSON / XML / 空間データ型
JSON データ型
OceanBase データベースは、ECMA-404 および IETF RFC 8259 標準で定義されている JSON(JavaScript Object Notation)データ型をサポートしています。JSON 標準によると、JSON 値はオブジェクト、配列、数値、文字列、ブール値(true または false)、null(value null)のいずれかであり、これらはすべて JSON 言語のデータ型に属します。オブジェクトと配列を除くすべての値はスカラーです。
JSON では、各プロパティ名と各文字列値は二重引用符 (") で囲む必要があります。
JSON の文字列は Unicode 文字で構成され、バックスラッシュ () でエスケープされます。JSON 数字(数値)は十進法で表現されます。オブジェクトのプロパティは通常フィールドと呼ばれ、オブジェクトの name–value ペアは通常オブジェクトメンバーと呼ばれます(ただし、メンバーはプロパティのみを指す場合もあります)。JSON 配列の要素は括弧 ([, ]) で囲まれ、各要素はオブジェクト、配列、またはスカラー値であり、複数の要素はカンマ (,) で区切られます。また、配列要素の順序に注意する必要があります。
JSON データ型の詳細については、JSON データ型の概要を参照してください。
XML データ型
XMLType は XML データの SQL データ型です。これは抽象データ型であり、XMLType コンストラクタとさまざまな XML 操作に関連する PL 方法を提供します。 XMLType の使用方法は他の SQL データ型と同じです。例えば、XMLType テーブルやビューを作成することができます。PL ストアドプロシージャ内では、XMLType をパラメータ、戻り値、変数として使用できます。
XML データ型の詳細については、XMLType データ型の概要を参照してください。
空間データ型
空間データ型は、地理空間情報の格納と処理に使用されるデータ型です。OceanBase データベースの Oracle モードは、空間データ型 SDO_GEOMETRY をサポートしています。SDO_GEOMETRY は、幾何図形データの格納と処理に使用されるデータ型であり、二次元または三次元の幾何図形を表すための複合データ型です。
OceanBase データベースの Oracle モードの現在のバージョンは、OGC(OpenGIS Consortium)が定義した 7 種類の空間オブジェクトタイプのみをサポートしています。これらは Point(点)、Linestring(線)、Polygon(ポリゴン)、Multipoint(複数点)、Multilinestring(複数線)、Multipolygon(複数ポリゴン)、Collection(コレクション)であり、それぞれが接続された点のシーケンスで構成されています。空間次元においては、二次元および三次元の空間データをサポートしています。
注意
OceanBase データベースの現在のバージョンでは、点と点を円弧で結ぶことはサポートされていません。
空間データ型の詳細については、空間データ型の概要を参照してください。