データ・カタログを使用した外部データの問合せ

Oracle Cloud Infrastructure Data Catalogは、Oracle Cloudのメタデータ管理サービスであり、データの検出およびデータ・ガバナンスのサポートに役立ちます。アセットのインベントリ、ビジネス用語集、およびデータ・レイクの共通メタストアを提供します。

Autonomous AI Databaseは、このメタデータを活用することで、データレイクのオブジェクトストアへのアクセス管理を大幅に簡素化できます。データ・レイクにアクセスするために外部表を手動で定義するかわりに、自動的に定義および管理される外部表を使用します。これらの表は、データ・カタログの変更で最新の状態に保たれるAutonomous AI Database保護スキーマにあります。

データ・カタログを使用した問合せについて

Autonomous AI Databaseは、データ・カタログ・メタデータと同期することで、データ・カタログによって収集された論理エンティティごとに外部表を自動的に作成します。これらの外部表は、メタデータ同期プロセスによって完全に管理されるデータベース・スキーマで定義されます。ユーザーは、外部データ・ソースのスキーマ(列およびデータ型)を手動で導出し、外部表を手動で作成しなくても、すぐにデータを問い合せることができます。

同期は動的であり、基盤となるデータに対する変更に関してAutonomous AI Databaseを最新の状態に保ち、数百から数千のテーブルを自動的に維持するため、管理コストを削減します。また、複数のAutonomous AI Databaseインスタンスで同じデータ・カタログを共有できるため、管理コストをさらに削減し、ビジネス定義の共通セットを提供できます。

データ・カタログのフォルダ/バケットは、Autonomous Databaseスキーマと同期するコンテナです。これらのフォルダ/バケット内の論理エンティティは、Autonomous Database外部表にマップされます。これらのスキーマおよび外部表は、同期プロセスによって自動的に生成および保守されます。

この機能を使用するには、データベース・データ・カタログ管理者がデータ・カタログ・インスタンスへの接続を開始し、同期するデータ・アセットおよび論理エンティティを選択して、同期を実行します。同期プロセスでは、選択したデータ・カタログで収集されたデータ・アセットおよび論理エンティティに基づいてスキーマおよび外部表が作成されます。外部表が作成されるとすぐに、データ・アナリストは、外部データ・ソースのスキーマを手動で導出して外部表を作成することなく、データの問合せを開始できます。

ノート: DBMS_DCATパッケージは、データ・カタログ・オブジェクト・ストア・データ・アセットの問合せに必要なタスクを実行するために使用できます。「DBMS_DCATパッケージ」を参照してください。

データ・カタログを使用した問合せに関連する概念

データ・カタログを使用した問合せには、次の概念を理解する必要があります。

データ・カタログ: データ・カタログは、Autonomous AI Databaseで問い合せるオブジェクト・ストア・データ・ソースを指すデータ・アセットを収集します。データ・カタログから、収集中のデータの編成方法を指定して、様々なファイル編成パターンをサポートできます。データ・カタログ収集プロセスの一環として、アセット内で管理するバケットおよびファイルを選択できます。詳細は、データ・カタログの概要を参照してください。

オブジェクト・ストア: オブジェクト・ストアには、様々なオブジェクトを含むバケットがあります。これらのバケットに含まれるオブジェクトの一般的なタイプには、CSV、parquet、avro、jsonおよびORCファイルがあります。バケットは通常、含まれるオブジェクトに対する構造または設計パターンを持ちます。データの構造化には様々な方法があり、これらのパターンを解釈するには様々な方法があります。

たとえば、一般的な設計パターンでは、表を表す最上位レベルのフォルダを使用します。特定のフォルダ内のファイルは同じスキーマを共有し、その表のデータを含みます。サブフォルダは、多くの場合、表パーティション(たとえば、各日のサブフォルダ)を表すために使用されます。データ・カタログは、各トップレベル・フォルダを論理エンティティとして参照し、この論理エンティティはAutonomous AI Database外部表にマップされます。

接続: 接続は、データ・カタログ・インスタンスへのAutonomous AI Database接続です。Autonomous AI Databaseインスタンスごとに、複数のデータ・カタログ・インスタンスに接続できます。Autonomous AI Database資格証明には、オブジェクト・ストレージから収集されたデータ・カタログ・アセットにアクセスする権限が必要です。

収集: オブジェクト・ストレージをスキャンし、データ・セットから論理エンティティを生成するデータ・カタログ・プロセス。

