はじめに
AWSからGoogle CloudのBigQueryへのデータ転送を検討する機会がありました。
この記事では、主要な転送パターンとそれぞれのメリット・デメリットを説明し、最適な方法を選ぶためのガイドを提供します。
データ転送の検討した3パターン
AWS S3 にあるデータをBigQueryへ転送する方法として、以下3つのパターンを紹介します。
- Storage Transfer Service:AWS S3からGoogle Cloud Storageを経由してBigQueryにデータを転送する方法。
- BigQuery Data Transfer Service for Amazon S3:S3から直接BigQueryへデータを転送する方法。
- Google BigQuery Connector for AWS Glue:AWS GlueからBigQueryへデータを送る方法。
この他にも、Amazon S3 BigLakeテーブルやBigQuery Omniなど、AWS環境を直接参照する方法もありますが、地域の制約により利用できないケースもあります。詳細はBigQuery Omniの紹介で確認してください。
各パターンの詳細と図解
1. Storage Transfer Service
概要:AWS S3からGoogle Cloud Storageへデータを転送し、そこからBigQueryにインポートする方法です。Cloud Storageを経由し、Functions等で処理することを想定しているため、変換やそのまま投入など要件によって、柔軟な操作が可能です。
- データ転送に関する詳細は、Storage Transfer Serviceのドキュメントを参照してください。
メリット:
– データ転送のタイミングや頻度を柔軟に調整できる
– データ転送後にCloud Storageに配置し、Cloud Functionsでの変換が可能
デメリット:
– Storage Transfer Service のイベント駆動型構成にはSQSなどAWS側に追加作業が必要
– 転送以外でマネージドサービスの利用が少なく、開発要素が多い
2. BigQuery Data Transfer Service for Amazon S3
概要:S3から直接BigQueryへデータを転送する方法です。Cloud Storageを経由しないため、効率的な転送が可能ですが、ジョブの実行周期のデメリットが大きいです。
- 転送の詳細は、BigQuery Data Transfer Service for Amazon S3のドキュメントをご覧ください。
メリット:
– S3から直接BigQueryへ転送できるため効率的
– Google Cloud Storageを経由しないため、データ保持コストが低い
デメリット:
– スケジュール実行は24時間ごと
– BigQueryでのスキーマ設定とテーブル作成が必要
3. Google BigQuery Connector for AWS Glue
概要:AWS GlueからBigQueryへデータを転送する方法です。AWS Glueでデータ整形を行い、BigQueryに送るため、AWS内での処理が可能です。カスタムコネクタを利用する、ということを頭にいれておく必要があります。
- AWS Glueカスタムコネクタの製品詳細で利用するカスタムコネクタ自体の内容を確認できます。
- Google BigQuery Connector for AWS Glueの技術リポジトリでは、カスタムコネクタ内で使用する技術の詳細が確認できます。
- AWS Glueとカスタムコネクタを使用してGoogle BigQueryへデータを移行するというブログ記事では、転送方法の参考になります。
メリット:
– AWS Glueを使い慣れている場合、学習コストが低い
– Glue上でデータ整形ができるため、AWS内での処理が完結しやすい
デメリット:
– カスタムコネクタの制限が多い
– 複数クラウドを跨った転送のため、問題発生時のサポート問い合わせや問題解決にあたっての切り分けなどが単一クラウドより難解になると考えられる
まとめ
AWSからGoogle CloudのBigQueryへのデータ転送には、それぞれ異なるメリットとデメリットがあります。目的やリソース、スキルセットに基づいて方法を選択する必要があることがわかりました。
思ったこととしては、Google Cloud の BigQuery への連携する方法というのが、多くあり、上記した通りのメリデメを理解したうえで利用しないと、ミスマッチがあったり、他の選択肢の方がマッチするというケースは起こりそうだな、と思いました。
今後、今回検討した内容とその後のアップデートを加味して、また新たにアーキテクチャ検討する際には気をつけたいきたいと思います。
次回のブログでは、Cloud Functionsを使ったBigQueryへのデータ投入に関して、経験した内容を紹介します。