※ 本記事は、Alexey Filanovskiyによる”Automate multi-cloud analysis by integration of Autonomous Data Warehouse with AWS Glue“を翻訳したものです。

2023年8月7日


マルチクラウドが重要な理由

クラウドは、多くのエンタープライズ顧客にとって現実のものとなっています。数年前のマーケティング関連の話題は、現在多くの顧客にとって基本的なアーキテクチャとなっています。インフラストラクチャの柔軟性(IaaS)は、プラットフォーム(PaaS)の自動化とサービス・アプローチの利便性(SaaS)とともに、多くのユーザーがクラウドに移行します。しかし、部屋の中の象はベンダー・ロックインです。顧客がすべてのITリソースを1つのクラウドに移行し、1日でベンダーが大幅に価格を上げるか、新しい料金を導入するとしたらどうなるでしょうか。また、一般的なシナリオでは、サービスの使用中に隠れたコストが表示されるため、TCOに大きく影響する場合があります。このソリューションは、同様の機能を別のクラウドにレプリケートできる場合にマルチクラウド戦略を採用することです。
また、各クラウド・ベンダーは強みと弱みを持っている可能性があるため、顧客は2つの世界を最大限に活用したいと考えています。このブログ投稿では、Amazon Web Services (AWS)とOracle Cloud Infrastructure (OCI)上で稼働するAutonomous Data Warehouseの統合について説明します。

以前はADBをAmazon Cloudと統合するために何ができましたか?

ADBはマルチクラウドに対応

マルチクラウドを使用している顧客の場合、1つのオブジェクト・ストアにデータを含めることは完全に可能であり(一部のアプリケーションがそこにデータを書き込むため)、別のクラウドで実行されているエンジンでこれらのデータ・アセットを処理する必要があります。Oracle ADBは、これらの要件を満たし、AWSのS3バケットに格納されたデータをその場で処理できます。たとえば、アクセス/シークレット・キーを使用した最も一般的に使用される認証方法に加えて、Oracle Autonomous Data WarehouseをAmazon名前付きリソースとして認証できます。任意の認証により、ユーザーはDatabase Actions UIまたはPL/SQL APIを使用して、AWS S3バケット上に外部表を作成できます。ただし、どちらの場合も、AWS Glueカタログを使用せずにS3上での直接表の作成を対象としています。このカタログは、S3内のファイルに関するメタデータを取得して一元的に格納できます。

AWS Glueとは?

AWS Glueは、完全に管理された抽出、変換およびロード(ETL)サービスで、お客様が分析のためにデータを簡単に準備およびロードできるようにします。Amazon S3に格納されたデータやAmazon RDS上のデータベースなど、様々なデータ・ソースに接続し、データを抽出、変換、ロードするコードを自動的に生成できます。AWS Glueには、お客様がスキーマや統計などのデータに関する情報を格納および取得できるデータ・カタログも含まれています。

AWS Glueは複数の部分から構成されています。このブログでは、メタデータの格納に使用されるカタログ・コンポーネントに注目します。

外部表の作成に一元的なglueカタログを使用する利点

カタログ・アプローチには、S3で外部表を直接作成することよりも、いくつかの利点があります。

  • クローラはメタデータの収集を自動化できます。インテリジェント・コンポーネントは、S3にあるデータを処理し、データ型、列のリストおよび列のタイプを自動的に検出します。クローラは、1回の実行で複数のオブジェクトにメタデータを収集できます。
  • データは常に最新です。たとえば、パーティション表の場合、パーティションを含む最新の操作が常に反映されます。
  • ユーザーは一度に複数の外部表を作成できます。
  • Icebergなどの表形式は、これらのデータ形式の上に外部表を作成する唯一の方法であるカタログ・ソリューションに依存する場合があります。

AWS Glueを使用して、S3に格納されたデータでAutonomous Data Warehouseをエンリッチ

次に、後で確認するためにAWSメタデータをAutonomous Data Warehouseに転送する方法についてデモンストレーションします。このガイドの一般的な手順は次のとおりです。:

  1. AWS Glueのメタデータの確認
  2. Autonomous Data WarehouseへのAWS Glueのリンク
  3. メタデータの同期(AWS GlueからAutonomous Data WarehouseにXTを作成)
  4. Autonomous Data Warehouseの新しいアイテムを確認し、S3で問合せを実行
同期フロー

AWS Glueでメタデータを検査

まず、AWS Glueで入手できる情報を表示します。AWS Glueを見つけ、選択しました:

AWS Glueインタフェース

いくつかのアイテムがすでにS3に存在し、Glueが以前にスキャンしたと想定しています。そのため、一部のエンティティはすでに配置されています。:

Glueの表のリスト

AWS GlueとAutonomous Data Warehouseの関連付け

このAWS GlueカタログをAutonomous Databaseにリンクする瞬間です。まず、ADBでログインの詳細を作成する必要があります。アクセス・キーと秘密キーは、AWS GlueおよびS3内のデータへのアクセスに役立ちます。:

begin
    dbms_cloud.create_credential('MY_CRED_AWS','<access key>', '<secret key>');
end;

Credentials will be associated with Data Catalog and Object Store:

begin
    dbms_dcat.set_data_catalog_credential('MY_CRED_AWS');
    dbms_dcat.set_object_store_credential('MY_CRED_AWS');
end;

Also, a user has to set up an AWS region where Glue is running:

begin
    dbms_dcat.set_data_catalog_conn(region => 'us-west-2', 
                                    catalog_type=>'AWS_GLUE');
end;

AWS Glueからのメタデータの同期

関連付けが完了したら、確認する時間、ADB APIを使用して、Glueカタログ内の内容を確認します。Glueデータベースを検索するには、次のことを確認してください。:

select * from all_glue_databases order by name;

次の問合せは、同期に使用できる表のリストを示しています。:

select * from all_glue_tables order by database_name, name;

表のユーザー・リストを持つことで、ADBに同期する必要があるいくつかのユーザーを選択できます(ノート: これはメタデータ同期のみで、データ自体はS3バケットに存在します):

begin
dbms_dcat.run_sync(
  synced_objects => '
    {
        "database_list": [
            {
            "database": "parq",
            "table_list": ["store","item"]
            }
        ]
    }',
error_semantics => 'STOP_ON_ERROR');
end;
/

完全同期(すべての表およびすべてのデータベース)を実行するには、次のコマンドを実行します。:

begin
    dbms_dcat.run_sync(synced_objects=>'{"database_list":["*"]}')
end;

Autonomous Data Warehouseで新しいオブジェクトを調査し、S3の上で問合せを実行

同期後は、データベースで新しく作成されたオブジェクトを確認することをお薦めします。新しいスキーマが作成されました(名前が自動的に生成されました):

これで、ユーザーはAWS S3に格納されているデータセットに対してSQL問合せを実行できます。:

SELECT * FROM glue$parq_tpcds_oracle_parq.store;

重要なのは、データはAWS Cloudに格納されたままであり、Oracle Databaseにコピーされないことです。

まとめ

このブログでは、ユーザーが1つのクラウドを超えてデータ・ウェアハウスを拡張し、AWSなどの他のクラウド・プロバイダのメタデータとデータを使用することがいかに簡単かを示します。データはリモート・クラウドに残り、問合せ実行時にのみ処理されます。AWS Glueを利用することで、複数のオブジェクトを1回の実行で同期し、そのような接続を簡単に維持できます。