11 Oracle NoSQL Database表モデルへのOracle RDBMSデータ・モデルのマッピング
この項の例で示すように、Oracle NoSQL Database表に格納されたデータに対してOracle Big Data SQL問合せを実行するには、最初に、目的のOracle NoSQL Database表のスキーマからマップされたスキーマを使用してHive外部表を作成する必要があります。そのHive外部表を作成した後、Hive表のスキーマからマップされたスキーマを使用して、対応するOracle RDBMS外部表を作成する必要があります。そのためには、次の表に示すマッピングを適用します。
表11-1 データ型マッピング: Oracle NoSQL Database - Hive - RDBMS
Oracle NoSQL Databaseタイプ | Hiveタイプ | RDBMSタイプ |
---|---|---|
FieldDef.Type.STRING | STRING | VARCHAR2(N) |
CHAR | ||
VARCHAR | ||
FieldDef.Type.JSON | STRING | VARCHAR2(N) |
FieldDef.Type.BOOLEAN | BOOLEAN | VARCHAR2(5) |
FieldDef.Type.BINARY | BINARY | VARCHAR2(N) |
FieldDef.Type.FIXED_BINARY | BINARY | VARCHAR2(N) |
TINYINT | ||
SMALLINT | ||
FieldDef.Type.INTEGER | INT | NUMBER |
FieldDef.Type.LONG | BIGINT | NUMBER |
FieldDef.Type.FLOAT | FLOAT | NUMBER |
FieldDef.Type.NUMBER | DECIMAL | NUMBER |
FieldDef.Type.DOUBLE | DOUBLE | NUMBER |
FieldDef.Type.ENUM | STRING | VARCHAR2(N) |
FieldDef.Type.TIMESTAMP | java.sql.TIMESTAMP | TIMESTAMP |
DATE | ||
FieldDef.Type.ARRAY | ARRAY | VARCHAR2(N) |
FieldDef.Type.MAP | MAP<STRING, data_type> | VARCHAR2(N) |
FieldDef.Type.RECORD | STRUCT <col_name : data_type,...> | VARCHAR2(N) |
UNIONTYPE <data_type, data_type,...> |
Oracle Big Data SQLを使用してOracle NoSQL Database表のデータを問い合せる場合、作成するOracle外部表のスキーマは、対応するHive外部表のスキーマに依存し、さらに、問い合せるOracle NoSQL Database表のスキーマに依存していることを理解することが重要です。したがって、前述の表に示されているマッピングのいずれにも属さないデータ型を含むスキーマを使用していずれかのタイプの外部表が作成された場合は、表の問合せが試行されたときにエラーが発生します。
VARCHAR2(N)として指定されたOracle外部表のフィールドの場合、Nの値は、対応するHive表およびOracle NoSQL Database表の指定されたフィールドを表す可変長STRINGの最大文字数です。したがって、Oracle外部表の作成時にN
に指定する適切な値を決定するには、対応するHiveおよびOracle NoSQL Databaseフィールドの型、構造および予想される長さまたはサイズを使用する必要があります。