ソースからの変更データ キャプチャ(CDC)の更新をほぼリアルタイムで分析するには、Datastream を使用して BigQuery にストリーミングします。BigQuery の宛先を構成するときに、Datastream がデータセットを整理する方法を選択し、マージまたは追加専用の書き込みモードを選択して、データの鮮度の制限を設定します。
必要な権限
Datastream は、変更データ キャプチャ(CDC)の更新に BigQuery の組み込みサポートを使用します。Datastream は、BigQuery Storage Write API(gRPC)を使用してストリーミングされた変更を処理して適用することで、BigQuery テーブルを更新します。
API の使用と BigQuery へのデータの取り込みに必要な権限は、Datastream サービス エージェントのロールに付与されます。
BigQuery を宛先として構成する
BigQuery へのストリーミング用に Datastream を構成するには、次の操作を行います。
- Google Cloudプロジェクトで BigQuery API が有効になっていることを確認します。
- [すべてのスキーマに単一のデータセットを使用する] オプションを使用する場合は、BigQuery にデータセットを作成します。
- ストリームの宛先データセットを構成します。
- 書き込みモードを構成する。
- ストリームのデータ未更新期間の上限を指定します。
宛先データセットを構成する
データセットは、BigQuery テーブルへのアクセスを整理して制御するために使用される最上位のコンテナです。
Datastream を使用して BigQuery の宛先のデータセットを構成する際には、次のいずれかのオプションを選択できます。
スキーマごとのデータセット: データセットは、ソースのスキーマ名に基づいて、指定された BigQuery のロケーションで Datastream によって選択または自動作成されます。その結果、ソース内の各スキーマには、BigQuery に対応するデータセットがあります。たとえば、MySQL ソースがあり、このソースのデータベース内に
mydbデータベースとemployeesテーブルがある場合、Datastream は BigQuery にmydbデータセットとemployeesテーブルを作成します。Datastream は、選択したプロジェクトにデータセットを作成します。デフォルトでは、現在のプロジェクトが選択されています。データセットのリストには、選択したプロジェクトで使用可能なデータセットが表示されます。ストリームと同じリージョンにデータセットを作成する必要はありませんが、コストとパフォーマンスを最適化するために、ストリームのすべてのリソースとデータセットを同じリージョンに保持することをおすすめします。
すべてのスキーマに対して単一のデータセット: ストリームの BigQuery データセットを選択します。Datastream は、すべてのデータをこのデータセットにストリーミングします。選択したデータセットに対して、Datastream はすべてのテーブルを
<schema>_<table>として作成します。たとえば、MySQL ソースがあり、このソースのデータベース内に
mydbデータベースとemployeesテーブルがある場合、Datastream は選択したデータセットにmydb_employeesテーブルを作成します。データセットは任意の Google Cloud プロジェクトから選択できます。デフォルトでは、現在のプロジェクトのデータセットが表示されます。選択したプロジェクトに新しいデータセットを作成することもできます。
書き込みモードを構成する
BigQuery へのデータの書き込み方法を定義するには、次の 2 つのモードを使用できます。
マージ: デフォルトの書き込みモードです。選択すると、BigQuery はソース データベースでのデータの保存方法を反映します。つまり、Datastream はデータに対するすべての変更を BigQuery に書き込み、BigQuery はその変更を既存のデータと統合して、ソーステーブルのレプリカである最終テーブルを作成します。マージモードでは、変更イベントの過去の記録は保持されません。たとえば、行を挿入してから更新すると、BigQuery は更新されたデータのみを保持します。その後、ソーステーブルから行を削除すると、BigQuery はその行のレコードを保持しなくなります。
追加専用: 追加専用書き込みモードでは、変更のストリーム(
INSERT、UPDATE-INSERT、UPDATE-DELETE、DELETEのイベント)として BigQuery にデータを追加できます。このモードは、データの過去の状態を保持する必要がある場合に使用します。追記専用書き込みモードについて理解を深めるために、次のシナリオを検討してください。
- 初期バックフィル: 初期バックフィルの後、すべてのイベントは、同じタイムスタンプ、UUID、変更シーケンス番号を持つ
INSERTタイプのイベントとして BigQuery に書き込まれます。 - 主キーの更新: 主キーが変更されると、2 つの行が BigQuery に書き込まれます。
- 元の主キーを含む
UPDATE-DELETE行 - 新しい主キーを含む
UPDATE-INSERT行
- 元の主キーを含む
- 行の更新: 行を更新すると、1 つの
UPDATE-INSERT行が BigQuery に書き込まれます。 - 行の削除: 行を削除すると、単一の
DELETE行が BigQuery に書き込まれます。
- 初期バックフィル: 初期バックフィルの後、すべてのイベントは、同じタイムスタンプ、UUID、変更シーケンス番号を持つ
データの未更新に関する制限事項を指定する
BigQuery は、構成されたデータ未更新の制限に従って、ソースの変更をバックグラウンドで継続的に、またはクエリの実行時に適用します。Datastream が BigQuery で新しいテーブルを作成する場合、テーブルの max_staleness オプションは、ストリームの現在のデータ未更新の上限値に従って設定されます。これにより、テーブルが適用された古さの上限を超えることはありません。データ未更新の上限は、BigQuery マージジョブの頻度に影響しません。
max_staleness オプション付きで BigQuery テーブルを使用する方法については、テーブルの未更新をご覧ください。