17.5 ORACLE_BIGDATA Apache Icebergへのアクセス

Oracle Big Data Access DriverでApache Icebergのオープン表形式を使用する方法を参照してください

17.5.1 Apache Iceberg表の概要

ORACLE_BIGDATAアクセス・ドライバを使用すると、ユーザーは、Oracle Database表にあるデータと同様に、オブジェクト・ストアに格納されているデータにアクセスできます。

ORACLE_BIGDATA機能が拡張され、広く採用されているオープン表形式であるApache Icebergのサポートが追加されました。この形式では、スキーマの進化、タイムトラベル問合せ、高速問合せ計画などの機能が導入されています。Icebergの統合により、データレイク内の外部データセットの効率的なデータ管理が可能になります。

Apache Icebergの主な機能:

  • 更新/削除: 更新および削除のシリアライズ可能な分離により、一貫性が向上します。
  • タイムトラベル問合せ: 履歴スナップショットを問い合せることができます。
  • スキーマの進化: データ移行なしで表スキーマの変更を管理できます。
  • パーティションの進化: 物理データ移動を実行せずに論理パーティション化を実行できます。
  • 拡張メタデータ: 拡張メタデータを使用すると、パーティション・プルーニングや列統計などの高度な最適化を設定できます。

17.5.2 Apache Icebergでサポートされている構成

Oracleは、カタログベースおよび非カタログベースのデータをサポートし、Apache Iceberg表形式を使用したParquetデータ形式をサポートしています。

カタログベース

  • AWS Glue Catalog: メタデータとデータは、AWS Glueによって管理されるAmazon S3に格納されます。

非カタログ(ファイルベース)

  1. マニフェスト・ファイル: Iceberg表のメタデータ/マニフェスト・ファイルへのパスを直接指定します。

ファイル形式

Oracle Databaseでは、Iceberg表のIParquetデータ形式がサポートされています。

17.5.3 Iceberg固有のアクセス・パラメータ

Oracleでは、Apache Iceberg表アクセスを定義するORACLE_BIGDATAアクセス・パラメータがサポートされています。

表17-6 Iceberg固有のアクセス・パラメータ

パラメータ 説明 必須

com.oracle.bigdata.access_protocol

表プロトコルの定義。これをicebergに設定する必要があります。

あり

com.oracle.bigdata.access_protocol.config

カタログ詳細のJSON構成(AWS GlueやOCI Hadoop Catalogなど)。

オプション

com.oracle.bigdata.fileformat

Iceberg表で使用されるファイル形式(例: Parquet)

あり

17.5.4 Iceberg表に対する表作成およびインライン外部表SQLの例

次の例は、マニフェスト・ファイルとAWS Glueカタログの両方を利用して、Oracle DatabaseのIceberg表で表を作成し、問合せを実行する方法を示しています。

17.5.4.1 マニフェスト・ファイルを指す表の作成

この例では、Icebergの特定のマニフェスト・ファイルを参照する外部表を作成します。

例17-14 マニフェスト・ファイルを指す表の作成

CREATE TABLE CUSTOMERS_ICEBERG
(
    CUSTOMER_ID NUMBER,
    FIRST_NAME VARCHAR2(64),
    LAST_NAME VARCHAR2(64),
    EMAIL VARCHAR2(64),
    SIGNUP_DATE DATE
)
ORGANIZATION EXTERNAL
(
    TYPE ORACLE_BIGDATA
    DEFAULT DIRECTORY DATA_PUMP_DIR
    ACCESS PARAMETERS
    (
        com.oracle.bigdata.fileformat=parquet
        com.oracle.bigdata.credential.name=AWS_S3_CREDENTIAL
        com.oracle.bigdata.access_protocol=iceberg
    )
    LOCATION ('iceberg:https://sales-data.s3.us-west-2.amazonaws.com/customers/metadata/00001-27da..ef5.metadata.json')
)
PARALLEL;

17.5.4.2 インライン外部表問合せ(マニフェスト・ファイル・リファレンス)

この例では、データベース・オブジェクトは作成されません。かわりに、問合せはマニフェスト・ファイルを直接参照します。

例17-15 インライン外部表の問合せ(マニフェスト・ファイル・リファレンス)