データ・アセット: データ・カタログのデータ・アセットは、データベース、Oracle Object Storage、Kafkaなどを含むデータ・ソースを表します。Autonomous AI Databaseは、メタデータの同期にOracle Object Storageアセットを活用します。

データ・エンティティ: データ・カタログ内のデータ・エンティティは、データベース表またはビューなどのデータの集合、または単一のファイルであり、通常はそのデータを記述する多くの属性を含みます。

論理エンティティ: データ・レイクでは、通常、多数のファイルが1つの論理エンティティで構成されます。たとえば、毎日クリックストリーム・ファイルがあり、これらのファイルは同じスキーマおよびファイル・タイプを共有します。

データ・カタログ論理エンティティは、データ・アセットに作成および割り当てられたファイル名パターンを適用することで収集中に導出されるオブジェクト・ストレージ・ファイルのグループです。

データ・オブジェクト: データ・カタログ内のデータ・オブジェクトはデータ・アセットおよびデータ・エンティティを参照します。

ファイル名パターン: データ・レイクでは、データを様々な方法で編成できます。通常、フォルダは、同じスキーマおよびタイプのファイルを取得します。データの編成方法をデータ・カタログに登録する必要があります。ファイル名パターンは、データの編成方法を識別するために使用されます。データ・カタログでは、正規表現を使用してファイル名パターンを定義できます。データ・カタログが、割り当てられたファイル名パターンでデータ・アセットを収集すると、ファイル名パターンに基づいて論理エンティティが作成されます。これらのパターンを定義してデータ・アセットに割り当てることで、ファイル名パターンに基づいて複数のファイルを論理エンティティとしてグループ化できます。

同期(同期): Autonomous AI Databaseは、データ・カタログとの同期を実行して、基礎となるデータに対する変更に関してデータベースを自動的に最新に保ちます。同期は、手動またはスケジュールで実行できます。

同期プロセスでは、データ・カタログのデータ・アセットおよび論理エンティティに基づいてスキーマおよび外部表が作成されます。これらのスキーマは保護され、メタデータはデータ・カタログによって管理されます。メタデータを変更する場合は、データ・カタログで変更する必要があります。Autonomous AI Databaseスキーマには、次回の同期の実行後に変更が反映されます。詳細については、「同期マッピング」を参照してください。

同期マッピング

同期プロセスでは、データ・カタログのデータ・アセット、フォルダ、論理エンティティ、属性および関連するカスタム・オーバーライドに基づいて、Autonomous AI Databaseスキーマおよび外部表を作成および更新します。

データ・カタログ Autonomous AI Database マッピングの説明
データ・アセットおよびフォルダ(オブジェクト・ストレージ・バケット) スキーマ名

デフォルトの値

デフォルトでは、Autonomous AI Databaseで生成されたスキーマ名の形式は次のとおりです:

DCAT$<dcat-con-id>_<data-asset-name>_<folder-name></code>

  • dcat-con-idは、一意のデータ・カタログ接続識別子です。この識別子の指定の詳細は、DBMS_DCAT RUN_SYNCプロシージャdcat_con_idパラメータを参照してください。
  • data-asset-nameは、データ・カタログ・データ・アセットの名前です。
  • folder-nameは、データ・カタログのフォルダ名です。このフォルダは、オブジェクト・ストレージ・バケットにマップされます。

カスタマイズ:

デフォルトのdata-asset-nameおよびfolder-nameは、カスタム・プロパティ、ビジネス名および表示名を定義して、これらのデフォルト名をオーバーライドすることでカスタマイズできます。
  • data-asset-nameは、データ・カタログでデータ・アセットのoracle-db-schema-prefixカスタム・プロパティを定義することでオーバーライドできます。
  • folder-nameは、データ・カタログのフォルダのoracle-db-schemaカスタム・プロパティ、ビジネス名または表示名を定義することでオーバーライドできます。folder-nameの生成には、次の属性が優先順に使用されます。
    • oracle-db-schemaカスタム・プロパティ
    • ビジネス名
    • 名前の表示

次に例を示します:

  • 接続IDがDataModelsで、アセット名がObjectStorageで、フォルダ名がHRで、カスタム・プロパティ・オーバーライドがない場合、導出スキーマ名はDCAT$DATAMODELS_OBJECTSTORAGE_HRです。
  • データ・アセット名がMYASSETで、フォルダ名がMYFOLDERで、カスタム・プロパティのオーバーライドがない場合、スキーマ名はDCAT$MYASSET_MYFOLDERです。
  • データ・アセットにoracle-db-prefix = FIRSTASSETがあり、フォルダにoracle-db-schema = FIRSTFOLDERがある場合、スキーマ名はDCAT$FIRSTASSET_FIRSTFOLDERです。
