Amazon Web Services ブログ

Amazon Aurora MySQL と Amazon Redshift のゼロ ETL 統合のデータフィルタリングの発表

本記事は、Announcing data filtering for Amazon Aurora MySQL zero-ETL integration with Amazon Redshift を翻訳したものです。翻訳は Solutions Architect の深見が担当しました。

組織がよりデータドリブンになり、データを競争力向上の源として利用するようになると、売上の成長、コスト削減、ビジネスの最適化のために、データ分析を実行し主要なビジネス上の課題をより深く理解しようとします。
稼働中のサービスにまつわるデータで分析を実行するために、データベース、データウェアハウス、ETL(extract, transform, and load) パイプラインの組み合わせで構成されるソリューションを構築する場合があります。
ETL とは、データエンジニアが異なるソースからのデータを組み合わせるために使用するプロセスです。

ETL パイプラインの構築と保守の労力を軽減するために、AWS は Amazon Redshift との Amazon Aurora ゼロ ETL 統合AWS re:Invent 2022 で発表しました。この機能は現在、Amazon Aurora MySQL 互換エディション 3.05.0 以降で一般提供されています。

AWS は本日、ゼロ ETL 統合のデータフィルタリングを発表しました。これにより、Amazon Aurora MySQL と Amazon Redshift 間のゼロ ETL 統合においてデータを選択して取り込むことができます。この機能により、分析ユースケースにおいて、データウェアハウスである Redshift にレプリケートする個々のデータベースとテーブルを選択できます。

この投稿では、この機能を使用できるユースケースの概要を示し、この機能を使用してニアリアルタイムの運用分析を開始する方法について段階的に説明します。

データフィルタリングの使用例

データフィルタリングを使用すると、Amazon Aurora MySQL から Amazon Redshift へレプリケートするデータベースとテーブルを選択できます。
複数のフィルターをゼロ ETL 統合に適用できるため、レプリケーションを特定のニーズに合わせて調整できます。
データフィルタリングは、exclude フィルターまたは include フィルターのいずれかのルールを適用し、正規表現を使用して複数のデータベースとテーブルを照合できます。

このセクションでは、データフィルタリングの一般的なユースケースについて説明します。

PII データを含むテーブルをレプリケーションから除外することによるデータセキュリティの向上

サービス内で運用されているデータベースには、個人を特定できる情報(PII)が含まれていることがよくあります。これは性質上センシティブな情報であり、郵送先住所、顧客確認書類、クレジットカード情報などが含まれます。

厳格なセキュリティコンプライアンス規制のため、分析ユースケースに個人を特定できる情報(PII)を使用したくない場合があります。データフィルタリングを使用すると、PII データを含むデータベースやテーブルをフィルタリングして、Amazon Redshift へのレプリケーションから除外できます。これにより、分析ワークロードのデータセキュリティとコンプライアンスが向上します。

特定のユースケースに必要なテーブルをレプリケートすることで、ストレージコストを節約し、分析ワークロードを管理

サービス内で運用されているデータベースには、分析に役立たない様々なデータセットが含まれていることがよくあります。これには補助データ、特定のアプリケーションデータ、異なるアプリケーションのための同じデータセットの複数のコピーが含まれます。

さらに、Redshift を利用したデータウェアハウスはそれぞれの異なるユースケースごとに構築することが一般的です。そういったアーキテクチャでは、個々のエンドポイントで異なるデータセットを利用できる必要があります。

データフィルタリングを使用すると、ユースケースで必要なデータセットのみをレプリケートできます。
これにより、使用されていないデータを保存する必要性をなくすことでコストを節約できます。

既存のゼロ ETL 統合を変更して、必要に応じてより制限的なデータレプリケーションを適用することもできます。
既存の統合にデータフィルターを追加すると、Aurora は新しいフィルターを使用してレプリケートされるデータを完全に再評価します。
これにより、対象の Redshift エンドポイントから新しくフィルタリングされたデータが削除されます。

Aurora の Amazon Redshift とのゼロ ETL 統合のクォータの詳細については、クォータを参照してください。

小規模なデータレプリケーションから開始し、必要に応じてテーブルを段階的に追加する

Amazon Redshift 上でより多くの分析ユースケースが開発されるにつれ、個々のゼロ ETL レプリケーションにさらにテーブルを追加したいと考えるかもしれません。
将来的に使用する可能性に備えて、Aurora データベースのすべてのテーブルを Amazon Redshift にレプリケートするのではなく、データフィルタリングを使用することで、Aurora データベースの一部のテーブルのサブセットから小規模に開始し、必要に応じてフィルターにさらにテーブルを増分的に追加できます。

