ここでは私(データエンジニアリングを勉強中)が初めてBigQueryをつかったときに感じた疑問をまとめています。学習メモです。
BigQueryについて
BigQueryはGoogle Cloud Platform(GCP)におけるフルマネージドのサーバーレスデータウェアハウスサービスです。これは大規模なデータセットに対してリアルタイムの分析を行い、SQLを使ってデータをクエリするための高速かつ高度にスケーラブルなツールを提供します。
主な特徴
- サーバーレス: ユーザーはサーバーの構成や管理に関わる必要がなく、クエリ実行に集中できます。リソースは自動的に割り当てられ、スケーリングします。
- パフォーマンス: BigQueryは、数秒から数分以内にペタバイト級のデータセットをクエリすることができます。
- スケーラビリティ: データ量の増減に関わらず、自動的にリソースをスケーリングしてパフォーマンスを維持します。
- ストレージと分析の分離: BigQueryでは、ストレージとコンピューティングリソースが分離されており、必要に応じてそれぞれを個別にスケールアップまたはスケールダウンできます。
- SQLインターフェース: BigQueryでは、標準SQLを使用してクエリを実行します。これにより、他のシステムでSQLを使用しているユーザーは容易に移行できます。
- データ統合: Google Cloudの他のサービスや、外部のソースからもデータを簡単にインポートできます。
- セキュリティ: データは自動的に暗号化され、Googleの厳格なセキュリティプロトコルによって保護されています。
- 機械学習統合: BigQuery MLを使用することで、SQLクエリを用いて機械学習モデルを作成し、訓練し、予測することができます。
BigQueryについての疑問に思ったこと
①SQLをたたいたら加工したデータを返してくれるものとイメージしていました。データウェアハウス(DWH)につかわれてるけど、スケーラビリティとか、サーバレスとかのイメージが強すぎて、データの保存のしてくれるの?
データほ保存もしてくれます。
②データ保存はしてくれるが、データレイクにはGoogle StorageとBigQueryどっちを使えばいいのか?
データ分析の頻度
- リアルタイムまたは頻繁な分析: BigQueryはリアルタイムや頻繁なデータ分析に適しています。
- たまにしか行わない分析: GCSにデータを保存し、分析が必要な時にBigQueryへロードします。
データの種類
- 非構造化データ: GCSは非構造化データを大量に保存し、必要に応じてアクセスするのに適しています。
- 構造化データ: BigQueryは構造化データに対する複雑なクエリ実行に適しています。
コストとパフォーマンス
- GCS: 低コストでデータを保存できますが、分析のためにはデータの移動が必要になる場合があります。
- BigQuery: 分析パフォーマンスは高いですが、ストレージのコストが高くなる可能性があります。
GCSとBigQueryの併用
実際の運用では、GCSを原始データの保管場所として利用し、分析を必要とするデータはBigQueryにインポートして利用するのが一般的です。これにより、データレイクとデータウェアハウスの利点を両方享受することができます。