SELECT *
FROM EXTERNAL
(
    (
        CUSTOMER_ID NUMBER,
        FIRST_NAME VARCHAR2(64),
        LAST_NAME VARCHAR2(64),
        EMAIL VARCHAR2(64),
        SIGNUP_DATE DATE
    )
    TYPE ORACLE_BIGDATA
    ACCESS PARAMETERS
    (
        com.oracle.bigdata.fileformat=parquet
        com.oracle.bigdata.credential.name=AWS_S3_CREDENTIAL
        com.oracle.bigdata.access_protocol=iceberg
    )
    LOCATION ('iceberg:https://sales-data.s3.us-west-2.amazonaws.com/customers/metadata/00001-27da..ef5.metadata.json')
) t;

17.5.4.3 DBMS_CLOUDを使用した表の作成

この例では、DBMS_CLOUD.CREATE_EXTERNAL_TABLEプロシージャを使用して外部表を定義します。

例17-16 DBMS_CLOUDを使用した表の作成

BEGIN
    DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
        table_name => 'CUSTOMERS_ICEBERG',
        credential_name => 'AWS_S3_CREDENTIAL',
        file_uri_list => 'https://sales-data.s3.us-west-2.amazonaws.com/customers/metadata/00001-27da..ef5.metadata.json',
        format =>'{"access_protocol":{"protocol_type":"iceberg"}}'
    );
END;

17.5.4.4 AWS Glueをカタログとして使用した表の作成

この例では、DBMS_CLOUD.CREATE_EXTERNAL_TABLEプロシージャを使用して外部表を定義します。

例17-17 AWS Glueをカタログとして使用した表の作成

この例では、Amazon Web Serviceデータ統合サービスAWS GlueをIcebergカタログとして使用した表を定義します。

CREATE TABLE CUSTOMERS_ICEBERG
(
    CUSTOMER_ID NUMBER,
    FIRST_NAME VARCHAR2(64),
    LAST_NAME VARCHAR2(64),
    EMAIL VARCHAR2(64),
    SIGNUP_DATE DATE
)
ORGANIZATION EXTERNAL
(
    TYPE ORACLE_BIGDATA
    ACCESS PARAMETERS
    (
        com.oracle.bigdata.fileformat=parquet
        com.oracle.bigdata.credential.name=AWS_S3_CREDENTIAL
        com.oracle.bigdata.access_protocol=iceberg
        com.oracle.bigdata.access_protocol.config='{"iceberg_catalog_type": "aws_glue", "iceberg_glue_region": "us-west-2", "iceberg_table_path": "sales_db.customers"}'
    )
    LOCATION ('iceberg:')
)
PARALLEL;

17.5.4.5 AWS Glueカタログを使用したインライン外部表問合せ

この問合せでは、Amazon Web Serviceデータ統合サービスAWS Glueをカタログとして参照するインライン外部表を使用します。

例17-18 AWS Glueカタログを使用したインライン外部表問合せ

SELECT *
FROM EXTERNAL
(
    (
        CUSTOMER_ID NUMBER,
        FIRST_NAME VARCHAR2(64),
        LAST_NAME VARCHAR2(64),
        EMAIL VARCHAR2(64),
        SIGNUP_DATE DATE
    )
    TYPE ORACLE_BIGDATA
    ACCESS PARAMETERS
    (
        com.oracle.bigdata.fileformat=parquet
        com.oracle.bigdata.credential.name=AWS_S3_CREDENTIAL
        com.oracle.bigdata.access_protocol=iceberg
        com.oracle.bigdata.access_protocol.config='{"iceberg_catalog_type": "aws_glue", "iceberg_glue_region": "us-west-2", "iceberg_table_path": "sales_db.customers"}'
    )
    LOCATION ('iceberg:')
) t;

17.5.4.6 AWS GlueカタログでのDBMS_CLOUDを使用した外部表の作成

この例では、Amazon Web Serviceデータ統合サービスAWS Glueをカタログとして使用して、DBMS_CLOUD.CREATE_EXTERNAL_TABLEプロシージャの使用方法を示します。

例17-19 AWS GlueカタログでのDBMS_CLOUDを使用した外部表の作成

BEGIN
    DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
        table_name => 'CUSTOMERS_ICEBERG',
        credential_name => 'AWS_S3_CREDENTIAL',
        file_uri_list => '',
        format =>'{"access_protocol":{"protocol_type":"iceberg","protocol_config":{"iceberg_catalog_type": "aws_glue", "iceberg_glue_region": "us-west-2", "iceberg_table_path": "sales_db.customers"}}}'
    );
END;