ゼロ ETL 統合のデータフィルターが更新されレプリケーションの対象にテーブルが追加された際には、Aurora はフィルター全体を評価しなおします。これにより、以前にレプリケートされたテーブルを使用しているワークロードは、新しいテーブルを追加しても影響を受けることはありません。

レプリケーションプロセスの負荷分散によるワークロードごとのパフォーマンスを向上する

大規模なトランザクションデータベースの場合、レプリケーションとその下流の処理を複数の Redshift クラスタにロードバランスする必要があるかもしれません。これにより、個々の Redshift エンドポイントのコンピューティング要件を削減し、ワークロードを複数のエンドポイントに分割することができます。複数の Redshift エンドポイントにわたってワークロードをロードバランスすることで、エンドポイントが個々のワークロードに適切にサイズ設定されたデータメッシュアーキテクチャを効果的に作成できます。これによりパフォーマンスが向上し、全体的なコストが低減できます。

データフィルタリングを使用すると、異なるデータベースとテーブルを個別の Redshift エンドポイントにレプリケートできます。

次の図は、ゼロ ETL 統合でデータフィルターを使用して、Aurora の異なるデータベースを Redshift エンドポイントに分割する方法を示しています。

使用例

TICKIT データベースを考えてみましょう。TICKIT サンプルデータベースには、ユーザーが各種イベントのチケットを売買する架空の会社のデータが含まれています。この会社のビジネスアナリストは、Aurora MySQL データベースに保存されているデータを使用して、さまざまなメトリックを生成したいと考えており、この分析をニアリアルタイムで実行したいと考えています。そこで、この会社はゼロ ETL がソリューションになりうるのではないかと考えました。

会社のアナリストが必要なデータセットを調査している間に、users テーブルには顧客ユーザー情報に関する個人情報が含まれているが、その情報は分析要件にとって有用ではないことがわかりました。
したがって、users テーブルを除くすべてのデータをレプリケートしたいと考えており、ゼロ ETL のデータフィルタリングを使用して それを実現したいと考えています。

セットアップ

まず、Amazon Aurora と Amazon Redshift のゼロ ETL 統合を使用したニアリアルタイム運用分析のためのスタートガイド に従って、新しい Aurora MySQL データベース、Amazon Redshift Serverless エンドポイント、ゼロ ETL 統合を作成します。
次に Redshift クエリエディター v2 を開き、users テーブルからのデータが正常にレプリケートされていることを確認するために、次のクエリを実行します。

select * from aurora_zeroetl.demodb.users ;

データフィルター

データフィルターは、Amazon Relational Database Service(Amazon RDS) のゼロ ETL 統合に直接適用されます。
単一の統合に対して複数のフィルターを定義でき、各フィルターは Include フィルター型または Exclude フィルター型のいずれかとして定義されます。
データフィルターは、既存および将来のデータベーステーブルにパターンを適用して、適用するフィルターを決定します。

データフィルタの適用

ゼロ ETL 統合から users テーブルを削除するフィルターを適用するには、次のステップを行います。

  1. Amazon RDS コンソールのナビゲーションペインで、 ゼロ ETL 統合 を選択します。
  2. フィルターを追加するゼロ ETL 統合を選択します。

デフォルトのフィルターは、include:*.* というフィルターで表され、すべてのデータベースとテーブルを含めます。

  1. 変更を選択します。
  2. ソースセクションでフィルターを追加するを選択します。
  3. フィルタータイプを選択する除外するを選択します。
  4. フィルター式demodb.users と入力します。

フィルター式の順序が重要になります。フィルターは左から右、上から下に評価され、後続のフィルターが前のフィルターをオーバーライドします。この例では、Aurora はすべてのテーブルを含める必要があると評価し(フィルター 1)、次に demodb.users テーブルを除外する必要があると評価します(フィルター 2)。exclusion フィルターは inclusion フィルターの後にあるため、inclusion フィルターをオーバーライドします。

  1. 続行を選択します。
  2. 変更内容をレビューし、フィルターの並び順が正しいことを確認したら、 変更内容を保存を選択します。

統合が追加され、変更が適用されるまで変更中の状態になります。これには最大 30 分かかる場合があります。変更の適用が完了したかどうかを確認するには、ゼロ ETL 統合を選択し、そのステータスを確認してください。アクティブと表示されていれば、変更が適用されたことを意味します。

変更の確認

ゼロ ETL 統合が更新されたことを確認するには、次のステップを完了してください:

  1. Redshift クエリエディター v2 で、Redshift クラスターに接続します。
  2. 作成した aurora-zeroetl データベースを右クリックで選択し、 更新を選択します。
  3. demodbTablesを展開します。

users テーブルはレプリケーションから削除されたため、もう利用することができなくなっています。
他のすべてのテーブルは引き続き利用可能です。

  1. 以前と同じ SELECT ステートメントを実行すると、オブジェクトがデータベースに存在しないというエラーが発生します:
    select * from aurora_zeroetl.demodb.users ;

