OceanBaseデータベースでは、JSON/GIS/XMLなどの半構造化データをマルチモーダルデータ型として分類します。
マルチモーダルデータの特徴
- マルチモーダルデータ型は標準化されており、例えばRFC8259はJSONのデータ交換規格であり、OGC(Open Geospatial Consortium)は座標系およびその間の変換を記述するための一連のテキストマークアップ言語(WKT-CRS)を提供しています。また、W3CもXMLの標準を定義しています。
- マルチモーダルデータはSQLによって直接アクセス可能です。マルチモーダルデータはすべて半構造化データであり、内部の基本型はすべてSQL型とマッピングできます。マルチモーダルデータは構造上、論理ツリーのカスケード方式を通じて、一連の基本的なSQL型を複雑な複合データ型に組織します。
- マルチモーダルデータの計算関数は比較的固定されています。マルチモーダル型には標準化された形式があり、その標準化された形式ではデータの交換形式だけでなく、マルチモーダルデータの計算APIについても推奨事項が定められています。
マルチモーダルデータのクエリと計算
マルチモーダル型は柔軟な構造を持ち、データベースはマルチモーダル型の標準に基づいて、マルチモーダルデータの構築、クエリ、計算をサポートする豊富な関数を提供しています。
- データ構築:例えば、JSONやXMLは集約関数を提供し、リレーショナルテーブルから基本データを抽出し、特定の集約ルールを組み合わせることで、JSONやXMLオブジェクトを構築します。
- データクエリ:例えば、JSONやXMLはパスに基づいてマルチモーダルデータオブジェクトの部分集合や特定の基本的なSQL要素にアクセスできます。
- データ計算:例えば、GISの関数を利用して空間オブジェクト間の関係を計算します。
マルチモーダルデータのストレージ
マルチモーダルデータ型は複合型であり、データは一般的に可変長であり、非常に大きなマルチモーダルデータを構築することも可能です。ストレージの利便性を考慮し、マルチモーダルデータは通常、大規模オブジェクトデータのストレージ機能を継承します。理論的には、大規模オブジェクトデータのストレージ上限がマルチモーダルデータの上限となりますが、実際には非常に大きなマルチモーダルデータの計算やストレージは非常に非効率的であるため、超大規模なマルチモーダルデータの構築は推奨されません。
- CLOB/VARCHAR2型:標準で定義されたテキスト形式に基づき、CLOB/VARCHAR2を直接データベースに保存できます。この方法の欠点は、マルチモーダルデータへのクエリのたびに解析が必要になるため、マルチモーダルデータのストレージにはこの方法を推奨しません。
- ネイティブマルチモーダル型:ストレージされるデータ形式はすべてデータベースによって解析最適化されており、一度マルチモーダルデータがデータベースに保存されると、次回のクエリ時に再解析されることはなく、ストレージ容量においても一定の最適化が図られています。そのため、ネイティブマルチモーダル型を使用したストレージを推奨します。
マルチモーダルデータのデータ交換
マルチモーダルデータはすべて標準で定義された形式に基づいて他のシステムとデータ交換を行います。
注意
Oracleモードでは、JSONに基づく仮想生成関数を使用して、任意のJSON内のサブ要素にセカンダリインデックスを作成できます。
JSON/XML/GISデータ型
JSONデータ型
OceanBaseデータベースは、ECMA-404およびIETF RFC 8259標準で定義されているJSON(JavaScript Object Notation)データ型をサポートしています。JSON標準によれば、JSON値はオブジェクト、配列、数値、文字列、ブール値(trueまたはfalseの値)、またはnull(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データベースの現行バージョンでは、点間を円弧で接続することはサポートされていません。
空間データ型の詳細については、空間データ型の概要を参照してください。