Amazon S3のデータをMySQL HeatWave on AWSにインポートする方法

October 25, 2023 | 6 minute read
Mandy Pang
Senior Principal Product Manager
小野 明日美 ONO, Asumi
MySQL Solution Engineer
Text Size 100%:

このブログ記事は、Introducing Data Import from Amazon S3 in MySQL HeatWave on AWSの翻訳版です。

概要

MySQL HeatWave on AWSはHeatWaveインメモリ・クエリ・アクセラレータを利用したフルマネジド・データベース・サービスであり、トランザクション処理と分析処理および機械学習をMySQLとデータレイクに保存されたデータに対して行うことができる、業界唯一の統合されたクラウド・データベース・サービスです。HeatWave on AWSは、作業の複雑さや遅延をお客様に感じさせることなく、またワークロードごとに異なるシステムを使うことによるETL処理の重複や利用コストの追加なしで、リアルタイムでセキュアな分析を可能にします。

MySQLデータベースを使ってデータを保存し、MySQL HeatWaveで高速処理する際に、まずデータのインポート作業が必要です。MySQL HeatWaveにデータをインポートする方法としてMySQL Shellを使用する場合、下記の2種類があります。

  1. パラレル・テーブル・インポート
    比較的大きなデータ・ファイルを区切り文字(デリミター)を使用したテキスト・ファイル形式で、MySQL テーブルにインポートする方法です。
  2. ダンプ・ロード 
    MySQL Shell ダンプユーティリティによって、エクスポートしたMySQLダンプ・ファイルをインポートする方法です。

いずれの方法でもMySQL HeatWave on AWSへの高速データ・インポートが可能です。これらの方法でインポートをする場合、AWS環境のクライアント・マシンにMySQL Shellがインストールされている必要があります。AWS環境では通常AWS EC2をご利用いただくと思いますが、MySQL Shellの利用の際に以下の留意点があります。

  • ユーザ・インターフェース:  MySQL Shellは現在コマンドラインのみでのご提供です。
  • コスト: クライアント・マシンとMySQL HeatWave間のデータ転送にコストがかかります。
  • セキュリティ: S3のデータへのアクセスには、AWSユーザのアクセスキーのみサポートしています。
  • 性能: HeatWaveが直接Amazon S3からデータを読みに行かず一旦クライアント・マシンにロードするため、時間がかかります。

Data import using MySQL Shell

 

そこで本記事では、Amazon S3からMySQL HeatWave on AWSへのデータ・インポートを可能にする機能をご紹介します。これを用いることで、Amazon S3のデータをMySQL HeatWave on AWSに直接読み込ませることができます。MySQL HeatWave on AWSコンソールにおける、シンプルで直感的なユーザ・インターフェースからこの機能を使うことができます。

HeatWave on AWS

 

この新しいデータ・インポート機能はシンプルな操作性で、優れたセキュリティとパフォーマンスを発揮します。

  • 使いやすさ: MySQL HeatWave on AWSコンソールにおける数クリックの操作で、Amazon S3のデータをMySQL HeatWave on AWSに読み込ませることができます。MySQL Shell(MySQL Shellダンプと、区切り文字によるテキストファイル)で操作するのと同様のデータ形式をサポートしています。

Ease of Use 02

HeatWave on AWS

  • コスト削減: MySQL Shellを操作するためのEC2インスタンスは必要ありません。そのため、Amazon S3のデータをMySQL HeatWaveへ読み込ませる際にデータ転送料などはかかりません。
  • セキュリティ強化: Amazon S3の認証にAWSユーザのアクセスキーをサポートしているのに加え、新しいデータ・インポート機能ではAWS IAMロールをサポートしています。そのため、Amazon S3から特定のMySQL HeatWaveインスタンスへの排他的なアクセスを可能にし、お客様のビジネスを守る強固なセキュリティを提供します。
  • 性能向上: Amazon S3に保存されたデータをMySQL HeatWaveインスタンスへ直接ダウンロードするので、従来の方法のようにデータ転送が重複することはありません。

     

適用例

このデータ・インポート機能は次のような使い方ができます。

  1. 他のMySQLデータベースからのマイグレーション
    • AWS Aurora、AWS RDS、AWS EC2インスタンスやオンプレミスで運用しているMySQLからのマイグレーションの際に、MySQL Shellで取ったデータ・ダンプをMySQL HeatWave on AWSにインポートすることが可能です。
    • 区切り文字によるテキストファイルでエクスポートしたAWS Redshift、Snowflake、Google BigQueryのデータを、MySQL HeatWave on AWSにインポートすることが可能です。
  2. 区切り文字によるテキストファイルの定期的なインポート
    • お客様やパートナー様からテキストファイルでデータを頂いている場合、本記事でご紹介するデータ・インポート機能を使ってMySQL HeatWave on AWSにロードすることができます。
    • 社内のアプリケーションやログをMySQL HeatWave on AWSで処理し、ダウンストリーム・アプリケーションなどに活用することができます。

 

