【速報】AWS Lake Formationがトランザクションをサポートする『Governed Tables』がGAになりました! #reinvent

2021.12.01

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

データアナリティクス事業本部コンサルティングチームの石川です。日本時間2021年12月1日深夜のAWS re:Invent 2021のAdam Selipskyさんのキーノートにて、AWS Lake Formationがトランザクションをサポートする新しいテーブルタイプ『Governed Tables』が遂にGAとなったことを発表しました。

Governed Tables とは

Governed Tablesは、ACID(atomicity, consistency, isolation, durability)トランザクションをサポートする新しいS3テーブルタイプです。 トランザクションをサポートすることで、データレイクでのストリーミングによる更新や削除のサポート(データベースの複製など)を実現します。

Governed Tables の特長

トランザクションによる同時更新とクエリの読み取り一貫性

データレイクは、コスト効率とパフォーマンスが優れていますが、セキュリティや信頼性、更新は1箇所から行うように制御しなければならないなど課題がありました。Governed Tablesが提供するトランザクションは、ETLスクリプトとワークフローの開発を簡素化し、複数のユーザーが複数のGoverned Tableを同時に確実に挿入、削除、および変更できるようにします。

タイムトラベル

Governed Tableを使用すると、特定のタイムスタンプに戻ってクエリを実行できます。タイムスタンプを含むGoverned Tableに対してAthenaクエリを実行して、特定の日時のデータの状態を対象にできます。

ストレージの自動最適化

Governed Tablesは、クエリのパフォーマンスを向上させるために、バックグラウンドでGoverned Tableのファイルやファイルのレイアウトを自動的に圧縮および最適化します。

ユースケース

コスト効率の良いデータレイクにおいて、更に以下の要件が求められる場合に有効です。

データの更新が複数から発生する場合

複数のユーザーやアプリケーションがGoverned Tableを更新する場合であっても、同時かつ確実に挿入、削除、および変更します。トランザクションを使用すると、複数のユーザーがS3オブジェクトをアトミックに追加・削除して、データレイクに対するクエリの読み取り一貫性を維持することで他のクエリと分離できます。

トランザクションは、複数ユーザーやアプリケーションから実行できます。トランザクション内の操作が失敗した場合、トランザクション全体がロールバックされます。進行中のトランザクションは、別のトランザクションによって実行された変更から分離されます。トランザクションは、S3でメタデータとデータの一貫したビューを常に表示できるようにすることで、Governed Tableの整合性を保護します。

複数テーブル間のトランザクション

S3オブジェクトでのトランザクションをサポートするGoverned Tableと呼ばれる新しいテーブルタイプが導入されています。トランザクションは複数のオペレーションが可能で、複数のGoverned Tableにまたがることができます。

Lake Formationトランザクションはスナップショットアイソレーションを提供し、同時トランザクションがデータベースの一貫したバージョンを確認できるようにします。これらのバージョンは互いに分離されており、互いに影響を与えることなく同時に実行されます。

ストリーミングデータの保存

ストリーミングデータは、新しいデータがデータレイクに継続的に取り込まれます。この場合、クエリのパフォーマンスに影響を与える可能性のある多くの小さなファイルが作成されます。また、ストリーミングデータの一般的な要件として、ダウンタイムが許されず更新が解決するまで長時間待たずに、クエリを更新から分離しなければなりません。

Governed Tableは、実行中のトランザクションは、別のトランザクションによって実行された変更から分離されます。また、バックグラウンドでGoverned Tableのファイルやファイルのレイアウトを自動的に圧縮および最適化できるため、クエリのパフォーマンスを向上させるために、バックグラウンドでGoverned Tableのファイルやファイルのレイアウトを自動的に圧縮および最適化します。

また、定期的なレポートや反復的な機械学習トレーニングなどの一部のユースケースでは、特定のタイムスタンプに戻ってクエリを実行する機能(タイムトラベル)も有効と考えられます。

行データの削除

自身の個人データを削除されるように要求した顧客データの行など、Governed Tableの個々の行を更新および削除する機能は、ユーザーがGDPRやCCPAなどのプライバシー法の「忘れられる権利」の規定に準拠するのに役立ちます。

Amazon Athenaからのクエリをサポート

re:Invent2021に先立って、Governed Tablesのクエリに対応しました。

まとめ

Lake Formationがトランザクションをサポートする『Governed Tables』がGAになり、トランザクションがサポートされて今までよりもデータベースのようにデータが取り扱えるようになり、データレイクの行単位の追加・更新・削除が可能になりました。実際にデータレイクを運用して悩ましかった多くの小さなファイルも自動最適化する機能も積極的に使いたい機能と言えるでしょう。あまり、アナウンスがありませんが個人的にはタイムトラベルも嬉しい機能の一つです。タイムトラベルは、クエリの最後にFOR SYSTEM_TIME AS OF <timestamp>を追加するだけなので簡単です。

執筆時点では、データの追加・更新・削除は、API経由であり、ETLのL(Load)の工程でAPI呼び出ししてデータを追加・更新・削除することを前提に活用ください。

合わせて読みたい