論理的なエンティティ 外部表

論理エンティティは外部表にマップされます。論理エンティティにパーティション化された属性がある場合は、パーティション化された外部表にマップされます。

外部表名は、対応する論理エンティティの表示名またはビジネス名から導出されます。

oracle-db-schemaが設定されている場合、その値は、対応するフォルダおよびデータ・アセットのすべての名前とカスタム・プロパティをオーバーライドします。

たとえば、エンティティのoracle-db-schemaEntitySchemaに設定されている場合、表はスキーマDCAT$ENTITYSCHEMAに作成されます。

論理エンティティの属性 外部表の列

列名: 外部表の列名は、対応する論理エンティティの属性表示名またはビジネス名から導出されます。

Parquet、AvroおよびORCファイルから導出された論理エンティティの場合、列名は、ソース・ファイルから導出されたフィールド名を表すため、常に属性の表示名になります。

CSVファイルから導出された論理エンティティに対応する属性の場合、列名の生成には、次の属性フィールドが優先順に使用されます。

  1. oracle-db-column-name
  2. ビジネス名
  3. 名前の表示

列タイプ: oracle-db-column-typeカスタム・プロパティは、データ・カタログによって導出されたデフォルトの列タイプをオーバーライドします。

TIME_MICROSTIME_MILLISTIMESTAMP_MICROSまたはTIMESTAMP_MILLISデータ型のAvroファイルから導出された論理エンティティに対応する属性の場合は、データ・カタログで対応する属性のoracle-db-column-typeを設定する必要があります。

列長: oracle-db-column-lengthカスタム・プロパティは、データ・カタログによって導出された文字列フィールドのデフォルトの列長をオーバーライドします。

列精度: oracle-db-column-precisionカスタム・プロパティは、データ・カタログによって導出された数値のデフォルトの精度をオーバーライドします。

TIME_MICROSTIME_MILLISTIMESTAMP_MICROSまたはTIMESTAMP_MILLISデータ型のAvroファイルから導出された論理エンティティに対応する属性の場合は、データ・カタログで対応する属性のoracle-db-column-precisionを設定する必要があります。

列スケール: oracle-db-column-scaleカスタム・プロパティは、データ・カタログによって導出された数値のデフォルト・スケールをオーバーライドします。

データ・カタログの一般的なワークフロー

データ・カタログを使用して問い合せるユーザーが実行するアクションの一般的なワークフローがあります。

データベース・データ・カタログ管理者は、Autonomous AI Databaseインスタンスとデータ・カタログ・インスタンス間の接続を作成し、データ・カタログとAutonomous AI Databaseの間の同期(同期)を構成して実行します。同期により、同期されたデータ・カタログの内容に基づいて、Autonomous AI Databaseインスタンスに外部表およびスキーマが作成されます。

データベース・データ・カタログ問合せ管理者またはデータベース管理者は、データ・アナリストおよび他のデータベース・ユーザーが外部表を参照および問合せできるように、生成された外部表へのREADアクセス権を付与します。

次の表では、各アクションについて詳しく説明します。この表に含まれる様々なユーザー・タイプの詳細は、「データ・カタログのユーザーおよびロール」を参照してください。

ノート: DBMS_DCATパッケージは、データ・カタログ・オブジェクト・ストア・データ・アセットの問合せに必要なタスクを実行するために使用できます。「DBMS_DCATパッケージ」を参照してください。

アクション ユーザーがだれであるか 説明
ポリシーの作成 データベース・データ・カタログ管理者

Autonomous AI Databaseユーザー資格証明には、データ・カタログを管理し、オブジェクト・ストレージから読み取るための適切な権限が必要です。

詳細情報: 必要な資格証明およびIAMポリシー

資格証明の作成 データベース・データ・カタログ管理者

データ・カタログにアクセスし、オブジェクト・ストアを問い合せるために、データベース資格証明が設定されていることを確認します。ユーザーは、DBMS_CLOUD.CREATE_CREDENTIALをコールしてユーザー資格証明を作成します。

詳細は、DBMS_CLOUD CREATE_CREDENTIALプロシージャを参照してください。

