17.6 ORACLE_BIGDATAデルタ共有へのアクセス
Linux Foundation Projects Delta Sharingデータ共有プロトコルをOracle Big Data Access Driverとともに使用する方法を参照してください
- デルタ共有プロトコルの概要
ORACLE_BIGDATA
アクセス・ドライバでは、デルタ共有のオープン・プロトコルがサポートされるようになりました。 - Delta Sharing Protocolでサポートされている構成
Oracleは、カタログベースおよび非カタログ・ベースのデータをサポートし、Apache Iceberg表形式を使用したParquetデータ形式をサポートしています - デルタ共有用の資格証明の作成
次の例を使用して、Bearerトークン資格証明オブジェクトまたはクライアントID/シークレット資格証明オブジェクトを作成してデルタ共有にアクセスする方法を確認します。 - デルタ共有メタデータのリストと説明
LIST
ファイル形式を使用してリストする方法と、DESC
ファイル形式を使用してデルタ共有、スキーマおよび表を記述する方法を参照してください。 - デルタ共有アクセス・パラメータ
Oracleでは、デルタ共有アクセスを定義するORACLE_BIGDATA
アクセス・パラメータがサポートされています。 - デルタ共有用の外部表の作成の例
次の例は、Bearerトークン資格証明を使用して、クライアントID/シークレット資格証明を使用して表を作成する方法を示しています。
親トピック: ORACLE_BIGDATAアクセス・ドライバ
17.6.1 デルタ共有プロトコルの概要
ORACLE_BIGDATA
アクセス・ドライバは、Delta Sharingオープン・プロトコルをサポートするようになりました。
ORACLE_BIGDATA
アクセス・ドライバは、Linux Open Project Delta Sharingプロトコルをサポートしています。これは、Parquetに基づくオープン・プロトコルで、大規模なデータセットをセキュアかつスケーラブルにリアルタイムで共有できます。
親トピック: ORACLE_BIGDATAデルタ共有へのアクセス
17.6.2 Delta Sharing Protocolでサポートされている構成
Oracleは、カタログベースおよび非カタログベースのデータをサポートし、Apache Iceberg表形式を使用したParquetデータ形式をサポートしています。
アクセス・プロトコル: delta-sharing
デルタ共有データセットにアクセスするには、このプロトコルが必要です。
- Bearerトークン: この資格証明タイプは、一時アクセスに適しています。明示的なトークン・リフレッシュが必要です。
- クライアントID/シークレット: この資格証明タイプは、自動トークン・リフレッシュを有効にします。Oracleでは、Oracle管理のDelta Shareサーバーへの長期アクセスにこのタイプを使用することをお薦めします。
親トピック: ORACLE_BIGDATAデルタ共有へのアクセス
17.6.3 デルタ共有用の資格証明の作成
これらの例を使用して、Bearerトークン資格証明オブジェクトまたはクライアントID/シークレット資格証明オブジェクトを作成してDelta Sharingにアクセスする方法を確認します。
例17-20 デルタ共有用のBearerトークン資格証明の作成
BEGIN
DBMS_CREDENTIAL.CREATE_CREDENTIAL (
credential_name => 'DATABRICKS',
username => 'BEARER_TOKEN',
password => 'faaie590d541265bcab1f2de9813274bf233'
);
END;
例17-21 Oracle管理デルタ共有用のクライアントID/シークレット資格証明の作成
BEGIN
DBMS_CREDENTIAL.CREATE_CREDENTIAL (
credential_name => 'DRIVER_CLIENT_ID',
username => '_GEVd3cSVYYJtZ...68Q0VINQ..', -- client ID
password => 'IV3gncgr0p6Mk...1WwmQ2uUg..' -- client secret
);
END;
親トピック: ORACLE_BIGDATAデルタ共有へのアクセス
17.6.4 デルタ共有メタデータのリストと説明
LIST
ファイル形式をリストする方法と、DESC
ファイル形式を使用してデルタ共有、スキーマおよび表を記述する方法を参照してください。
例17-22 デルタ共有コンテンツのリスト
LIST
ファイル形式を使用して、デルタ共有、スキーマおよび表の内容をリストできます。場所パスによって、取得される詳細のレベルが決まります。たとえば:
SELECT DISTINCT url
FROM EXTERNAL (
( url VARCHAR2(200) )
TYPE ORACLE_BIGDATA
ACCESS PARAMETERS (
com.oracle.bigdata.fileformat = list,
com.oracle.bigdata.credential.name = DATABRICKS,
com.oracle.bigdata.access_protocol = delta_sharing
)
LOCATION (
'https://sharing.delta.io/delta-sharing/#', -- Shares
'https://sharing.delta.io/delta-sharing/#delta_sharing', -- Share schemas
'https://sharing.delta.io/delta-sharing/#delta_sharing.default' -- Share tables
)
REJECT LIMIT UNLIMITED
);
URL
--------------------------------------------------------------------------------
https://sharing.delta.io/delta-sharing/#delta_sharing.default.COVID_19_NYT
https://sharing.delta.io/delta-sharing/#delta_sharing.default.boston-housing
https://sharing.delta.io/delta-sharing/#delta_sharing.default.flight-asa_2008
https://sharing.delta.io/delta-sharing/#delta_sharing.default.lending_club
https://sharing.delta.io/delta-sharing/#delta_sharing.default.nyctaxi_2019
https://sharing.delta.io/delta-sharing/#delta_sharing.default.nyctaxi_2019_part
https://sharing.delta.io/delta-sharing/#delta_sharing.default.owid-covid-data
https://sharing.delta.io/delta-sharing/#delta_sharing.default
https://sharing.delta.io/delta-sharing/#delta_sharing
例17-23 デルタ共有表の説明
特定のデルタ共有表の列定義を取得するには、DESC
ファイル形式を使用します。たとえば:
SELECT *
FROM EXTERNAL (
(
"path" VARCHAR2(4000 BYTE),
"oratype" VARCHAR2(40 BYTE),
scale NUMBER,
precision NUMBER,
filetype VARCHAR2(400),
compression VARCHAR2(400),
"partoflist" NUMBER(1),
"depth" NUMBER(19)
)
TYPE ORACLE_BIGDATA
ACCESS PARAMETERS (
com.oracle.bigdata.credential.name = 'DATABRICKS',
com.oracle.bigdata.fileformat = desc,
com.oracle.bigdata.access_protocol = delta_sharing
)
LOCATION (
'https://sharing.delta.io/delta-sharing/#DELTA_SHARING.DEFAULT.BOSTON-HOUSING'
)
REJECT LIMIT UNLIMITED
)
ORDER BY "path";
path oratype SCALE PRECISION FILETYPE COMPRESSION partoflist depth
ID NUMBER(10) 0 10 Parquet snappy 1
age BINARY_DOUBLE 0 15 Parquet snappy 1
black BINARY_DOUBLE 0 15 Parquet snappy 1
chas NUMBER(10) 0 10 Parquet snappy 1
crim BINARY_DOUBLE 0 15 Parquet snappy 1
dis BINARY_DOUBLE 0 15 Parquet snappy 1
indus BINARY_DOUBLE 0 15 Parquet snappy 1
lstat BINARY_DOUBLE 0 15 Parquet snappy 1
medv BINARY_DOUBLE 0 15 Parquet snappy 1
nox BINARY_DOUBLE 0 15 Parquet snappy 1
ptratio BINARY_DOUBLE 0 15 Parquet snappy 1
rad NUMBER(10) 0 10 Parquet snappy 1
rm BINARY_DOUBLE 0 15 Parquet snappy 1
tax NUMBER(10) 0 10 Parquet snappy 1
zn BINARY_DOUBLE 0 15 Parquet snappy 1
親トピック: ORACLE_BIGDATAデルタ共有へのアクセス
17.6.5 デルタ共有アクセス・パラメータ
Oracleでは、デルタ共有アクセスを定義するORACLE_BIGDATA
アクセス・パラメータがサポートされています。
表17-7 Iceberg固有のアクセス・パラメータ
パラメータ | 説明 | 必須 |
---|---|---|
|
JSONプロファイル・ファイルで定義されているトークン・エンドポイント。 クライアントID/シークレット資格証明に必要です。 . |
オプション |
|
値: デルタ共有のプロトコル。 |
あり |
|
値: デルタ共有表にアクセスするときに使用します。このパラメータは省略可能で、デルタ共有アクセスのデフォルトです。 値: デルタ共有のメタデータの導出、スキーマの共有および表の共有に使用されます。 値: デルタ共有の列定義を取得するために使用されます。 |
オプション |
親トピック: ORACLE_BIGDATAデルタ共有へのアクセス
17.6.6 デルタ共有用の外部表の作成の例
次の例は、Bearerトークン資格証明を使用して、クライアントID/シークレット資格証明を使用して表を作成する方法を示しています。
例17-24 Bearerトークン資格証明の使用
この例では、既知のデルタ共有表を参照する外部表を作成します。
CREATE TABLE BOSTONHOUSING (
"ID" NUMBER(10,0),
"crim" BINARY_DOUBLE,
"zn" BINARY_DOUBLE,
"indus" BINARY_DOUBLE,
"chas" NUMBER(10,0),
"nox" BINARY_DOUBLE,
"rm" BINARY_DOUBLE,
"age" BINARY_DOUBLE,
"dis" BINARY_DOUBLE,
"rad" NUMBER(10,0),
"tax" NUMBER(10,0),
"ptratio" BINARY_DOUBLE,
"black" BINARY_DOUBLE,
"lstat" BINARY_DOUBLE,
"medv" BINARY_DOUBLE
)
ORGANIZATION EXTERNAL (
TYPE ORACLE_BIGDATA
DEFAULT DIRECTORY "DATA_PUMP_DIR"
ACCESS PARAMETERS (
com.oracle.bigdata.credential.name = 'DATABRICKS',
com.oracle.bigdata.fileformat = parquet,
com.oracle.bigdata.access_protocol = delta_sharing
)
LOCATION (
'https://sharing.delta.io/delta-sharing/#DELTA_SHARING.DEFAULT.BOSTON-HOUSING'
)
)
REJECT LIMIT UNLIMITED
PARALLEL;
Alternatively, user can create table with dbms_cloud package:
BEGIN
DBMS_CLOUD.CREATE_EXTERNAL_TABLE
( TABLE_NAME => 'BOSTONHOUSING'
,CREDENTIAL_NAME => 'DATABRICKS'
,FILE_URI_LIST => 'https://sharing.delta.io/delta-sharing/#DELTA_SHARING.DEFAULT.BOSTON-HOUSING'
,COLUMN_LIST => '"ID" NUMBER(10)
,"crim" BINARY_DOUBLE
,"zn" BINARY_DOUBLE
,"indus" BINARY_DOUBLE
,"chas" NUMBER(10)
,"nox" BINARY_DOUBLE
,"rm" BINARY_DOUBLE
,"age" BINARY_DOUBLE
,"dis" BINARY_DOUBLE
,"rad" NUMBER(10)
,"tax" NUMBER(10)
,"ptratio" BINARY_DOUBLE
,"black" BINARY_DOUBLE
,"lstat" BINARY_DOUBLE
,"medv" BINARY_DOUBLE'
,FORMAT => '{
"type" : "parquet",
"access_protocol" : "delta_sharing"
}'
);
END;
例17-25 クライアントID/シークレット資格証明の使用
Oracle管理のデルタ共有表の場合、自動トークン・リフレッシュ用のトークン・エンドポイントを含めます。たとえば:
CREATE TABLE DRIVER_REFRESH (
"DRIVER_ID" INTEGER,
"NAME" VARCHAR2(4000 BYTE),
"POINTS" INTEGER,
"TEAM_ID" INTEGER
)
ORGANIZATION EXTERNAL (
TYPE ORACLE_BIGDATA
DEFAULT DIRECTORY "DATA_PUMP_DIR"
ACCESS PARAMETERS (
com.oracle.bigdata.credential.name = 'DRIVER_CLIENT_ID',
com.oracle.bigdata.delta_sharing.token_endpoint = 'https://abcde...xyz.adb.ap-tokyo-1.oraclecloudapps.com/ords/jason/oauth/token',
com.oracle.bigdata.fileformat = parquet,
com.oracle.bigdata.access_protocol = delta_sharing
)
LOCATION (
'https://abcde...xyz.adb.ap-tokyo-1.oraclecloudapps.com/ords/jason/_delta_sharing#DELTA23AIPROD.JASON.DRIVER'
)
)
REJECT LIMIT UNLIMITED
PARALLEL;
親トピック: ORACLE_BIGDATAデルタ共有へのアクセス