LoginSignup
0
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

BigQueryの変更データキャプチャ(CDC)を活用したデータ移行の最適化

Posted at

CDCとは?

変更データキャプチャ(CDC)は、データベースの変更箇所を特定し、それを別のデータベースやデータウェアハウスに適用する技術です。CDCには、トリガーベースやログベースなどの方法があります。ログベースのCDCは、トランザクションログから変更箇所を抽出するため、リアルタイム性が高く、データの同期や更新が効率的に行えます。

BigQueryでのCDCの最適化手法

1. CDCレコードをステージングテーブルに挿入する

まず、各新規CDCレコードと対応する操作タイプ(INSERT、UPDATE、DELETE)をリアルタイムでステージングテーブルに挿入します。ステージングテーブルは、変更データや一時的なデータを保存するためのテーブルです。

-- ステージングテーブルにCDCレコードを挿入
INSERT INTO `project.dataset.staging_table` (record_id, operation_type, updated_at)
VALUES ('12345', 'UPDATE', CURRENT_TIMESTAMP())

2. 定期的にDML MERGEを使用する

次に、定期的にDML MERGEを使用して、レポートテーブルに対して複数のDML操作(INSERT、UPDATE、DELETE)を同時に実行します。これにより、計算オーバーヘッドが削減され、パフォーマンスが最適化されます。

-- レポートテーブルに対するDML MERGE操作
MERGE `project.dataset.report_table` AS T
USING `project.dataset.staging_table` AS S
ON T.record_id = S.record_id
WHEN MATCHED AND S.operation_type = 'UPDATE' THEN
  UPDATE SET T.column1 = S.column1, T.column2 = S.column2, T.updated_at = S.updated_at
WHEN MATCHED AND S.operation_type = 'DELETE' THEN
  DELETE
WHEN NOT MATCHED AND S.operation_type = 'INSERT' THEN
  INSERT (record_id, column1, column2, created_at)
  VALUES (S.record_id, S.column1, S.column2, S.created_at)

なぜこれらの手順が有効なのか?

  1. リアルタイムのデータキャプチャ:

    • CDCレコードをステージングテーブルにリアルタイムで挿入することで、ソースシステムの変更を即座にキャプチャできます。
  2. 効率的なデータ適用:

    • 定期的なDML MERGE操作を使用することで、レポートテーブルへのデータ適用を効率化し、計算オーバーヘッドを削減できます。

これにより、BigQueryのレポーティングテーブルで変更を最小限のレイテンシで利用でき、パフォーマンスを最適化することが可能です。

まとめ

BigQueryでのCDC処理を最適化するためには、ステージングテーブルを使用して変更データをリアルタイムでキャプチャし、定期的にDML MERGEを使用してレポートテーブルにデータを適用することが効果的です。これにより、低レイテンシでリアルタイムのクエリアクセスが可能となり、パフォーマンスが向上します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0