Redshift Zero-ETLのデータフィルタリング機能
Zero-ETLのデータフィルタリング機能がリリースされたので試してみました。
基本的には思ったように動きました。
テストケース
先にどんなテストするかを書いちゃいます(フィルタ機能のテストではない観点もあります)。
- 新規でZero-ETL機能を有効化した場合、フィルタ条件に含まれるテーブルの過去分のレコードが転送されるか確認。
- フィルタ条件に含まれるテーブル名のテーブルへの追加レコードが転送される確認。
- フィルタ条件に含まれるテーブル名 のテーブルを新規で作成した場合にそのテーブルが転送される確認。
- フィルタ条件に含まれるデータベース名とテーブル名のテーブルが転送される確認。
- フィルタ条件に含まれないテーブル名のテーブルが転送されない確認。
- フィルタ条件に含まれないデータベース名のテーブルが転送されない確認。
RDSでZero-ETL設定
Zero-ETL設定の詳細はこちらです。AuroraとRedshiftの双方で設定が必要です。今回はZero-ETL自体の設定はほとんど省きます。
Zero-ETLのフィルタリング設定の詳細はこちらです。本日のメインです。
Aurora側でZero-ETL統合を作成
フィルタリング機能にフォーカスして確認
正規表現で以下のように記載
「含める」以外に「除外」も設定可能
my_db.*,my_db2.books_table
今回は以下のように、「データベースmy_dbの全テーブルを対象とする」と「テーブルmy_db2.books_tableのみ」のフィルタリングを設定します。
設定するとこんな感じで表示されます。
※このフィルター機能がリリース前からZero-ETLを使っている場合、「フィルター式=*.*
」「フィルタータイプ=Include」となってます。
Redshift側でZero−ETLで転送する先のRedshiftのデータベースを作成
CLIなら次のコマンドで作成
CREATE DATABASE demo_zeroetl_2 FROM INTEGRATION '7c8bdf22-bafa-4b4c-914a-aca5abc28707';
GUIなら[統合からデータベースを作成]をクリックして作成
RDSの事前状態
- my_db
- books_table (レコード有り)
- my_db2
- テーブルなし
my_dbとmy_db2の2つのデータベースがあることを確認
my_dbには既存でbooks_tableがありレコードが入っていることを確認
テスト
①新規でZero-ETL機能を有効化した場合、フィルタ条件に含まれるテーブル名の過去分のレコードが転送されるか確認
データベースmy_dbの既存テーブルbooks_tableがZero-ETLされること。
新規でZero-ETLを有効化したら、過去分のデータが転送されたことを確認。
②フィルタ条件に含まれるテーブル名のテーブルへの追加レコードが転送される確認
データベースmy_dbの既存テーブルbooks_tableに追加したレコードが転送されること
Auroraでレコードを1件追加
Auroraで追加した1件のレコードが転送され、Redshiftに反映されたことを確認
③フィルタ条件に含まれるテーブル名 のテーブルを新規で作成した場合にそのテーブルが転送される確認
データベースmy_dbの新規テーブルは転送されることを確認
Auroraでテーブルbooks_table2を追加。レコードを1件追加。
Auroraで追加したテーブルとレコードが転送され、Redshiftに反映されたことを確認
④フィルタ条件に含まれるデータベース名とテーブル名のテーブルが転送される確認
データベースmy_db2の新規テーブルbooks_tableが転送されることを確認
Auroraでデータベースmy_db2にテーブルbooks_tableを作成。レコードを1件追加
Auroraで作成したテーブルとレコードが転送され、Redshiftに反映されたことを確認
⑤フィルタ条件に含まれないテーブル名のテーブルが転送されない確認
データベースmy_db2の新規テーブルtestは転送されないことを確認
フィルタ条件に含まれないデータベースmy_db2のテーブルtestは転送されず、Redshiftに反映されないことを確認
⑥フィルタ条件に含まれないデータベース名のテーブルが転送されない確認
データベースmy_db3の新規テーブルtestは転送されないことを確認
フィルタ条件に含まれないデータベースmy_db3のテーブルtestは転送されず、Redshiftに反映されないことを確認
注意点
- ソースとなるAurora MySQLのバージョンは3.05以降 (ドキュメント)
RDBのエンジンごとのZero-ETL対応状況 (2024/03/22現在)
- Aurora MySQL
- GA/Version/Filter/Tokyo Region = Yes/3.05(MySQL 8.0.32互換)/Yes/Yes
- Aurora PostgreSQL
- GA/Version/Filter/Tokyo Region = No(Preview)/15.4/No/No
- RDS MySQL
- GA/Version/Filter/Tokyo Region = No(Preview)/8.0.28/No/Yes
- RDS PostgreSQL
- No