【速報】Amazon Redshift Federated QueryでRDS MySQLとAurora MySQLに直接クエリを実行できるようになりました(Preview) #reinvent

2020.12.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

昨年のre:Invent2019で発表されたAmazon RedshiftのFederated Queryが、RDS MySQL と Aurora MySQLをサポートしました。(Preview)

これで、Amazon RedshiftとAthenaからRDSやAuroraのPostgreSQLとMySQLに直接クエリが実行できるようになりました。

Amazon Redshift Federated Queryとは

RDS MySQL と Aurora MySQLのテーブルにRedshiftから直接アクセスできるようになりました。いわゆる、RedshiftからMySQLに対してデータベースリンクする機能です。

RDS PostgreSQL と Aurora PostgreSQLは既に利用可能です。Federated Queryの仕組みについては、以下のブログをご覧ください。

Federated Query のユースケース

Federated Queryを使用して、MySQLのテーブルデータをBIツールやアプリケーションの一部としてライブデータをRedshiftから読み込むことができます。

  • 運用データベース(MySQL)に直接クエリを実行
  • MySQLのテーブルデータの変更をすぐに適用
  • 複雑な抽出、変換、読み込み(ETL)パイプラインを必要とせずに、データをターゲットテーブル(MySQL上のテーブル)に読み込む

Federated Query のしくみ

ネットワーク上でのデータ移動を減らし、Federated Queryの計算の一部をMySQLに直接分散します。Redshiftは最初にリーダーノードからMySQLのインスタンスへのクライアント接続を確立して、テーブルメタデータを取得します。コンピュートノードから、Amazon Redshiftは述語をプッシュダウンしてサブクエリを発行し、結果の行を取得します。その後、Amazon Redshiftは、さらに処理するために結果行を計算ノードに分散します。

MySQLへのFederated Queryの使用(Preview)

RedshiftからMySQLインスタンスは、ネットワーク的に接続できなければなりません。RedshiftがMySQLに接続するための認証情報は(Secret Managerの)Secretを事前に作成します。RedshiftはこのSecretを利用するため、RedshiftのIAMロールに権限を付与します。

MySQLへのFederated Queryは、執筆時点では、Previewであるため、Redshiftのメンテナンストラックをsql_previewに変更(Modify cluster)してクラスタを再起動すると反映されます。

最後に

これまでは、RDS/Aurora MySQLからデータを取得するためにS3を介してRedshiftやRedshift Spectrumと連携する必要がありましたので、ジョブフローが複雑になりがちでした。しかし、今後は何も考えずにRDS/Auroraの MySQLのデータをRedshiftで組み合わせて分析できるようになります。「DWH」とは、サイロ化されたデータを誰もがいつでも利用できるように一元的に統合・管理することが主目的です。Redshiftは、単に大規模データを低価格・高性能・伸縮自在に扱えるだけではなく、S3上のデータ(データレイク)や他のデータベースをアドホックに統合できる分析プラットフォームに正常進化したと言えるでしょう。

RDS/Aurora PostgreSQLのFederated Query検証ブログを書いた際に、「MySQLもサポートしてほしい」と要望を書いたのですがそれが叶って万々歳です。