はじめに
2024年9月のアップデートで、Amazon RDS for MySQL と Amazon RedshiftのゼロETL統合が一般提供されるようになりました。また、以前まではゼロETL統合によってレプリケートされたテーブルでは設定されたソートキーを変更できませんでしたが、今回のアップデートによりソートキーの変更が可能となりました。その他、RDS MySQLにおいて、以前は対象テーブルの絞り込みができませんでしたが、今回のアップデートでは絞り込みが可能となりました。本記事では、これらの機能の検証結果について紹介させていただきます。
ゼロETL統合とは
ゼロETL統合は、DB同士を直接接続し、データをレプリケートするアーキテクチャです。従来のETLプロセスで必要となるデータパイプラインの構築を省略し、円滑にDB間のデータ移動を行うことが出来ます。
現在、RedshiftのゼロETL統合に対応しているDBは、RDS for MySQL、Aurora MySQL、Aurora PostgreSQLの3種類です。
検証項目
- ゼロETL統合の作成
- ソートキーの変更
- テーブルのフィルタリング
メリット
1. ゼロETL統合の作成
・リアルタイムのデータアクセスを提供する
・ETLパイプライン構築のコストをカットできる
2. ソートキーの変更
・ダウンタイム無しでのソートキー変更が可能となる
・「AUTO」に設定することで、データに基づいて自動的にソートキーを最適化される
3. テーブルのフィルタリング
・レプリケートするテーブルを選択することが出来る
前提条件
以下の記事の手順に従い、ETL統合作成の事前準備が必要となります。
検証結果
1. ゼロETL統合の作成
1.AWSのホーム画面で「RDS」を選択
※検索欄で「Amazon RDS」を検索でも可
※データフィルタリングオプションのカスタマイズが可能
フィルタータイプとフィルター式を入力することで、レプリケートするテーブルをフィルタリングすることが出来る
例.RDSに以下のテーブルが存在すると仮定
DB | テーブル名 |
---|---|
kensyoB | books_table |
kensyoB | books_table_recode_l |
kensyoB | books_table_recode_s |
kensyoB | books_table_recode_001 |
kensyoB2 | books_table |
設定対象 | フィルタータイプ・フィルター式 | フィルター例 |
---|---|---|
テーブル | 【含む】 *.books_table |
kensyoB.books_table kensyoB2.books_table |
テーブル | 【含む】 ./._recode.*/ |
kensyoB.books_table_recode_l kensyoB.books_table_recode_s |
テーブル | 【含む】 ./books_table_./ 【除外】 ./._recode.*/ |
kensyoB.books_table_recode_001 |
DB | 【含む】 kensyoB.* |
kensyoB.books_table kensyoB.books_table_recode_l kensyoB.books_table_recode_s kensyoB.books_table_recode_001 |
※選択するクラスターのステータスは「ACTIVE」の必要あり
13.Amazon Redshiftの画面にて、「クエリエディタv2」を押下
14.以下のSQLを実行し、統合IDを取得
SELECT integration_id FROM SVV_INTEGRATION;
15.以下のSQLを実行し、データベースを作成
CREATE DATABASE [データベース名] FROM INTEGRATION [統合ID];
16.作成したデータベース内に、RDSのテーブルが存在することを確認
※Redshiftのテーブルに対して、INSERTやDELETEなどのテーブル操作を行った場合、エラーが発生する。
2. ソートキーの変更
1.検証用テーブルにおいて、ソートキーが設定されていることを確認
2.以下のSQLを実行し、ソートキーを変更
ALTER TABLE [DB名].[テーブル名] ALTER SORTKEY ([ソートキー名]);
3. テーブルのフィルタリング
1.RDSに以下の検証用テーブルが存在することを確認
DB | テーブル名 |
---|---|
kensyoB | books_table_recode_l |
kensyoB | books_table |
kensyoB | books_table_A00 |
kensyoB | books_table_fujita1216_2 |
kensyoB | books_table_recode_s |
kensyoB2 | books_table_A00 |
kensyoB2 | books_table_A01 |
2.ゼロETL統合に以下のフィルター式を設定
設定対象 | フィルタータイプ・フィルター式 |
---|---|
テーブル | 【含む】 ./._recode.*/ |
3.Redshiftにて、テーブルがフィルタリングされていることを確認
終わりに
今回検証したゼロETL統合は、RDSに保存したデータをRedshiftで高速に分析したい場合や、RDSのデータとRedshiftのデータを組み合わせて分析した場合などに利用できるサービスだと思います。
初めてゼロETL統合を使用した所感として、かなりシンプルな操作での作成が可能だと思いました。ETLパイプライン作成の時間・金銭のコストがかからないことは魅力的なので、単純なデータ移行の際には使いやすいサービスであると感じました。
参考文献