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/XHTML/空間データ型
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データベースの現在のバージョンでは、点と点を円弧で結ぶことはサポートされていません。
空間データ型の詳細については、空間データ型の概要を参照してください。