【ADP】WEB問題集:データ準備編

WEB問題集

ADP#1(data-preparation)

小売企業がオンプレミスのOracleデータベースから日次でBigQueryへ売上データを取り込みたいと考えています。データは数百GBで、CDC(変更データキャプチャ)は不要、夜間バッチで全件転送します。最も運用負荷が低くマネージドな取り込み方法はどれですか。

ディスカッション 0

正解:D

正解の根拠

夜間バッチでCDC不要、全件転送という要件では、CSV/Avro等にエクスポートしてCloud Storage経由で bq load する方法がもっとも単純で運用負荷が低く、コストも低く抑えられます。マネージドコンポーネント(Cloud Storage、BigQuery Loadジョブ)のみで完結します。

選択肢適合性
AStorage Transfer Service はOracleを直接ソースにできません
BDatastreamは継続CDC向けで要件過剰
CシンプルなバッチETLの定石
DDataflowは柔軟だが運用負荷が増える

不正解の理由

  • A: Storage Transfer Service のソースはS3/Azure/HTTP/オンプレPOSIXファイル等であり、Oracle を直接接続できません。
  • B: Datastreamはストリーミングレプリケーション用途で、夜間バッチ全件転送には機能・コスト共に過剰です。
  • C: Dataflowは強力ですが、テンプレート管理・パイプライン監視が必要で、要件に対して複雑すぎます。

参考:Loading data from Cloud Storage

ADP#2(data-preparation)

IoTセンサーから毎秒数十万件のイベントが発生し、これをBigQueryで近リアルタイム分析したいと考えています。順序保証は不要、重複は許容範囲、エンドツーエンドのレイテンシは数秒以内が目標です。最適な取り込みアーキテクチャはどれですか。

ディスカッション 0

正解:D

正解の根拠

高スループットの近リアルタイム取り込みでは、Pub/Sub をバッファ、Dataflow で変換、BigQuery Storage Write API で低レイテンシ書き込み、というのがGoogle推奨パターンです。Storage Write API は exactly-once セマンティクスとストリーミング書き込みを両立します。

項目推奨
バッファPub/Sub
処理Dataflow ストリーミング
書き込みStorage Write API

不正解の理由

  • B: 5分間隔のファイルバッチでは数秒レイテンシ要件を満たせず、BigQuery Data Transfer Service はSaaS統合用途です。
  • C: Cloud SQL は毎秒数十万件のINSERTには性能限界があり、バッチ集約も遅延が大きすぎます。
  • A: Cloud Functions と bq コマンドではスループット不足で、コストとレート制限の両面で破綻します。

参考:BigQuery Storage Write API

ADP#3(data-preparation)

データアナリストがBigQueryに格納するファイル形式を選定しています。読み取りは列指向の集計クエリが中心、ファイルサイズはできるだけ小さく、スキーマ進化(カラム追加)にも対応したい場合、どのファイル形式が最適ですか。

ディスカッション 0

正解:D

正解の根拠

Parquet は列指向フォーマットで、列単位の集計クエリにおいて必要列のみ読み込めるため I/O とコストを削減できます。Snappy圧縮で高い圧縮率を保ちつつ、スキーマ進化(カラム追加・型のwidening)にも対応します。

形式指向集計性能スキーマ進化
CSVテキスト不可
JSON柔軟だが非効率
Avro強い
Parquet対応

不正解の理由

  • A: CSVはテキスト形式で型情報を持たず、列指向集計でも全列を読み込むためI/O効率が悪いです。
  • B: JSON Lines は柔軟ですがサイズが大きく、列単位の最適化が効きません。
  • C: Avro は行指向で書き込み・全件読み出しに強いものの、列単位集計ではParquetに劣ります。

参考:Loading Parquet data from Cloud Storage

ADP#4(data-preparation)

Amazon S3 に保存されている過去5年分の履歴ログ(合計50TB)をGoogle Cloud に一括移行したいと考えています。ネットワーク帯域は十分にあり、初回フルコピーが目的、以後の同期は不要です。最も適切なサービスはどれですか。

ディスカッション 0

正解:B

正解の根拠

Storage Transfer Service はS3/Azure Blob/HTTPなどから Cloud Storage への大規模転送に最適化されたフルマネージドサービスで、エージェントレスで動作し、帯域制御・スケジュール・整合性チェックを内蔵しています。十分な帯域があれば50TB程度はオンライン転送が現実的です。

シナリオ推奨サービス
S3 から GCS(オンライン)Storage Transfer Service
低帯域・PB級Transfer Appliance
継続CDCDatastream

不正解の理由

  • A: 手動転送は再開・整合性検証・スループット制御をすべて自前実装する必要があり、運用負荷が高すぎます。
  • D: Transfer Appliance は帯域が不足する場合や数百TB以上の超大規模転送向けで、本ケースでは過剰です。
  • C: Datastream はDB の継続的CDC用で、S3オブジェクトの一括移行には対応しません。

参考:Storage Transfer Service overview

ADP#5(data-preparation)

BigQuery で扱うCSVファイルが Shift_JIS でエンコードされており、bq load 実行時に文字化けが発生しています。最も簡潔で確実な対処方法はどれですか。

ディスカッション 0

正解:C

正解の根拠

BigQuery のCSVローダーが公式サポートするエンコーディングはUTF-8とISO-8859-1のみです。Shift_JIS は未サポートのため、Cloud Storage 配置前にUTF-8へ変換するのが最も確実で再現性の高い方法です(iconv/PowerShell の Get-Content -Encoding 等)。

BigQuery対応エンコーディング
UTF-8(既定)
ISO-8859-1
UTF-16BE/UTF-16LE/UTF-32BE/UTF-32LE(一部)

不正解の理由

  • A: --encoding に Shift_JIS を指定する選択肢はなく、UTF-8指定だけでは元データの文字化けは解消しません。
  • B: BYTES型で読むと型情報が失われ、後段クエリでの変換が複雑化し品質保証も難しくなります。
  • D: Content-Encoding はHTTP圧縮メタデータであり、文字エンコーディング変換とは無関係です。

参考:Loading CSV data from Cloud Storage