実施例

この実施例では、AWS US EastリージョンのAmazon S3に保存されたairportdbというデータベースのMySQLダンプを、MySQL HeatWave on AWSインスタンスにインポートし、HeatWaveクラスターにデータのロードとクエリ実行を行います。

  1. Amazon S3と同じリージョンで、MySQL HeatWave on AWSコンソールのMySQLタブのDB Systemタブに移動したら、Create MySQL DB Systemを選択します。

HeatWave on AWS

  1. MySQL DB SystemとHeatWave Clusterの作成フォームを埋めます。MySQLデータベースとHeatWaveクラスターの作成には、15〜20分ほどかかります。
    本実施例ではData Import Role ARNとして下記のAWS IAMを使用し、手順5にてAmazon S3からMySQL DB Systemにサンプルデータをロードします。
Copied to Clipboard
Error: Could not Copy
Copied to Clipboard
Error: Could not Copy
arn:aws:iam::612981981079:role/oracle-mysql-heatwave-sample-data-role

Creation of DB 02

Creation of DB 02

Creation of HeatWave Cluster

 

  1. WorkspacesタブのData Importsタブに移動し Connect to MySQL DB Systemをクリックしたらポップアップが出るので、手順2で作成したデータベース名、ユーザ名、パスワードを記入して接続します。

HeatWave on AWS

 

  1. Import Dataをクリックします。

HeatWave on AWS

  1. Import Data into MySQL DB Systemフォームを埋めて、Importをクリックします。サンプルデータairportのMySQL Dumpを使用するには、下記のURIでAmazon S3バケットにアクセスしてください。
Copied to Clipboard
Error: Could not Copy
Copied to Clipboard
Error: Could not Copy
s3://oracle-mysql-heatwave-sample-data-us-east-1/published/airportdb/v1/mysqldump/

HeatWave on AWS

 

  1. Import Data into MySQL DB Systemフォームで書いたDisplay nameが表示されるので(実施例ではAirportDB)、クリックします。

HeatWave on AWS

  1. 全てのスキーマとテーブルがMySQLにロードされるまで(約10〜15分)、WorkspacesタブのDetailsにスキーマ毎、テーブル毎のデータ・インポートの進捗が表示されます。ロードが完了したら、Stateのランプが黄色から緑色になり、In ProgressからSucceededと表示が変わります。

HeatWave on AWS

 

  1. WorkspacesタブのManage Data in Heatwaveタブに移動し、airportdbの全てのテーブルを選択したらLoad into HeatWaveをクリックします。

HeatWave on AWS

 

  1. ロード操作を開始するために、ポップアップ画面のLoad Tablesをクリックします。

HeatWave on AWS

  1. 全てのテーブルがHeatWaveにロードされるまで(約2〜3分)、スキーマ毎、テーブル毎のデータ・インポートの進捗が表示されます。表示を更新するにはRefresh Estimateをクリックします。

HeatWave on AWS

  1. WorkspacesタブのQuery Editorにて、実行したいSQL文を入力しRun Queryをクリックします。下記は実行例です。
Copied to Clipboard
Error: Could not Copy
Copied to Clipboard
Error: Could not Copy
USE airportdb;                                                                               
SELECT price, count(*) FROM booking WHERE price > 500 GROUP BY price ORDER BY price LIMIT 10;

HeatWave on AWS

 

  1. HeatWaveの高速処理により、実施例では上記のクエリを1秒未満で実行できました(約0.410秒)。

HeatWave on AWS
 

  1. HeatWaveからairportdbをアンロードしMySQLのみで同じクエリを実行すると、実施例ではHeatWaveを用いたときと比べて処理時間が約40倍長くかかりました(約17.4秒)。
    Copied to Clipboard
    Error: Could not Copy
    Copied to Clipboard
    Error: Could not Copy
    USE airportdb;                                                                               
    SET session use_secondary_engine=OFF;
    SELECT price, count(*) FROM booking WHERE price > 500 GROUP BY price ORDER BY price LIMIT 10;

HeatWave on AWS

 

総括

本記事でご紹介した方法は、シンプルな操作性で安全に、高い費用対効果でMySQL HeatWave on AWSへのデータ・インポートを実現します。Amazon S3からMySQL HeatWave on AWSに直接かつ迅速にデータをインポートしていただける様に、この機能は直感的に操作できるWebコンソールで提供されています。ユーザの皆様にはAmazon S3に保存してあるデータに対して、MySQL HeatWave on AWSが実現するトランザクション処理、高速分析、機械学習を活用していただけるようになります。
 

参考情報:

Mandy Pang

Senior Principal Product Manager

MySQL HeatWave Product Manager

小野 明日美 ONO, Asumi

MySQL Solution Engineer

MySQL Solution Engineer, 日本オラクル

Oracle Chatbot
Disconnected