このページでは、BigQuery データセットにデータを書き込めるように Datastream を構成する方法について説明します。
必要な権限
Datastream は、変更データ キャプチャ(CDC)の更新に対する BigQuery の組み込みサポートを使用します。Datastream は、BigQuery Storage Write API を使用してストリーミングされた変更を処理して適用することで、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
テーブルを作成します。
書き込みモードを設定する
BigQuery にデータを書き込む方法を定義するには、次の 2 つのモードを使用できます。
マージ: デフォルトの書き込みモードです。選択すると、BigQuery はデータがソース データベースに保存されている方法を反映します。つまり、Datastream はデータに対するすべての変更を BigQuery に書き込み、BigQuery は変更を既存のデータと統合して、ソーステーブルのレプリカである最終テーブルを作成します。マージモードでは、変更イベントの過去の記録は保持されません。たとえば、行を挿入してから更新すると、BigQuery は更新されたデータのみを保持します。その後、ソーステーブルから行を削除すると、BigQuery はその行のレコードを保持しなくなります。
追加専用: 追加専用書き込みモードでは、変更のストリーム(
INSERT
、UPDATE-INSERT
、UPDATE-DELETE
、DELETE
のイベント)として BigQuery にデータを追加できます。このモードは、データの過去の状態を保持する必要がある場合に使用します。追記専用書き込みモードをより深く理解するために、次のシナリオについて考えてみましょう。- 最初のバックフィル: 最初のバックフィル後、すべてのイベントは同じタイムスタンプ、Universally Unique Identifier(UUID)、変更シーケンス番号を使用して
INSERT
タイプのイベントとして BigQuery に書き込まれます。 - 主キーの更新: 主キーが変更されると、2 つの行が BigQuery に書き込まれます。
- 元の主キーを含む
UPDATE-DELETE
行 - 新しい主キーを含む
UPDATE-INSERT
行
- 元の主キーを含む
- 行の更新: 行を更新すると、単一の
UPDATE-INSERT
行が BigQuery に書き込まれます。 - 行の削除: 行を削除すると、単一の
DELETE
行が BigQuery に書き込まれます。
- 最初のバックフィル: 最初のバックフィル後、すべてのイベントは同じタイムスタンプ、Universally Unique Identifier(UUID)、変更シーケンス番号を使用して
データの未更新に関する制限事項を指定する
BigQuery は、構成されたデータ未更新の制限に従って、ソースの変更をバックグラウンドで継続的に、またはクエリの実行時に適用します。Datastream が BigQuery で新しいテーブルを作成する場合、テーブルの max_staleness
オプションは、ストリームの現在のデータ未更新の上限値に従って設定されます。
max_staleness
オプション付きで BigQuery テーブルを使用する方法については、テーブルの未更新をご覧ください。