データ・カタログへの接続の作成 データベース・データ・カタログ管理者

Autonomous AI Databaseインスタンスとデータ・カタログ・インスタンス間の接続を開始するには、ユーザーはDBMS_DCAT.SET_DATA_CATALOG_CONNをコールしてターゲット・データ・カタログ・インスタンスを指定します。Autonomous AI Databaseインスタンスから複数のデータ・カタログ・インスタンスへの接続がサポートされています。

データ・カタログ・インスタンスへの接続では、十分なOracle Cloud Infrastructure (OCI)権限を持つユーザー資格証明を使用する必要があります。

接続が行われると、データ・カタログ・インスタンスはDBMS_DCATネームスペースおよびカスタム・プロパティで更新されます(まだ存在しない場合)。ユーザーは、問合せを実行して、現在のすべての接続を含む新しい接続を表示できます。

select * from all_dcat_connections;

詳細は、SET_DATA_CATALOG_CONNプロシージャUNSET_DATA_CATALOG_CONNプロシージャを参照してください。

選択的同期の作成 データベース・データ・カタログ管理者

同期するデータ・カタログ・オブジェクトを選択して、同期ジョブを作成します。このユーザーは次のことができます。

  • 同期するデータ・アセット/フォルダを選択します。
  • 同期する個々の論理エンティティを選択します。
  • 同期する前に、結果の外部表をプレビューします。
  • データ・カタログのカスタム・プロパティを変更して、外部表(名前など)を変更します。

詳細は、「CREATE_SYNC_JOBプロシージャ」「DROP_SYNC_JOBプロシージャ」「同期マッピング」を参照してください。

データ・カタログとの同期 データベース・データ・カタログ管理者

ユーザーが同期操作を開始します。同期は、DBMS_DCAT.RUN_SYNCプロシージャ・コールを介して手動で、またはスケジュールされた同期ジョブの一部として自動的に開始されます。

同期操作では、データ・カタログのコンテンツおよび同期の選択に従って、外部表およびスキーマを作成、変更および削除します。手動構成は、データ・カタログのカスタム・プロパティを使用して適用されます。

詳細は、DBMS_DCAT RUN_SYNCプロシージャCREATE_SYNC_JOBプロシージャ同期マッピングを参照してください。

同期の監視とログの表示 データベース・データ・カタログ管理者 ユーザーは、USER_LOAD_OPERATIONSビューを問い合せることで同期ステータスを表示できます。同期プロセスが完了すると、ユーザーは、外部表への論理エンティティのマッピングの詳細など、同期結果のログを表示できます。
権限を付与します データベース・データ・カタログ問合せ管理者、データベース管理者 データベース・データ・カタログ問合せ管理者またはデータベース管理者は、生成された外部表のREADをデータ・アナリスト・ユーザーに付与する必要があります。これにより、データ・アナリストは生成された外部表を問い合せることができます。
外部表の参照と問合せ データ・アナリスト

データ・アナリストは、Oracle SQLをサポートする任意のツールまたはアプリケーションを介して外部表を問い合せることができます。

データ・アナリストは、DCAT$\*スキーマ内の同期されたスキーマおよび表を確認し、Oracle SQLを使用して表を問い合せることができます。

詳細情報: 同期マッピング

データ・カタログへの接続の終了 データベース・データ・カタログ管理者

既存のデータ・カタログ・アソシエーションを削除するには、ユーザーがUNSET_DATA_CATALOG_CONNプロシージャをコールします。

このアクションは、データ・カタログおよびカタログから導出された外部表の使用を計画しなくなった場合にのみ実行されます。このアクションは、データ・カタログ・メタデータを削除し、同期された外部表をAutonomous AI Databaseインスタンスから削除します。データ・カタログおよびOCIポリシーのカスタム・プロパティは影響を受けません。

詳細情報: UNSET_DATA_CATALOG_CONNプロシージャ

例: MovieStreamのシナリオ

このシナリオでは、Moviestreamがオブジェクト・ストレージ上のランディング・ゾーンにデータを取得しています。このデータの多くは、必ずしもすべてではなく、自律型AIデータベースのフィードに使用されます。自律型AIデータベースにフィードする前に、データが変換、クレンジングされ、その後「ゴールド」領域に格納されます。

