2023 年 5 月 23 日から 6 月 30 日にかけて、4 都市で開催された「Google Cloud Day 2023」。オンラインとオフラインのハイブリッド形式で行われた大阪会場では、クラウドエース株式会社 技術開発部 Data/MLの松本 直樹氏による「AWS データを BigQuery で活用:新しい分析体験を簡単・安価に手に入れる!」と題する講演が行われた。セッションでは、AWS にあるデータを BigQuery へ転送する効果的な方法について、具体的なソリューションと使い方を含めて解説された。
AWS データと BigQuery へ連携する手法とは?
大量なデータを高速に解析できるデータウェアハウスサービス BigQuery を用いてデータを分析し、ビジネス成長に役立てたいと考える企業は多いことだろう。そうしたなかで、さまざまなデータが AWS 上にある場合、どのように BigQuery に転送すればよいか、悩むケースもまた少なくないはずだ。今回の松本氏のセッションでは、簡単かつ安価に AWS から BigQuery へのデータ転送を行う方法とそのためのソリューションが、構成例とともに示された。
BigQuery とは、Google Cloud が提供するフルマネージドでサーバーレスなクラウドデータウェアハウスであり、ペタバイト規模のデータにも対応している。特長としては、フルマネージドでサーバーレスであることや、専門知識が無くとも SQL で簡単に操作できること、そして超高速な処理でコストパフォーマンスが高いことが挙げられる。
松本氏は、「現状 AWS にデータがある場合には、BigQuery を使えないと諦めてしまう人も多いかもしれませんが、決してそんなことはありません。AWS 上にあるデータを簡単に BigQuery に転送してデータ分析することができるのです」と強調した。
Google Cloud ではさまざまなデータ転送ソリューション提供されているが、それらの中でも BigQuery Data Transfer Service を使うことによって、簡単かつ安価に AWS データを BigQuery へと連携することができるという。
BigQuery Data Transfer Service は、Amazon S3 などのデータソースから BigQuery へのデータ転送を自動化してくれるマネージドサービスであり、Amazon S3 からの転送であれば無料で利用することができる。また、転送設定についても、コンソール上から簡単に行える。松本氏は実際に BigQuery Data Transfer Service の画面を示しながら転送設定の方法を紹介した。「このように簡単にデータ転送の仕組みを作れるのが、BigQuery Data Transfer Service の大きな特長です」(松本氏)
Amazon RDS から BigQuery へのデータ連携で考慮すべき 3 つのポイント
続いて同氏は、Amazon RDS から BigQuery へのデータ連携の構成例を紹介しながら、いくつかの考慮ポイントについても触れていった。
Amazon RDS から BigQuery へのデータ連携の構成は非常にシンプルなものであるが、AWS 上では何段階かステップを踏んで処理していく必要がある。まず、自動スナップショット機能を使用して Amazon RDS のデータをスナップショット出力し、そこから AWS Lambda を使用して Amazon S3 にデータをエクスポートする。すると BigQuery Data Transfer Service を使用してデータ転送できるようになる。
BigQuery Data Transfer Service を使用した Amazon RDS から BigQuery へのデータ転送に当たっては、考慮しなければならないポイントが大きくわけて 3 つある。
まず 1 つは、BigQuery Data Transfer Service の起動トリガーをどうするかだ。そして起動トリガーには大きく分けて 2 つあり、まず 1 つが「時間駆動」、もう 1 つが「イベント駆動」である。
1 つ目の時間駆動は、コンソールからスケジュール設定が行えるため実装がかなり容易であるという点がメリットとして挙げられる。その一方で、Amazon S3 へのスナップショットのエクスポートからの時間間隔の調整が必要となってくる。
2 つ目のイベント駆動は、Amazon S3 へのデータのエクスポートが完了したことをトリガーにして、BigQuery Data Transfer Service のAPI を実行する。時間駆動方式とは異なり、スナップショットの Amazon S3 へのエクスポートにおける時間間隔調整が不要だ。ただし、AWS Lambda によって API の呼び出しを実装する必要があるため、実装が少々面倒というデメリットもある。
「それぞれの要件に合わせて時間駆動とイベント駆動を使いわけていく必要がありますが、まず簡単な時間駆動を試してみて、そこから必要に応じてイベント駆動に切り替えるといったアプローチがスムーズかもしれません」(松本氏)
2 つ目のポイントは、日時で処理を行っている際にどのように日時データを保存するかという点だ。
BigQuery のテーブルは、同じテーブルに何回も上書き保存できるが、日別のテーブルを作成して、毎日それぞれのテーブルにデータ転送したいというケースも少なくないだろう。こうした場合、宛先テーブルの設定でテーブルの日付をパラメーター化することで対応可能だ。また、Amazon S3 の URI において、Amazon S3 側で日別のフォルダーを持っており、それらを別々に毎日取得していきたい場合は、日付の部分をパラメーター化することで、日別のデータを取得できるようになる。
そして 3 つ目の考慮ポイントは、エラー検知だ。BigQuery Data Transfer Service には、「メール通知」と「Pub/Sub 通知」と大きく 2 つの通知機能がある。
このうちメール通知は、転送実行を失敗した際にメールで通知が届くというものであり、一方で Pub/Sub 通知は、転送完了時にPub/Sub トピックにメッセージがパブリッシュされるようになっている。このため後者では、エラーだけでなくて正常完了も検知することが可能だ。いずれの通知方法も設定は非常にシンプルである。
さらに松本氏は、Google Cloud で提供されているデータ転送関連のソリューションとして Storage Transfer Service と BigQuery Omni について取り上げる。
Storage Transfer Service は、Amazon S3 などのクラウドデータをクラウドストレージへと簡単に転送できるサービスとなっている。クラウドストレージを経由してBigQuery にデータ移動したい場合の利用が想定される。一方の BigQuery Omni は、Amazon S3 のクラウドデータに対して BigQuery から直接クエリを実行できるサービスである。こちらは、AWS 上のデータをクラウドストレージや BigQuery に移動しない場合に利用することとなる。
ストリーミングデータを簡単かつ安価に転送する“裏技”も!?
セッションの終盤で松本氏は、Aiven というソリューションを用いてストリーミングデータを簡単かつ安価に転送する“裏技”を紹介した。ストリーミングデータを転送する際の課題は、大きく分けて2つある。
1 つ目は準備に非常に手間がかかるという点だ。これはリアルタイム処理に対応したプラットフォームの準備するにあたり、さまざまなサービスを組み合わせる必要があるためだ。2 つ目はデータ転送に伴うネットワーク費用が高額になってしまうことが挙げられる。
そこで Aiven を活用することで、上述した課題を解消することができる。Aiven とは、ストリーミングデータを転送する際に使用する Apache Kafka などのオープンソースなデータプラットフォームをクラウドサービス上に構築することで、マネージドサービスで利用できる SaaS サービスである。
松本氏は Amazon RDS から BigQuery へのデータ連携する場合の具体的な構成を紹介する。まず Aiven を AWS 上に構築し、UI 上から Apache Kafka の設定と Amazon RDS などのデータベースに対するコネクタと BigQuery に対するコネクタの設定をするといった方法をとることで簡単にデータプラットフォームを構築できる。また、ネットワークの費用は Aiven の月額利用料に含まれるため、大幅なコスト削減を期待できるだろう。
本セッションでは AWS 上のデータを BigQuery に転送する方法が紹介されたが、これによって新しい分析体験を実現できるだろう。「クラウドエースとしても AWS データを使った BigQuery での分析あるいはシステム構築も行っているので、相談や支援が必要な場合にはぜひお声がけください」と、松本氏はセッションを締めくくった。
※Google Cloud、BigQuery は Google LLC の商標です。
「AWS データを BigQuery で活用:新しい分析体験を簡単・安価に手に入れる!」
クラウドエース株式会社 技術開発部 Data/ML 松本 直樹 氏
アーカイブ配信はこちらから
[PR]提供:クラウドエース