AWS CLI を使用したデータフィルタの適用

会社のビジネスアナリストは、Aurora MySQL データベースにさらに多くのデータベースが追加されていることを理解し、demodb データベースのみが Redshift クラスタにレプリケートされるようにしたいと考えています。
このため、AWS Command Line Interface (AWS CLI) を使用して、ゼロ ETL 統合のフィルタを更新したいと考えています。

AWS CLI を使用したゼロ ETL 統合にデータフィルターを追加するには、modify-integration コマンドを呼び出すことができます。
統合識別子に加えて、include フィルターと exclude フィルターをコンマ区切りでならべたリストを使用して、--data-filter パラメータを指定します。

ゼロ ETL 統合のフィルターを変更するには、次のステップを完了します:

  1. AWS CLI がインストールされたターミナルを開きます。
  2. 利用可能なすべての統合を表示して確認するには、次のコマンドを入力します。
    aws rds describe-integrations
  3. 更新したい統合を見つけ、統合識別子をコピーします。

統合識別子は、統合の ARN の末尾にある英数字の文字列です。

  1. 前のステップでコピーした識別子で <integration identifier> を更新し、次のコマンドを実行します:
    aws rds modify-integration --integration-identifier "<integration identifier>" --data-filter 'exclude: *.*, include: demodb.*, exclude: demodb.users'

Aurora がこのフィルターを評価するとき、デフォルトですべてを除外し、demodb データベースのみを含めますが、demodb.users テーブルは除外します。

データフィルターは、データベースとテーブルに対して正規表現を利用したフィルタリングが可能です。
たとえば、user で始まるテーブルをすべてフィルタリングしたい場合は、次のように実行できます:

aws rds modify-integration --integration-identifier "" --data-filter 'exclude: *.*, include: demodb.*, exclude *./^user/'

前のフィルターの変更と同様に、変更が適用されるまで統合が追加され変更中の状態になります。これには最大 30 分かかる場合があります。アクティブと表示されたら、変更が適用されたことを意味します。

クリーンアップ

ゼロ ETL 統合に追加されたフィルターを削除するには、次のステップを完了してください:

  1. Amazon RDS コンソールのナビゲーションペインで、ゼロ ETL 統合 を選択します。
  2. 該当のゼロ ETL 統合を選択します。
  3. 変更を選択します。
  4. 削除したいフィルターのとなりにある削除を選択します。
  5. exclusion フィルターを inclusion フィルターに変更することもできます。

あるいは、AWS CLI を使用して次のコマンドを実行することもできます:

aws rds modify-integration --integration-identifier "" --data-filter 'include: *.*'
  1. 続行」を選択します。
  2. 変更を保存」を選択します。

データフィルターの変更を適用するには、最大 30 分かかります。
データフィルターを削除すると、Aurora は、削除されたフィルターが存在しなかったかのように、残りのフィルターを再評価します。
以前はフィルタリング基準に一致しなかったが、変更によって一致するようになったデータは、ターゲットの Redshift データウェアハウスにレプリケートされます。

結論

この投稿では、Amazon Aurora MySQL から Amazon Redshift へのゼロ ETL 統合にデータフィルタリングを設定する方法を示しました。これにより、必要なデータのみをレプリケートしながら、トランザクションデータや運用データでニアリアルタイムな分析を行うことができます。

データフィルタリングを使用すると、ワークロードを個別の Redshift エンドポイントに分割したり、プライベートまたは機密データセットのレプリケーションを制限したり、必要なデータセットのみをレプリケートすることでワークロードのパフォーマンスを向上させたりすることができます。

Amazon Redshift との Aurora ゼロ ETL 統合の詳細については、Amazon Redshift との Aurora ゼロ ETL 統合の利用 および ゼロ ETL 統合の利用 を参照してください。

著者について

Jyoti Aggarwal は、AWS ゼロ ETL の製品管理リードです。彼女は、パフォーマンス、顧客エクスペリエンス、セキュリティに関する取り組みの推進など、製品およびビジネス戦略を主導しています。彼女は、クラウド コンピューティング、データ パイプライン、分析、人工知能 (AI)、およびデータベース、データ ウェアハウス、データ レイクなどのデータ サービスに関する専門知識をもたらします。


Sean Beath
は、アマゾン ウェブ サービスのAnalytics Solutions Architect です。彼は、AWS のサービスを使用したデータ プラットフォームの最新化の配信ライフサイクル全体の経験があり、顧客と協力して AWS での分析価値の向上を支援しています。

Gokul Soundararajan AWS の主任エンジニアであり、トロント大学で博士号を取得し、ストレージ、データベース、分析の分野で働いてきました。