5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Oracle Cloud]OCI Data Catalogを使ったAutonomous DatabaseからObject Storageファイルの検索 (2022/01/26)

Posted at

はじめに

OCI Data Catalogは、データの専門家がデータを発見し、データガバナンスをサポートするのに役立つメタデータ管理サービスです。

OCI Data Catalogについては以下を参照ください。

Data Catalogによって収集された論理エンティティ(Object Storageのオブジェクト)をAutonomous Databaseに同期することで外部表としてアクセスすることが可能になります。
この機能によって、外部データソースのスキーマ(カラムとデータ型)を確認し、外部表を手動で作成することなく、すぐにデータを照会することが可能です。
同期処理はジョブとして実行され、基礎となるデータの変更に対してAutonomous Databaseを最新の状態に保ち、数百から数千のテーブルを自動的に維持するため管理コストが削減できます。

構成ステップ

  1. OCI Data Catalogの準備
    • Data Catalogの作成
    1. ファイル名パターンの作成
    2. Object Storageに対するデータ・アセットの作成
  2. アイデンティティの準備
    • 動的グループの作成
    • ポリシーの作成
  3. OCI Data CatalogでObject Storage バケットから収集
  4. Autonomous Databaseでの操作
    • Resource Principalの有効化
    1. Data Catalogへの接続
    2. Data Catalogとの同期の実行
    3. 外部表へアクセス

OCI Data Catalogの準備

データ・カタログの作成

アナリティクスとAI > データ・カタログ > データ・カタログ から データ・カタログの作成をクリック
image.png

image.png

image.png

ファイル名パターンの作成

データ・カタログのクイック・アクションから ファイル名パターンの管理 から ファイル名パターンを作成
image.png

式に以下を指定

{bucketName:[A-Za-z0-9\.\-_]+}/{logicalEntity:[^\.\/]+}.*$

image.png

Object Storageに対するデータ・アセットの作成

データ・カタログのクイック・アクションから データ・アセットの作成
image.png

  • タイプ:Oracle Object Storage
  • URL:https://swiftobjectstorage..oraclecloud.com (Object Storageのリージョンを指定)
  • ネームスペース:当該テナントのObject Storageネームスペース

image.png

接続の追加

  • タイプ:Resource Principal
  • OCIリージョン:Object Storageのリージョンを指定
  • コンパートメントOCID:Object StorageバケットがあるコンパートメントのOCID

image.png

テスト接続をし確認

ファイル名パターンの割当て

作成したObject Storageのデータアセットに対して事前に作成した「ファイル名パターン」を割当て

image.png

アイデンティティの準備

動的グループの作成

アイデンティティとセキュリティ > 動的グループ から 動的グループの作成をクリック
リソースプリンシパルに使用する動的グループを作成
一致ルールにデータカタログのOCIDとAutonomous DatabaseのOCIDを指定

image.png

ポリシーの作成

作成した動的グループに対して、Object StorageとData Catalogの操作を許可

ポリシーの例

allow dynamic-group datacatalog-group to manage object-family in tenancy
allow dynamic-group datacatalog-group to manage data-catalog-family in tenancy

OCI Data CatalogでObject Storage バケットから収集

データカタログでOracle Object Storageのデータ・アセットを選択し、収集をクリック

image.png

接続の確認

image.png

収集対象のデータ・エンティティ(バケット)の選択

image.png

「今すぐジョブを実行」を選択し「ジョブの作成」

image.png

収集結果の確認
Object Storageのデータ・アセットから割当てたファイル名パターンの詳細を表示

image.png

論理データ・エンティティが表示されることを確認

image.png

Autonomous Databaseでの操作

Resource Principalの有効化

ADMINユーザでAutonomous Databaseに接続しSQLを実行

