Datastream を使用すると、ソースから BigQuery テーブルに直接変更データを複製して、準リアルタイムの分析を行うことができます。BigQuery にデータをストリーミングするときに、マージまたは追加専用の書き込みモードを選択し、datastream_metadata 列を使用して変更イベントを追跡できます。また、スロット予約やテーブルのステイルネスのチューニングなど、費用管理のベスト プラクティスを適用し、既知の制限事項を確認することもできます。
書き込みの動作
BigQuery にデータをストリーミングする際のイベントの最大サイズは 20 MB です。
ストリームを構成するときに、Datastream が変更データを BigQuery に書き込む方法を選択できます。詳細については、書き込みモードを構成するをご覧ください。
テーブルのメタデータ
Datastream は、BigQuery の宛先に書き込まれる各テーブルに datastream_metadata という名前の STRUCT 列を追加します。
[Merge] 書き込みモード
ソースのテーブルに主キーがある場合、列には次のフィールドが含まれます。
UUIDこのフィールドにはSTRINGデータ型が含まれます。SOURCE_TIMESTAMPこのフィールドにはINTEGERデータ型が含まれます。
テーブルに主キーがない場合、列には追加のフィールド IS_DELETED が含まれます。このフィールドには BOOLEAN データ型があり、Datastream が宛先にストリーミングするデータがソースの DELETE オペレーションに関連付けられているかどうかを示します。主キーのないテーブルは追加専用です。
追記専用書き込みモード
datastream_metadata 列には、主キーがあるテーブルと主キーがないテーブルで同じフィールドが含まれます。
UUIDこのフィールドにはSTRINGデータ型が含まれます。SOURCE_TIMESTAMPこのフィールドにはINTEGERデータ型が含まれます。CHANGE_SEQUENCE_NUMBERこのフィールドにはSTRINGデータ型が含まれます。 これは、Datastream が各変更イベントに使用する内部シーケンス番号です。CHANGE_TYPEこのフィールドにはSTRINGデータ型が含まれます。変更イベントのタイプ(INSERT、UPDATE-INSERT、UPDATE-DELETE、DELETE)を示します。SORT_KEYS: このフィールドにはSTRING値の配列が含まれます。これらの値を使用して、変更イベントを並べ替えることができます。
BigQuery の費用を管理する
BigQuery の費用は Datastream とは別に請求されます。BigQuery の費用を管理する方法については、BigQuery CDC の料金をご覧ください。
コスト管理のベスト プラクティス
BigQuery を宛先として Datastream を使用する場合は、次の費用管理のベスト プラクティスを検討してください。
- BigQuery CDC の費用を理解する: BigQuery を宛先として Datastream を使用する場合、変更データ キャプチャ(CDC)にはバックグラウンド マージ オペレーションが含まれます。デフォルトでは、
BACKGROUNDまたはBACKGROUND_CHANGE_DATA_CAPTUREBigQuery 予約割り当てなしで実行される BigQuery CDC 取り込みバックグラウンド ジョブには、オンデマンド料金が適用されます。 - BigQuery 予約を使用する: CDC マージジョブに関連する費用を管理して上限を設定するには、BigQuery スロット予約を購入することをおすすめします。これにより、固定価格で固定容量が提供されるため、費用の予測が容易になります。詳細については、CDC 取り込みで使用する BigQuery 予約を構成するをご覧ください。
max_stalenessを調整する: BigQuery のmax_stalenessパラメータは、データの更新速度と費用の直接的なトレードオフです。値が小さいほど、マージ オペレーションの頻度が高くなり、費用も高くなりますが、データはより最新になります。このパラメータは、予算を超えずにデータの更新速度に関するビジネス要件を満たすレベルに調整します。詳細については、テーブルのステイルネスを管理するをご覧ください。
既知の制限事項
宛先として BigQuery を使用する場合の既知の制限事項は次のとおりです。
- デフォルトでは、Datastream は、主キーなしで BigQuery にすでに複製されているテーブルに主キーを追加することや、主キーを使用して BigQuery に複製されているテーブルから主キーを削除することをサポートしていません。このような変更を行う必要がある場合は、Google サポートにお問い合わせください。すでに主キーが設定されているソーステーブルの主キー定義を変更する方法については、問題の診断をご覧ください。
BigQuery の主キーは、次のデータ型である必要があります。
DATEBOOLGEOGRAPHYINT64NUMERICBIGNUMERICSTRINGTIMESTAMPDATETIME
サポートされていないデータ型の主キーを含むテーブルは、Datastream によって複製されません。
BigQuery では、
.、$、/、@、+の文字を含むテーブル名はサポートされていません。Datastream は、宛先テーブルの作成時にこのような文字をアンダースコアに置き換えます。たとえば、ソース データベースの
table.nameは BigQuery ではtable_nameになります。BigQuery のテーブル名の詳細については、テーブルの命名をご覧ください。
BigQuery は、4 つを超えるクラスタリング列はサポートしていません。4 つ以上の主キー列を持つテーブルを複製する場合、Datastream は 4 つの主キー列をクラスタリング列として使用します。
Datastream は、PostgreSQL 無限大型などの範囲外の日時リテラルを次の値にマッピングします。
- 正の
DATEを9999-12-31の値に - 負の
DATEを0001-01-01の値に - 正の
TIMESTAMPを9999-12-31 23:59:59.999000 UTCの値に - 負の
TIMESTAMPを0001-01-01 00:00:00 UTCの値に
- 正の
BigQuery では、
FLOATまたはREALデータ型の主キーを持つストリーミング テーブルはサポートされていません。このようなテーブルは複製されません。BigQuery の日付型と範囲の詳細については、データ型をご覧ください。ソースが Salesforce または Salesforce Marketing Cloud(プレビュー)の場合、スキーマごとのデータセット構成オプションはサポートされていません。