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フィールドの型、構造および予想される長さまたはサイズを使用する必要があります。