17.5 ORACLE_BIGDATA Apache Icebergへのアクセス
Oracle Big Data Access DriverでApache Icebergのオープン表形式を使用する方法を参照してください
- Apache Iceberg表の概要
ORACLE_BIGDATA
アクセス・ドライバを使用すると、ユーザーは、Oracle Database表に存在するデータと同様に、オブジェクト・ストアに格納されているデータにアクセスできます。 - Apache Icebergでサポートされている構成
Oracleは、カタログベースおよび非カタログ・ベースのデータをサポートし、Apache Iceberg表形式を使用したParquetデータ形式をサポートしています - Iceberg固有のアクセス・パラメータ
Oracleでは、Apache Iceberg表アクセスを定義するORACLE_BIGDATA
アクセス・パラメータをサポートしています。 - Iceberg表に対する表作成およびインライン外部表SQLの例
次の例は、マニフェスト・ファイルとAWS Glueカタログの両方を利用して、Oracle Databaseで表を作成し、Iceberg表に対して問合せを実行する方法を示しています。
親トピック: ORACLE_BIGDATAアクセス・ドライバ
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に格納されます。
非カタログ(ファイルベース)
-
マニフェスト・ファイル: Iceberg表のメタデータ/マニフェスト・ファイルへのパスを直接指定します。
ファイル形式
Oracle Databaseでは、Iceberg表のIParquetデータ形式がサポートされています。
17.5.3 Iceberg固有のアクセス・パラメータ
Oracleでは、Apache Iceberg表アクセスを定義するORACLE_BIGDATA
アクセス・パラメータがサポートされています。
表17-6 Iceberg固有のアクセス・パラメータ
パラメータ | 説明 | 必須 |
---|---|---|
|
表プロトコルの定義。これを |
あり |
|
カタログ詳細のJSON構成(AWS GlueやOCI Hadoop Catalogなど)。 |
オプション |
|
Iceberg表で使用されるファイル形式(例: |
あり |
17.5.4 Iceberg表に対する表作成およびインライン外部表SQLの例
次の例は、マニフェスト・ファイルとAWS Glueカタログの両方を利用して、Oracle DatabaseのIceberg表で表を作成し、問合せを実行する方法を示しています。
- マニフェスト・ファイルを指す表の作成
この例では、Icebergの特定のマニフェスト・ファイルを参照する外部表を作成します。 - インライン外部表問合せ(マニフェスト・ファイル・リファレンス)
この例では、データベース・オブジェクトは作成されません。かわりに、問合せはマニフェスト・ファイルを直接参照します。 - DBMS_CLOUDを使用した表の作成
この例では、DBMS_CLOUD.CREATE_EXTERNAL_TABLE
プロシージャを使用して外部表を定義します。 - AWS Glueをカタログとして使用した表の作成
この例では、DBMS_CLOUD.CREATE_EXTERNAL_TABLE
プロシージャを使用して外部表を定義します。 - AWS Glueカタログを使用したインライン外部表問合せ
この問合せでは、Amazon Webサービス・データ統合サービスAWS Glueをカタログとして参照するインライン外部表を使用します。 - AWS GlueカタログでのDBMS_CLOUDを使用した外部表の作成
この例では、Amazon Webサービス・データ統合サービスAWS Glueをカタログとして使用したDBMS_CLOUD.CREATE_EXTERNAL_TABLE
プロシージャの使用方法を示します。
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;