データ・カタログは、これらのソースを収集し、データにビジネス・コンテキストを提供するために使用されます。データ・カタログ・メタデータはAutonomous AI Databaseと共有されるため、Autonomous AI DatabaseユーザーはOracle SQLを使用してこれらのデータ・ソースを問い合せることができます。このデータは、Autonomous AI Databaseにロードしたり、外部表を使用して動的に問い合せたりできます。

データ・カタログの使用方法の詳細は、データ・カタログのドキュメントを参照してください。

  1. オブジェクト・ストア- バケット、フォルダおよびファイルのレビュー

    1. オブジェクト・ストア内のバケットを確認します。

      たとえば、オブジェクト・ストレージのランディング(moviestream_landing)バケットとゴールド・ゾーン(moviestream_gold)バケットを次に示します。

    2. オブジェクト・ストア・バケット内のフォルダおよびファイルをレビューします。

      たとえば、オブジェクト・ストレージのランディング・バケット(moviestream_landing)内のフォルダは次のとおりです。

  2. データ・カタログ- ファイル名パターンの作成

    1. ファイル名パターンを使用してデータの編成方法をデータ・カタログに通知します。これらは、ファイルの分類に使用される正規表現です。ファイル名パターンは、論理エンティティを導出するためにデータ・カタログ・ハーベスタによって使用されます。次の2つのファイル名パターンを使用して、MovieStreamの例でバケットを収集します。ファイル名パターンの作成の詳細は、論理データ・エンティティとしてのオブジェクト・ストレージ・ファイルの収集を参照してください。

      Hiveスタイル フォルダ・スタイル
      {bucketName:.*}/{logicalEntity:[^/]+}.db/{logicalEntity:[^/]+}/.* {bucketName:[\w]+}/{logicalEntity:[^/]+}(?<!.db)/.*$
      • オブジェクト名の最初の部分として".db"を含むソースの論理エンティティを作成します。
      • バケット内で一意性を確保するために、結果の名前は(db-name).(フォルダ名)です
      • ルート以外のフォルダ名に基づいて論理エンティティを作成します。
      • Hiveとの重複を防ぐために、".db"を含むオブジェクト名はスキップされます。
    2. ファイル名パターンを作成するには、データ・カタログの「ファイル名パターン」タブに移動し、「ファイル名パターンの作成」をクリックします。たとえば、moviestreamデータ・カタログの「ファイル名パターンの作成」タブは次のようになります。

  3. データ・カタログ- データ・アセットの作成

    1. オブジェクト・ストアからデータを収集するために使用されるデータ・アセットを作成します。

      たとえば、phoenixObjStoreという名前のデータ・アセットがmoviestreamデータ・カタログに作成されます。

    2. データ・アセットへの接続を追加します。

      この例では、データ・アセットはmoviestreamオブジェクト・ストレージ・リソースのコンパートメントに接続します。

    3. 次に、ファイル名パターンをデータ・アセットに関連付けます。「ファイル名パターンの割当て」を選択し、目的のパターンを確認して「割当て」をクリックします。

      たとえば、phoenixObjStoreデータ・アセットに割り当てられたパターンは次のとおりです。

      図assign_filename_patterns_v1.pngの説明

    4. データ・カタログ- オブジェクト・ストアからのデータの収集

      a. データ・カタログ・データ・アセットの収集。ソース・データを含むオブジェクト・ストア・バケットを選択します。

      この例では、オブジェクト・ストアのmoviestream_goldおよびmoviestream_landing`バケットが収集用に選択されています。

      b. ジョブを実行すると、論理エンティティが表示されます。「データ・アセットの参照」を使用して、それらを確認します。

      この例では、customer-extension論理エンティティとその属性を確認します。

      用語集がある場合、データ・カタログでは、エンティティとその属性に関連付けるカテゴリおよび用語を推奨します。これにより、品目のビジネス・コンテキストが提供されます。スキーマ、表および列は、多くの場合、自己説明ではありません。

      この例では、様々なタイプのバケットとその内容の意味を区別します。

      • ランディングゾーンとは何ですか?

      • データはどの程度正確ですか?

      • 最終更新日はいつですか?

      • 論理エンティティまたはその属性の定義とは

    5. Autonomous AI Database - データ・カタログへの接続

      Autonomous AI Databaseをデータ・カタログに接続します。その接続に使用された資格証明が、データ・カタログ・アセットへのアクセスを許可されたOCIプリンシパルを使用していることを確認する必要があります。詳細は、データ・カタログ・ポリシーを参照してください。

      a. データ・カタログへの接続

      BEGIN
        DBMS_CLOUD.CREATE_CREDENTIAL (
           credential_name => 'OCI_NATIVE_CRED',
           user_ocid              => 'ocid1.user.oc1..aaaaaaaatfn77fe3fxux3o5lego7glqjejrzjsqsrs64f4jsjrhbsk5qzndq',
           tenancy_ocid           => 'ocid1.tenancy.oc1..aaaaaaaapwkfqz3upqklvmelbm3j77nn3y7uqmlsod75rea5zmtmbl574ve6a',
           private_key            => 'MIIEogIBAAKCAQEA...t9SH7Zx7a5iV7QZJS5WeFLMUEv+YbYAjnXK+dOnPQtkhOblQwCEY3Hsblj7Xz7o=',
           fingerprint            => '4f:0c:d6:b7:f2:43:3c:08:df:62:e3:b2:27:2e:3c:7a');
      END;
      
      -- Variables are used to simplify usage later
      define oci_credential = 'OCI_NATIVE_CRED'
      define dcat_ocid = 'ocid1.datacatalog.oc1.iad.aaaaaaaardp66bg....twiq'
      define dcat_region='us-ashburn-1'
      define uri_root =    'https://objectstorage.us-ashburn-1.oraclecloud.com/n/mytenancy/b/landing/o'
      define uri_private = 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/mytenancy/b/private_data/o'
      
      -- Query a private bucket to test the privileges.
      select *
        from dbms_cloud.list_objects('&oci_credential', '&uri_private/');
      
      --------
      
      -- Set the credentials to use for object store and data catalog
      
      -- Connect to Data Catalog
      
      -- Review connection
      
      ---------
      
      -- Set credentials
      exec dbms_dcat.set_data_catalog_credential(credential_name => '&oci_credential');
      exec dbms_dcat.set_object_store_credential(credential_name => '&oci_credential');
      
      
      -- Connect to Data Catalog
      begin
        dbms_dcat.set_data_catalog_conn (
           region => '&dcat_region',
           catalog_id => '&dcat_ocid');
      end;
      /
      
      -- Review the connection
      select * from all_dcat_connections;
      

      b. データ・カタログをAutonomous AI Databaseと同期します。ここでは、すべてのオブジェクト・ストレージ・アセットを同期します:

      -- Sync Data Catalog with Autonomous Database
      
      ---- Let's sync all of the assets.
      begin
        dbms_dcat.run_sync('{"asset_list":["*"]}');
      end;
      /
      
      -- View log
      select type, start_time, status, logfile_table from user_load_operations;  -- Logfile_Table will have the name of the table containing the full log.
      select * from dbms_dcat$1_log;
      
      -- View the new external tables
      select * from dcat_entities;
      select * from dcat_attributes;
      

      c. Autonomous AI Database - オブジェクト・ストアに対する問合せの実行を開始します。

      -- Query the Data !
      select *from dcat$phoenixobjstore_moviestream_gold.genre;
      
    6. オブジェクトのスキーマの変更

      デフォルトのスキーマ名はかなり複雑です。データ・カタログでアセットとフォルダのOracle-Db-Schemaカスタム属性の両方を指定することで、それらを簡略化します。データ・アセットをPHXに変更し、フォルダをそれぞれlandingおよびgoldに変更します。スキーマは2つの連結です。

      a. データ・カタログから、moviestream_landingバケットに移動し、アセットをそれぞれlandingおよびgoldに変更します。

      変更の前:

      変更後の作業:

      b. 別の同期を実行します。

例: パーティション化されたデータ・シナリオ

このシナリオは、オブジェクト・ストアのパーティション・データから収集されたデータ・カタログ論理エンティティに基づくAutonomous AI Databaseで外部表を作成する方法を示しています。

次の例は、MovieStreamシナリオの例に基づいており、パーティション化されたデータとの統合を示すために適応されています。データ・カタログは、これらのソースを収集し、データにビジネス・コンテキストを提供するために使用されます。この例の詳細は、例: MovieStreamシナリオを参照してください。

データ・カタログの使用方法の詳細は、データ・カタログのドキュメントを参照してください。

  1. オブジェクト・ストア- バケット、フォルダおよびファイルのレビュー

    1. オブジェクト・ストア内のバケットを確認します。

      たとえば、オブジェクト・ストレージ内のランディング(moviestream_landing)バケットとゴールド・ゾーン(moviestream_gold)バケットを次に示します。

    2. オブジェクト・ストア・バケット内のフォルダおよびファイルをレビューします。

      たとえば、オブジェクト・ストレージのランディング・バケット(moviestream_landing)内のフォルダは次のとおりです。

  2. データ・カタログ- ファイル名パターンの作成

    1. ファイル名パターンを使用してデータの編成方法をデータ・カタログに通知します。これらは、ファイルの分類に使用されるフォルダ接頭辞または正規表現です。ファイル名パターンは、論理エンティティを導出するためにデータ・カタログ・ハーベスタによって使用されます。フォルダ接頭辞を指定すると、データ・カタログはオブジェクト・ストアの指定されたフォルダ接頭辞から論理エンティティを自動的に生成します。MovieStreamの例でバケットを収集するには、次のファイル名パターンを使用します。ファイル名パターンの作成の詳細は、論理データ・エンティティとしてのオブジェクト・ストレージ・ファイルの収集を参照してください。

      フォルダ接頭辞 説明
      workshop.db/ オブジェクト・ストアにworkshop.dbパスを含むソースの論理エンティティを作成します。
    2. ファイル名パターンを作成するには、データ・カタログの「ファイル名パターン」タブに移動し、「ファイル名パターンの作成」をクリックします。たとえば、moviestreamデータ・カタログの「ファイル名パターンの作成」タブは次のようになります。

  3. データ・カタログ- データ・アセットの作成

    1. オブジェクト・ストアからデータを収集するために使用されるデータ・アセットを作成します。

      たとえば、amsterdamObjStoreという名前のデータ・アセットがmoviestreamデータ・カタログに作成されます。

    2. データ・アセットへの接続を追加します。

      この例では、データ・アセットはmoviestreamオブジェクト・ストレージ・リソースのコンパートメントに接続します。

    3. 次に、ファイル名パターンをデータ・アセットに関連付けます。「ファイル名パターンの割当て」を選択し、目的のパターンを確認して「割当て」をクリックします。

      たとえば、amsterdamObjStoreデータ・アセットに割り当てられたパターンは次のとおりです。

  4. データ・カタログ- オブジェクト・ストアからのデータの収集

    1. データ・カタログ・データ・アセットの収集。ソース・データを含むオブジェクト・ストア・バケットを選択します。

      この例では、オブジェクト・ストアのmoviestream_goldおよびmoviestream_landing`バケットが収集用に選択されています。

    2. ジョブを実行すると、論理エンティティが表示されます。「データ・アセットの参照」を使用して、それらを確認します。

      この例では、sales_sample_parquet論理エンティティとその属性を確認します。データ・カタログでは、month属性がパーティションとして識別されています。

  5. Autonomous AI Database - データ・カタログへの接続

    Autonomous AI Databaseをデータ・カタログに接続します。その接続に使用された資格証明が、データ・カタログ・アセットへのアクセスを許可されたOCIプリンシパルを使用していることを確認する必要があります。詳細は、データ・カタログ・ポリシーを参照してください。

    1. データ・カタログへの接続

       BEGIN
       DBMS_CLOUD.CREATE_CREDENTIAL (
          credential_name => 'OCI_NATIVE_CRED',    user_ocid              => 'ocid1.user.oc1..aaaaaaaatfn77fe3fxux3o5lego7glqjejrzjsqsrs64f4jsjrhbsk5qzndq',
          tenancy_ocid           => 'ocid1.tenancy.oc1..aaaaaaaapwkfqz3upqklvmelbm3j77nn3y7uqmlsod75rea5zmtmbl574ve6a',
          private_key            => 'MIIEogIBAAKCAQEA...t9SH7Zx7a5iV7QZJS5WeFLMUEv+YbYAjnXK+dOnPQtkhOblQwCEY3Hsblj7Xz7o=',
          fingerprint            => '4f:0c:d6:b7:f2:43:3c:08:df:62:e3:b2:27:2e:3c:7a');
       END;
      
       -- Variables are used to simplify usage later
       define oci_credential = 'OCI_NATIVE_CRED'
       define dcat_ocid = 'ocid1.datacatalog.oc1.eu-amsterdam-1....leguurn3dmqa'
       define dcat_region='eu-amsterdam-1'
       define uri_root =    'https://objectstorage.us-ashburn-1.oraclecloud.com/n/mytenancy/b/landing/o'
       define uri_private = 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/mytenancy/b/private_data/o'
      
      
       -- Query a private bucket to test the privileges.
       select *
       from dbms_cloud.list_objects('&oci_credential', '&uri_private/');
      
      
       --------
      
       -- Set the credentials to use for object store and data catalog
      
       -- Connect to Data Catalog
      
       -- Review connection
      
       ---------
      
       -- Set credentials
       exec dbms_dcat.set_data_catalog_credential(credential_name => '&oci_credential');
       exec dbms_dcat.set_object_store_credential(credential_name => '&oci_credential');
      
      
       -- Connect to Data Catalog
       begin
          dbms_dcat.set_data_catalog_conn (
            region => '&dcat_region',
            catalog_id => '&dcat_ocid');
       end;
       /
      
       -- Review the connection
       select * from all_dcat_connections;
      
    2. データ・カタログをAutonomous AI Databaseと同期します。ここでは、すべてのオブジェクト・ストレージ・アセットを同期します:

       -- Sync Data Catalog with Autonomous Database
      
       ---- Let's sync all of the assets.
       begin
        dbms_dcat.run_sync('{"asset_list":["*"]}');
       end;
       /
      
      
       -- View log
       select type, start_time, status, logfile_table from user_load_operations;  -- Logfile_Table will have the name of the table containing the full log.
       select * from dbms_dcat$1_log;
      
      
       -- View the new external tables
       select * from dcat_entities;
       select * from dcat_attributes;
      
    3. Autonomous AI Database - オブジェクト・ストアに対する問合せの実行を開始します。

       -- Query the Data !
       select count(*) from DCAT$AMSTERDAMOBJSTORE_MOVIESTREAM_LANDING.SALES_SAMPLE_PARQUET;
      
      
       -- Examine the generated partitioned table
       select dbms_metadata.get_ddl('TABLE','SALES_SAMPLE_PARQUET','DCAT$AMSTERDAMOBJSTORE_MOVIESTREAM_LANDING') from dual;
      
       CREATE TABLE "DCAT$AMSTERDAMOBJSTORE_MOVIESTREAM_LANDING"."SALES_SAMPLE_PARQUET"
       (    "MONTH" VARCHAR2(4000) COLLATE "USING_NLS_COMP",
      
            "DAY_ID" TIMESTAMP (6),
            "GENRE_ID" NUMBER(20,0),
            "MOVIE_ID" NUMBER(20,0),
            "CUST_ID" NUMBER(20,0),
       ...
       )  DEFAULT COLLATION "USING_NLS_COMP"
       ORGANIZATION EXTERNAL
        ( TYPE ORACLE_BIGDATA
          ACCESS PARAMETERS
          ( com.oracle.bigdata.fileformat=parquet
            com.oracle.bigdata.filename.columns=["MONTH"]
            com.oracle.bigdata.file_uri_list="https://swiftobjectstorage.eu-amsterdam-1.oraclecloud.com/v1/tenancy/moviestream_landing/workshop.db/sales_sample_parquet/*"
       ...
          )
        )
       REJECT LIMIT 0
       PARTITION BY LIST ("MONTH")
       (PARTITION "P1"  VALUES (('2019-01'))
          LOCATION ( 'https://swiftobjectstorage.eu-amsterdam-1.oraclecloud.com/v1/tenancy/moviestream_landing/workshop.db/sales_sample_parquet/month=2019-01/*'),
       PARTITION "P2"  VALUES (('2019-02'))
          LOCATION ( 'https://swiftobjectstorage.eu-amsterdam-1.oraclecloud.com/v1/tenancy/moviestream_landing/workshop.db/sales_sample_parquet/month=2019-02/*'),
       ...PARTITION "P24"  VALUES (('2020-12'))
          LOCATION ( 'https://swiftobjectstorage.eu-amsterdam-1.oraclecloud.com/v1/tenancy/moviestream_landing/workshop.db/sales_sample_parquet/month=2020-12/*'))
       PARALLEL
      
  6. オブジェクトのスキーマの変更

    デフォルトのスキーマ名はかなり複雑です。データ・カタログでアセットとフォルダのOracle-Db-Schemaカスタム属性の両方を指定することで、それらを簡略化します。データ・アセットをPHXに変更し、フォルダをそれぞれlandingおよびgoldに変更します。スキーマは2つの連結です。

    1. データ・カタログから、moviestream_landingバケットに移動し、アセットをそれぞれlandingおよびgoldに変更します。

      変更の前:

      変更後の作業:

    2. 別の同期を実行します。