SQL> EXEC DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL(username => '<ADB_USER名>’);
-- ( ADMIN ユーザへは EXEC DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL(); でも可 )

PL/SQL procedure successfully completed.

-- 確認
SQL> SELECT owner, credential_name FROM dba_credentials WHERE credential_name = 'OCI$RESOURCE_PRINCIPAL’;

OWNER CREDENTIAL_NAME        
----- ---------------------- 
ADMIN OCI$RESOURCE_PRINCIPAL 

-- Object Storage へのアクセス確認 (バケット内のファイルが表示されることを確認)
SQL> select * from dbms_cloud.list_objects('OCI$RESOURCE_PRINCIPAL', '&uri_private’);
-- ( &uri_private には 環境に合わせて https://objectstorage.<region>.oraclecloud.com/n/<namespace>/b/<bucket名>/o/  を指定 )

OBJECT_NAME        BYTES CHECKSUM                 CREATED                  LAST_MODIFIED            
------------------ ----- ------------------------ ------------------------ ------------------------ 
salesdata4APEX.csv 58811 BCBp2thUrEXS5jiaAa1Aa1== 2022-01-24T00:00:00.000Z 2022-01-24T00:00:00.000Z 

Data Catalogへの接続

ADMINユーザでAutonomous Databaseに接続しSQLを実行

-- credentials のセット
SQL> exec dbms_dcat.set_data_catalog_credential(credential_name => 'OCI$RESOURCE_PRINCIPAL');

PL/SQL procedure successfully completed.

SQL> exec dbms_dcat.set_object_store_credential(credential_name => 'OCI$RESOURCE_PRINCIPAL');

PL/SQL procedure successfully completed.


-- Data Catalogへの接続
SQL> begin
   dbms_dcat.set_data_catalog_conn (
     region => '&dcat_region',
     catalog_id => '&dcat_ocid');
end;
/

-- dcat_region : Data Catalogのリージョン ap-tokyo-1 など
-- dcat_ocid : Data Catalogの OCID

PL/SQL procedure successfully completed.

-- connectionの確認
SQL> select * from all_dcat_connections;

COMPARTMENT_ID           INSTANCE_ID                            REGION     ENDPOINT CREATED     NAME        LAST_UPDATED        LAE  DATA_CATALOG_CREDENTIAL      OBJECT_STORE_CREDENTIAL      
------------------------ -------------------------------------- ---------- -------- ----------- ----------- ------------------- ---  ---------------------------- ---------------------------- 
ocid1.tenancy.oc1..aaaaa ocid1.datacatalog.oc1.ap-tokyo-1.aaaaa ap-tokyo-1  2022-01-24T00:00:00 DataCatalog 2022-01-24T00:00:00  21  ADMIN.OCI$RESOURCE_PRINCIPAL ADMIN.OCI$RESOURCE_PRINCIPAL 

Data Catalogとの同期の実行

ADMINユーザでAutonomous Databaseに接続しSQLを実行

-- Data Catalog と Autonomous Databaseの同期 ( すべてのアセットを対象にする例 )

SQL> begin
 dbms_dcat.run_sync('{"asset_list":["*"]}');
end;
/

PL/SQL procedure successfully completed.

-- ログ表名の確認 
SQL> select type, start_time, status, logfile_table from user_load_operations order by start_time;

TYPE      START_TIME               STATUS    LOGFILE_TABLE      
--------- ------------------------ --------- ------------------ 
DCAT_SYNC 2022-01-24T01:00:00.000Z COMPLETED "DBMS_DCAT$21_LOG" 

-- 該当する時間の Logfile_Table にログが出力される
SQL> select * from dbms_dcat$21_log;

-- <省略>

-- 同期により作成された外部表の確認
SQL> select * from dcat_entities;

ASSET_KEY                            ENTITY_KEY                           FOLDER_KEY                           ORACLE_TABLE_NAME ORACLE_SCHEMA_NAME        ENTITY_ORACLE_DB_SCHEMA ASSET_ORACLE_DB_SCHEMA FOLDER_ORACLE_DB_SCHEMA 
------------------------------------ ------------------------------------ ------------------------------------ ----------------- ------------------------- ----------------------- ---------------------- ----------------------- 
65298a31-1211-4ab2-a0a4-754b71850aee 73be4374-714e-4d86-8c9f-524790828356 f8556d46-684b-451c-890c-31d38f8ab8ba SALESDATA         DCAT$SCHEMA_BUCKET                                schema                                       

SQL> select * from dcat_attributes;

ASSET_KEY                            ENTITY_KEY                           ATTRIBUTE_KEY                        ORACLE_COLUMN_NAME 
------------------------------------ ------------------------------------ ------------------------------------ ------------------ 
65298a31-1211-4ab2-a0a4-754b71850aee be813751-47ad-48f9-9bb8-ea5e6ae2a501 88d99602-0d56-40a8-b03b-2b179a4e588b "店舗名"             
65298a31-1211-4ab2-a0a4-754b71850aee be813751-47ad-48f9-9bb8-ea5e6ae2a501 9cb626ae-6375-4275-a07a-9888239d5b64 "店舗住所"             
65298a31-1211-4ab2-a0a4-754b71850aee be813751-47ad-48f9-9bb8-ea5e6ae2a501 53e253ed-e512-4f43-affd-c3737c6ea14e "商品"               
65298a31-1211-4ab2-a0a4-754b71850aee be813751-47ad-48f9-9bb8-ea5e6ae2a501 f71caa79-2d7e-46d4-acc3-1fec162ded27 "売上"               
65298a31-1211-4ab2-a0a4-754b71850aee be813751-47ad-48f9-9bb8-ea5e6ae2a501 3d46df25-edb2-4644-a7b5-48dd68d1089e "粗利額" 

外部表へアクセス

SQL> select * from DCAT$SCHEMA_BUCKET.SALESDATA;

店舗名     店舗住所                 商品     売上       粗利額
-------- ------------------------ ------- ---------- ---------- 
札幌       札幌市中央区南3条西3      A       150395940  4598240.96

補足

外部表のスキーマ名はObject Storageのデータ・アセットから「DBMS_DCAT」の編集でパラメータを指定可能

image.png

image.png

Data Catalogへの接続の削除には unset_data_catalog_connプロシージャを実行します。

SQL> exec dbms_dcat.unset_data_catalog_conn;

PL/SQL procedure successfully completed.

おわりに

OCI Data Catalogサービスを使ってObject Storageのオブジェクトに対してAutonomous Databaseの外部表を簡単に作成でき、データの活用がよりしやすくなりました。

参考情報

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?