よくある質問

概要

このページでは、Datastream の使用に関するよくある質問とその回答をご覧いただけます。このよくある質問は、以下のケースに関連しています。

  • Datastream と変更データ キャプチャ(CDC)に関する一般的な質問
  • 一般的なソースの動作と制限事項
  • MySQL ソースの動作と制限事項
  • Oracle ソースの動作と制限事項
  • PostgreSQL ソースの動作と制限事項(AlloyDB for PostgreSQL を含む)
  • SQL Server ソースの動作と制限事項
  • BigQuery の宛先の動作
  • Cloud Storage の宛先の動作
  • Datastream を使用する一般的なユースケース
  • Datastream と Google Cloud データサービスの統合方法
  • セキュリティと接続性
  • Datastream のモニタリング
  • 料金
  • Datastream に関する追加情報

Datastream と変更データ キャプチャ(CDC)に関する一般的な質問

質問 回答
Datastream とは

Datastream は、サーバーレスで使いやすい変更データ キャプチャ(CDC)とレプリケーション サービスです。Datastream を使用すると、AlloyDB for PostgreSQL、PostgreSQL、MySQL、SQL Server、Oracle などのリレーショナル データベース ソースから BigQuery に直接データをシームレスに複製できます。Datastream は、現代のビジネスに必要なスケーラビリティ、スピード、セキュリティ、シンプルさを提供します。サーバーレスで、自動スケーリングのアーキテクチャを持つ Datastream では、ELT(抽出、読み込み、変換)パイプラインを簡単に設定できるため、低レイテンシのデータ レプリケーションにより、準リアルタイムの分析情報を得ることができます。

また、Datastream は、異種のデータベースおよびアプリケーション間でデータ ストリームを最小限のレイテンシで確実に同期できます。このサービスを使用すると、Dataflow テンプレートとの統合を効率化して、データベース同期のために Cloud SQL または Spanner にデータベースを複製できるほか、Cloud Storage のイベント ストリームを直接活用してイベント ドリブンのアーキテクチャを実現することもできます。さらに、BigQuery への変換を使用してデータ パイプラインを構築したいお客様のために、Datastream は Cloud Data Fusion と統合されています。

Datastream でデータをストリーミングする方法はどのようなものですか? Datastream は、次の 2 つの方法のいずれかにより、ソースから宛先にデータをストリーミングします。
  • CDC: ソースから進行中の変更をリアルタイムでキャプチャする。
  • バックフィル: テーブルに存在するデータの履歴スナップショットを提供する。
CDC とは

CDC は、少ないシステム リソースを使用して、より迅速にデータを統合、分析できるデータ統合のアプローチです。これは、データソースから最新の変更(更新、挿入、削除)のみを pull する方法です。多くの場合、ソースが内部トランザクションの整合性のために保持している変更のログを読み取ります。

CDC は、新しいデータを運用データストアやデータ ウェアハウスに読み込む際にソースへの影響を抑える非常に効率的なメカニズムです。これにより、データの宛先へのデータ変更の増分読み込みやほぼリアルタイム ストリーミングが可能になるため、一括読み込みによる更新や不便なバッチ ウィンドウが不要になります。

CDC は、分析、地理的に分散したシステム間のデータの同期、イベント駆動型アーキテクチャなど、データの変更に継続的にアクセスすることで価値を生み出す多くのユースケースで使用できます。

バックフィルとは

Datastream は、進行中の変更だけでなく、バックフィルも使用してソースから既存のデータをすべて pull し、転送先にストリーミングします。その結果、宛先にはソースの履歴データがすべて「バックフィル」されます。バックフィルには次の 2 種類があります。

  • インクリメンタル: テーブルに対するデフォルトのバックフィル タイプ。インクリメンタル バックフィルの際、Datastream は複数のバッチで行の範囲からデータを取得し、バッチで宛先バッチにデータをストリーミングします。
  • フルダンプ: フルダンプ バックフィルの間、Datastream はすべてのデータを一度 pull して宛先にストリーミングします。
バックフィルを実行するときに考慮する必要のある制限はありますか?

バックフィルの制約については、各ソースタイプの既知の制限事項のページをご覧ください。

CDC とバックフィル オペレーションの推奨順序は何ですか? ほとんどの場合、特別な考慮事項はありません。ストリームでバックフィルを有効にすると、データストリームはバックフィルと CDC を同時に実行します。Datastream を使用してバックフィルできない非常に大きなテーブルを複製する場合など、エッジケースでは、ストリームを開始する前に最初にデータを BigQuery に読み込むことが必要な場合があります。
CDC とバックフィル オペレーションのステータスをモニタリングできますか?

オブジェクトごとにバックフィルのステータスをモニタリングできます。

  1. Google Cloud コンソールの [ストリーム] ページに移動します。
  2. モニタリングするストリームをクリックします。
  3. [オブジェクト] タブをクリックします。

CDC のステータスは、実質的にストリームのステータスです。CDC オペレーションが失敗すると、ストリーム全体が失敗します。

Cloud Monitoring では、追加のオブジェクト レベルの指標を利用できます。詳細については、Cloud Monitoring のドキュメントをご覧ください。

変更ストリームとレプリケーションとは

変更ストリームとは、ダウンストリームで利用するために Datastream が宛先に出力する一連のイベントのことです。Cloud Storage に変更ストリームが書き込まれると、特定のテーブルからの一定期間の変更ログイベントを含むファイルのセットが生成されます。イベントは、そのテーブルに対する挿入、更新、削除を表します。イベント ドリブン アーキテクチャなどのユースケースでは、これらのイベントは Dataflow などのサービスにより、Cloud Storage のダウンストリームで使用、処理されます。

レプリケーションとは、Datastream のコンテキストでは宛先のソーステーブルの 1 対 1 の最新表現を意味します。たとえば、Oracle のテーブルの変更が継続的に BigQuery テーブルにレプリケートされる場合、BigQuery テーブルは Oracle テーブルからストリーミングされる変更を使用して最新の状態に維持されます。レプリケーションでは各変更イベントを取り込み、それを使用して宛先を更新することで、変更ストリームを活用します。Datastream を使用すると、BigQuery にデータを直接レプリケートできるほか、Dataflow との統合によって Cloud SQL や Spanner などの他の宛先からのレプリケーションもサポートできます。その場合は Dataflow テンプレートを使用して、Cloud Storage から変更ストリーム イベントを pull し、それらのイベントに応じて宛先テーブルを更新します。

Datastream にはソースのエージェントが必要ですか? ソースにエージェントをインストールする必要はありません。Datastream は、既存のインターフェース(Oracle LogMiner など)を使用して、ソースからデータを取得します。
単一のストリームに含めることができるテーブルの数はどれくらいですか? Datastream は、単一のストリームで最大 10,000 個のテーブルを処理できます。データベースを複数のストリームに分割する技術的な理由はありません。論理フローごとに異なるストリームを使用することにはビジネス上の考慮事項が必要になる場合がありますが、ストリームごとにソース データベースの負荷が増加します。このような負荷は CDC ではごくわずかですが、バックフィルでは重大になる可能性があります。
Datastream を本番環境のデータベースで使用することによるパフォーマンスへの影響はどうですか?

CDC は、新しいデータが宛先のデータストアやデータ ウェアハウスに読み込まれる際に、ソースへの影響を抑える非常に効率的なメカニズムです。また、CDC では、データ変更の宛先への増分読み込みやほぼリアルタイムのストリーミングが可能になるため、一括読み込みによる更新や不便なバッチ ウィンドウが不要になります。

また、Datastream では、同時にバックフィルするタスクの数を制限し、どのオブジェクトをいつバックフィルするかを決定するメカニズムを提供することで、初期のバックフィルの影響を最小限に抑えています。

ソースから Google Cloud にログファイルをコピーできますか? いいえ。Datastream では、データベース サーバーで直接ログのクエリが実行され、指定されたテーブルへの変更のみが宛先に書き込まれます。
Datastream は過去のデータも転送できますか? はい。デフォルトでは、Datastream は、CDC ストリームと並行して、指定したソースのデータベース テーブルからすべての履歴データを取得します。Datastream では、ソース内のデータベース テーブルの一部またはすべてから履歴データを柔軟に取得できます。また、ストリームを構成するときに、過去のバックフィルを無効にすることもできます。
Datastream では 1 回限りの配信が保証されますか? いいえ。Datastream は at-least-once(最低 1 回)配信です。Datastream が各イベントに書き込む追加のメタデータを使用して、重複するデータを削除できます。
Datastream は暗号化されたデータベースを処理できますか? はい、できます。
Datastream は、特定のテーブルと列をソースからストリーミングできますか? はい。Datastream では、テーブルとスキーマの追加リストと除外リストを指定して、ソースから必要なデータのみを宛先にストリーミングできます。対象のテーブルについては、そのテーブルの特定の列を除外することで、宛先にストリーミングするデータを細かく調整できます。ただし、マテリアライズド ビューは複製できません。
ストリームを別のプロジェクトまたはリージョンに移動するにはどうすればよいですか?
  1. 既存のストリームと同じ構成で新しいリージョンまたはプロジェクトにストリームを作成しますが、[Backfill historical data] チェックボックスはオンにしないでください。
  2. 作成したストリームを開始します。
  3. 作成したストリームのステータスが RUNNING になったら、既存のストリームを一時停止します。
  4. 必要に応じて、[Backfill historical data] チェックボックスをオンにして、新しいストリームを変更します。今後ストリームに追加されるテーブル内の既存のデータは、ソースから宛先にストリーミングされます。
Datastream は、データベース ログファイル内の commit されていないトランザクションをどのように処理しますか? データベース ログファイルに commit されていないトランザクションが含まれている場合、トランザクションがロールバックされると、データベースはこれをログファイルに「逆」のデータ操作言語(DML)オペレーションとして反映します。たとえば、ロールバックした INSERT オペレーションには、対応する DELETE オペレーションが含まれます。Datastream は、これらのオペレーションをログファイルから読み取ります。
Datastream を利用できるリージョンは?

Datastream を使用できるリージョンの一覧を表示するには、IP 許可リストとリージョンをご覧ください。

一般的なソースの動作と制限事項

質問 回答
Datastream ではどのソースがサポートされていますか?

Datastream では、Oracle、MySQL、PostgreSQL、AlloyDB for PostgreSQL、SQL Server のソースからのデータのストリーミングを、クラウドホスト型とセルフマネージド型の両方でサポートしています。ソース固有のバージョンについては、次のページをご覧ください。

Datastream は暗号化されたデータベースを処理できますか? はい。
Datastream はどのようにソースからデータを抽出しますか?

MySQL の場合、Datastream は MySQL のバイナリログを処理して変更イベントを抽出します。

Oracle の場合、Datastream は LogMiner と補足ロギング設定を使用して、Oracle の REDO ログからデータを抽出します。

PostgreSQL と AlloyDB for PostgreSQL の場合、Datastream は PostgreSQL の論理デコーディング機能を利用します。論理デコーディングでは、データベースにコミットされたすべての変更が公開され、これらの変更を使用、処理することができます。

SQL Server の場合、Datastream はトランザクション ログを使用してデータ操作言語(DML)の変更を追跡します。

ソースから Google Cloud にログファイルを直接コピーできますか? Datastream は、ログファイル全体をコピーするのではなく、データベース サーバーから直接ログファイルに対してクエリを実行し、指定したテーブルの変更のみを宛先に複製します。
Datastream が処理できるデータにはどのような制限がありますか?

一般的な制限事項と、特定のデータベース ソースに適用される制限事項があります。

一般的な制限事項は次のとおりです。

  • スループット: 行サイズの上限は Cloud Storage の宛先に対して最大 30 MB、BigQuery に対して最大 10 MB で 5 MBPS。
  • レプリケーションでは、次のようなデータ定義言語(DDL)オペレーションはサポートされません。
    • テーブルの中央の列を削除する。値が間違った列に関連付けられるため、データが一致しない可能性があります。
    • 列のデータ型を変更する。データが適切な Datastream の統合タイプに正しくマッピングされず、データが破損する可能性があるため、データの不一致が生じる可能性があります。
    • カスケード削除は無視される。
    • テーブルの切り捨ては無視される。

ソース固有の制限事項については、次のページをご覧ください。

Datastream が生成するすべてのイベントには、どのようなデータが含まれていますか。 生成された各イベント(挿入、更新、削除)には、ソースからのデータ行全体と、各列のデータ型と値が含まれます。各イベントにはイベント メタデータも含まれており、これを使用して順序を設定し、1 回限りの配信を確実に行うことができます。
Datastream で順序は保証されますか? Datastream は順序を保証するものではありませんが、イベントごとに追加のメタデータを提供します。このメタデータを使用すると、宛先での結果整合性が確保されます。ソース、変更の速度と頻度、などのパラメータに応じて、結果整合性は通常 1 時間以内に達成できます。
Datastream では 1 回限りの配信が保証されますか? Datastream は at-least-once(最低 1 回)配信です。Datastream が各イベントに書き込む追加のメタデータを使用して、重複データを削除できます。
Datastream は、ダウンストリーム処理で使用するソースのデータ型をどのように表現していますか?

Cloud Storage などスキーマレスの宛先に書き込む場合、Datastream はすべてのソースでデータ型を正規化することにより、ソース間のデータのダウンストリーム処理を簡素化します。Datastream は、元のソースデータ型(MySQL または PostgreSQL の NUMERIC 型または Oracle の NUMBER 型など)を受け取り、Datastream の統合型に正規化します。

統合型とは、使用可能なすべてのソース型のロスレスのスーパーセットを表し、正規化とは、さまざまなソースのデータをダウンストリームでソースに依存しない方法で簡単に処理およびクエリできることを意味します。

Datastream は、ソース内の構造(スキーマ)の変更をどのように処理しますか? Datastream は、ソースからスキーマを定期的に取得します。スキーマは Datastream の内部スキーマ レジストリに保存され、各イベントは生成時にスキーマを参照します。これにより、Datastream はスキーマの変更を追跡し、これらの変更に基づいて調整を行うことができるため、すべてのデータがストリーミングされ、宛先に適切に読み込まれるようになります。ただし、スキーマの取得の間に一部のスキーマの変更が検出されず、データの不一致が生じる可能性があります。
移行元データベース内の列を削除(ドロップ)しましたが、引き続き宛先に表示されます。その理由は データストリームでは、宛先の列は削除されません。列は手動で削除する必要があります。この動作は意図的なものです。場合によっては、削除した列を宛先に保持したい場合があります。たとえば、Datastream では、ソースの列の名前を変更することを、列を削除して別の列を追加することと解釈します。この場合、転送先の元の列は失われません。
検証エラーによりストリームを開始できません。しかしそれはエラーだと思います。または、とにかくストリームの実行を試行したいと思います。検証に合格するにはどうすればよいですか? API を使用してストリームを開始するには、force=true フラグを追加し、検証チェックをスキップします。なお、検証をスキップしても、ストリームを実行できるとは限りません。また、データベースに必要な構成や権限がない場合でも、検証に失敗する場合があります。
失敗したストリームを再起動できますか?

Datastream によって報告されたエラーに対処することで、Failed ステータスのストリームを修正できます。詳細については、ストリームのトラブルシューティングをご覧ください。

Failed permanently ステータスでストリームを復元することもできます。詳細については、ストリームを復元するをご覧ください。

Datastream はデータベース テーブルをロックしますか?

いいえ。Datastream はテーブルをロックする必要はありません。

各ソースの制限ページでは、ストリームに最大 10,000 個のテーブルを含めることができます。これは、Datastream が 10,000 を超えるテーブルに対して同時に CDC オペレーションを並行して実行できないということですか? いいえ。記載された上限はストリームあたりのものです。複数のストリームのテーブル数が 10,000 を超える場合があります。

MySQL ソースの動作と制限事項

質問 回答
Datastream では MySQL からデータをどのように取得しますか? Datastream は、MySQL のバイナリログを使用して MySQL から変更イベントを抽出します。
Datastream は、Cloud SQL for MySQL リードレプリカ インスタンスをサポートしていますか?

はい。Datastream は、Cloud SQL for MySQL バージョン 5.7 と 8.0 のリードレプリカ インスタンスをサポートしています。

これらのインスタンスでバイナリ ロギングを有効にできます。これを行うには、次の gcloud コマンドを実行します。


gcloud sql instances patch INSTANCE_NAME -- enable-bin-log

詳細については、リードレプリカのバイナリ ロギングをご覧ください。

Datastream がソース MySQL データベースからデータを複製するために最低限必要な権限は何ですか。

MySQL データベースからデータを複製するには、Datastream ユーザーに次の権限を付与する必要があります。

  • SELECT
  • REPLICATION SLAVE
  • REPLICATION CLIENT
Datastream ではバイナリログ圧縮がサポートされていますか?

いいえ、Datastream はバイナリログ トランザクション圧縮によるトランザクション イベントの圧縮をサポートしていません。バイナリログ トランザクション圧縮を無効にして、Datastream で MySQL の変更データ キャプチャ機能を使用します。

組織ですべてのテーブルとデータベースに対する SELECT 権限の付与が許可されていません。Datastream を引き続き使用できますか?

複製する特定のテーブルまたはデータベース内のスキーマ全体に SELECT 権限を付与できます。これを行うには、次のいずれかのコマンドを実行します。


GRANT SELECT ON DATABASE_NAME.TABLE_NAME TO USER_NAME@'%';
または

GRANT SELECT ON DATABASE_NAME.* TO USER_NAME@'%';

以下を置き換えます。

  • DATABASE_NAME: MySQL データベースの名前。
  • TABLE_NAME: SELECT 権限を付与するテーブルの名前。
  • USER_NAME: SELECT 権限を付与するユーザーの名前。

権限を特定のホスト名に制限する場合は、% 文字を特定の IP アドレスまたはアドレス範囲に置き換えます。

Oracle ソースの動作と制限事項

質問 回答
Datastream は Oracle からデータをどのように取得しますか? Datastream は、Oracle LogMiner を使用して Oracle の REDO ログからデータを抽出します。
Datastream には Oracle の GoldenGate ライセンスが必要ですか? いいえ。Datastream は、Oracle LogMiner を使用してデータベースのREDO ログからデータを読み取るため、GoldenGate ライセンスは必要ありません。
Oracle LogMiner がサポートされなくなったらどうなりますか? Oracle LogMiner は一般提供されているすべての Oracle リリースで引き続きサポートされており、Datastream は今後のすべてのリリースで引き続き LogMiner をサポートします。Oracle では LogMiner の CONTINUOUS_MINE オプションのサポートを終了していますが、このオプションは Datastream で使用されていないため、このサポート終了は Datastream に影響しません。
Datastream は、Oracle データベースから転送中のデータの暗号化をサポートしていますか。

Datastream では、Oracle Net サービスに基づいて転送中のデータの暗号化をサポートします。Datastream は REQUESTED モードで実行されます。

Datastream は、セキュア ソケット レイヤ(SSL)と Transport Layer Security(TLS)の暗号化をサポートしていますか?

はい。Datastream は、Oracle ソースへの SSL/TLS 暗号化接続用の TCPS プロトコルをサポートしています。

Datastream は、Oracle マルチテナント アーキテクチャ、特にコンテナ データベース(CDB)とプラガブル データベース(PDB)をサポートしていますか? はい。Datastream は Oracle マルチテナント アーキテクチャ(CDB/PDB)をサポートしていますが、ストリーム内に複製できるプラガブル データベースは 1 つだけです。
組織で GRANT SELECT ANY TABLE 権限の付与が許可されていません。Datastream を引き続き使用できますか?

GRANT SELECT ANY TABLE 権限を付与できない場合は、次のテーブルリストに SELECT 権限を付与できます。

  • ALL_COL_COMMENTS
  • ALL_CONS_COLUMNS
  • ALL_CONSTRAINTS
  • ALL_DB_LINKS
  • ALL_EXTERNAL_TABLES
  • ALL_IND_COLUMNS
  • ALL_INDEXES
  • ALL_LOG_GROUPS
  • ALL_MVIEWS
  • ALL_OBJECTS
  • ALL_PART_TABLES
  • ALL_SEQUENCES
  • ALL_SOURCE
  • ALL_SYNONYMS
  • ALL_TAB_COLS
  • ALL_TAB_COLUMNS
  • ALL_TAB_COMMENTS
  • ALL_TABLES
  • ALL_TRIGGERS
  • ALL_TRIGGER_COLS
  • ALL_TYPES
  • ALL_USERS
  • ALL_VIEWS
  • DATABASE_PROPERTIES
  • DBA_ROLE_PRIVS
  • DUAL
  • PRODUCT_COMPONENT_VERSION
  • ROLE_SYS_PRIVS
  • USER_ROLE_PRIVS
  • USER_TAB_PRIVS

Datastream を使用して変更をストリーミングするには、ストリームに含まれるすべてのテーブルへの読み取りアクセス権も必要です。

ストリームを開始するには、API を使用して検証をバイパスします。詳しくは、ストリームの開始をご覧ください。

Datastream では、Oracle リードレプリカ インスタンスからのレプリケーションがサポートされていますか? Datastream は、インスタンスが構成ガイドラインに従って構成されている限り、Oracle リードレプリカ インスタンスからのレプリケーションをサポートします。
Datastream は Oracle SCAN RAC データベースをサポートしていますか? はい。ただし、Datastream を使用している Oracle Real Application Clusters(RAC)環境の単一クライアント アクセス名(SCAN)機能を使用してデータベースへの直接接続を確立することはできません。この制限を回避するには、いずれかのノードに直接接続するか、Oracle 接続マネージャーを使用します。HAProxy などのリバース プロキシ ソリューションを使用して、プライベート接続構成を作成することもできます。

PostgreSQL ソースの動作と制限事項

質問 回答
Datastream は PostgreSQL からデータをどのように取得しますか? Datastream は、PostgreSQL の論理デコーディング機能を使用して、PostgreSQL から変更イベントを抽出します。
Datastream は、AlloyDB for PostgreSQL または AlloyDB Omni のソースからのレプリケーションをサポートしていますか? はい。Datastream は、この両方のソースをサポートしています。ソース AlloyDB for PostgreSQL データベースの構成については、AlloyDB for PostgreSQL データベースの構成をご覧ください。ソース AlloyDB Omni データベースの構成については、セルフマネージド PostgreSQL データベースの構成をご覧ください。
Datastream は、PostgreSQL リードレプリカ インスタンスからのレプリケーションをサポートしていますか? PostgreSQL がリードレプリカの論理デコードをサポートしていないため、リードレプリカ インスタンスは論理レプリケーションのパブリッシャーとして機能しません。
Datastream は行レベルのセキュリティ(RLS)をサポートしていますか? Datastream は、RLS が有効になっているテーブルのレプリケーションをサポートしていません。ただし、BYPASSRLS 句を使用すると、この制限を回避できます。

ALTER USER USER_NAME BYPASSRLS;

USER_NAME は、Datastream がデータベースとの接続に使用する、RLS ポリシーのバイパス対象に設定するユーザー名に置き換えます。

Datastream は、PostgreSQL ソースから複製するときに、複数の CDC オペレーションを同時に実行できますか? いいえ。PostgreSQL レプリケーションはレプリケーション スロットのコンセプトに依存しており、レプリケーション スロットは同時接続をサポートしていません。レプリケーション スロットから一度に読み取る CDC タスクは 1 つだけです。たとえば、ソース データベースから多数のレコードを削除すると、レプリケーション スロットが削除イベントによって過負荷状態になる可能性があります。これ以降にソースに対して行われた変更は、レプリケーション スロットのキュー内の既存の削除イベントが処理されるまで遅延します。
Datastream は、セキュア ソケット レイヤ(SSL)と Transport Layer Security(TLS)の暗号化をサポートしていますか?

Datastream は、クライアント証明書を必要としない SSL/TLS 暗号化接続をサポートしています。

SQL Server ソースの動作と制限事項

質問 回答
Datastream ではどの SQL Server エディションがサポートされていますか? Datastream では、変更データ キャプチャをサポートする SQL Server データベース バージョンがサポートされています。サポートされている SQL Server のバージョンとエディションの完全なリストについては、バージョンをご覧ください。
SQL Server ソースに対する Datastream CDC レプリケーションの仕組みを教えてください。 Datastream のデータ取り込みプロセスでは、Microsoft CDC ベースのテーブルではなく、トランザクション ログを利用します。このアプローチでは、高速のデータ取得を維持しながらデータベースの負荷を軽減します。
Datastream がソース SQL Server データベースからデータを複製するために最低限必要な権限は何ですか。

MySQL データベースからデータを複製するには、Datastream ユーザーに次のロールと権限を付与する必要があります。

  • データベース sys.fn_dblogsys.fn_dump_dblog に対する SELECT 権限
  • VIEW DATABASE STATE
  • VIEW SERVER STATE
  • ユーザーは、db_owner 固定データベース ロールのメンバーである必要があります。ロールにユーザーを追加する方法については、ソースの SQL Server データベース タイプの構成ページをご覧ください。
SQL Server ソースを構成するときに、ポーリング間隔の変更や切り捨て防止対策の設定などの構成が必要なのはなぜですか? SQL Server ソースからデータをレプリケートすると、Datastream でトランザクション ログを使用して DML の変更が追跡されます。Datastream での読み取り前にログが切り捨てられると、データが失われます。ポーリング間隔の変更と切り捨て防止対策の設定は任意ですが、ダウンタイムや接続の問題が発生した場合でも Datastream がデータを読み取れるよう、これらによって保護が強化されます。詳細については、ソース SQL Server データベースを構成するをご覧ください。

BigQuery の宛先の動作

質問 回答
Datastream と BigQuery はどのように連携してソース データベースからの変更を複製しますか? Datastream は、ソース データベースから変更ストリームを継続的に読み取り、Storage Write API を使用して、upsert イベントと delete イベントを BigQuery 宛先テーブルにストリーミングします。その後、BigQuery は、テーブルのステイルネス構成に基づいてテーブルに変更を適用します。
UPDATE オペレーションと DELETE オペレーションは BigQuery でどのように適用されますか? Datastream は、BigQuery でテーブルを作成するときに、ソースで定義された主キーに従ってテーブルの主キーを設定します。BigQuery がイベントを処理し、テーブルの主キーに基づいて基盤となる BigQuery テーブルに変更を適用します。
Datastream と BigQuery は、主キーのないテーブルをどのように処理しますか? ソーステーブルに主キーがない場合、テーブルは追記専用として扱われ、所定の行の各イベントは BigQuery では独立した行として表示されます。
Datastream と BigQuery はどのようにイベントの順序を処理しますか? BigQuery は、イベント メタデータと内部変更シーケンス番号(CSN)を使用して、イベントを正しい順序でテーブルに適用します。イベントのメタデータの詳細については、イベントとストリームをご覧ください。
Datastream で使用する場合、BigQuery の費用はどのように計算されますか? BigQuery の費用は、Datastream とは別に計算され、課金されます。BigQuery の費用を管理する方法については、BigQuery CDC の料金をご覧ください。
BigQuery へのデータのストリーミング時に Datastream でサポートされている最大行サイズはどのくらいですか? Datastream でサポートされている最大行サイズは 20 MB です。
BigQuery にストリーミングすると、テーブルの先頭に _ が付けられます。BigQuery のテーブルがソース データベースと同じ構造に従うようにこの動作を変更できますか? BigQuery の宛先のデータセットを構成する場合は、スキーマごとにデータセットを作成するか、すべてのスキーマに対して 1 つのデータセットを作成します。スキーマごとにデータセットを作成すると、ソースの各スキーマが BigQuery のデータセットにマッピングされ、ソース スキーマ内のすべてのテーブルがデータセット内のテーブルにマッピングされます。すべてのスキーマ オプションに対して単一データセットを選択すると、BigQuery のテーブルの命名規則に従って、テーブル名の先頭に _ が付けられます。
CDC は、ソースで列を挿入や削除されたときなど、ソースのスキーマの変更をキャプチャできますか?このような変更は、宛先の BigQuery データセットのすでに入力されているテーブルに自動的に反映されますか? Datastream は新しい列を自動的に検出し、新しい行の宛先スキーマに追加しますが、すでに宛先に複製されている列は追加されません。削除された列は無視され、Datastream は移行先に NULL 値を入力します。その後、BigQuery でこれらの列を手動で削除できます。

Cloud Storage の宛先の動作

質問 回答
ファイルはどのように Cloud Storage に作成されますか? Datastream は、テーブルごとにフォルダを作成します。Datastream は、ユーザー定義のサイズまたは時間のしきい値に達するたびに、各フォルダでファイルをローテーション(または新しいファイルを作成)します。また、DataStream はスキーマの変更が検出されるたびにファイルをローテーションします。ファイル名は、スキーマのハッシュに基づく一意のスキーマキーと、それに続くファイルの最初のイベントのタイムスタンプで構成されます。セキュリティ上の理由から、これらのファイル名は人々が読んだり理解したりすることは意図されていません。
Cloud Storage 内のデータが順序付けられていない場合、宛先に読み込まれる前にイベントを並べ替えるにはどうすればよいですか?

各イベントには、ログファイルの行を一意に識別する複数のメタデータ フィールドが含まれており、イベントを並べ替えることができます。次のようなフィールドがあります。

Oracle ソースの場合:

  • rs_id(レコードセット ID)。実際には、3 つの値で構成されます(例: 0x0073c9.000a4e4c.01d0)。rs_id は、REDO ログ内のレコードを一意に識別します。
  • ssn(SQL シーケンス番号)。REDO ログのレコードが長すぎる場合に使用されます。このため、Oracle LogMiner では、レコードを複数の行に分割しています。

MySQL ソースの場合:

  • log_file。ここから、Datastream は CDC レプリケーションでイベントを pull します。
  • log_position。MySQL バイナリログ内のレコードのオフセットを識別します。

PostgreSQL ソースの場合:

  • source_timestamp。ソースでレコードが変更されたときのタイムスタンプです。並べ替えるイベントの source_timestamp 値が同じ場合は、lsn 値を比較します。
  • lsn(ログシーケンス番号)。WAL ログファイル内のレコードのオフセットを識別します。

メタデータ フィールドの詳細については、ソース固有のメタデータをご覧ください。

同じタイムスタンプで複数のファイルが作成された場合、どの順序で処理する必要がありますか? ファイル内およびファイル間の順序は保証されないため、ソースのファイルを処理する順序を決定する最良の方法は、特定のタイムスタンプにおけるすべてのファイルからすべてのイベントを取得し、このセクションで前述の方法を使用して順序を適用することです。
主キーの更新はどのように処理されますか?イベントの前と後の情報はありますか? 行の主キーが変更されると、Datastream によって変更に対応する UPDATE-DELETEUPDATE-INSERT の 2 つのイベントが生成されます。UPDATE-DELETE イベントは更新前のデータを表し、UPDATE-INSERT は更新後のデータを表します。ソース固有のメタデータの詳細については、イベントとストリームをご覧ください。
Cloud Storage へのデータのストリーミング時に Datastream でサポートされている最大行サイズはどのくらいですか? Datastream でサポートされる最大行サイズは 30 MB です。

ユースケース

質問 回答
Datastream を使用する一般的なユースケースは何ですか?

Datastream は CDC とレプリケーション サービスです。つまり、継続的にストリーミングされる変更データにアクセスすることでメリットが得られる、さまざまなユースケースに柔軟に対応できます。Datastream の最も一般的なユースケースは次のとおりです。

  1. 分析: BigQuery にデータを直接レプリケートして、BigQuery で最新の運用データにアクセスできるようにします。BigQuery 内のこの継続的に更新されるデータを使用すれば、最新のデータを反映したダッシュボードを構築できます。それを使用して、たとえばシステムをモニタリングしたり、ビジネス状況に関する最新の分析情報を引き出したりすることができます。
  2. データベースのレプリケーションと同期のシナリオ: Datastream を Dataflow テンプレートと統合して Cloud SQL または Spanner にデータを読み込むことで、これらのデータベースにあるソースデータの最新のレプリケーションを取得できます。ソースから宛先に短いダウンタイムでデータベースを移行する場合や、ソースと宛先が異なるホスティング環境に存在するハイブリッド クラウド構成で、この継続的に更新されるデータを宛先のデータベースで使用できます。
  3. イベント駆動型アーキテクチャ: 最新のマイクロサービスベースのアーキテクチャでは、組織全体で継続的にイベントが更新され、イベント駆動型となるデータの中心的なハブを利用しています。BigQuery や Cloud Storage などの宛先にイベントデータを継続的に書き込むことにより、これらの宛先からのイベントデータの使用をベースにするイベント駆動型アーキテクチャを構築できます。

統合

質問 回答
Datastream は Google Cloud データサービスとどのように統合されますか?

Datastream では、ソースからさまざまな Google Cloud サービスへの CDC データ レプリケーションを提供することで、Google Cloud のデータスイートを補完し、強化します。Datastream は、これらのサービスとシームレスに統合することで、より大きな Google Cloud エコシステムに収まります。

Datastream は、次のデータサービスと統合されています。

  • BigQuery: Datastream では BigQuery Write API を使用して、BigQuery と直接統合します。Datastream は、変更イベントを BigQuery データセットに直接書き込み、そこで既存のデータと変更が継続的にマージされます(UPSERT)。
  • Dataflow: Datastream は Dataflow テンプレートを使用して Dataflow と統合されます。これらのテンプレートは、Cloud Storage からデータを読み取り、そのデータを BigQuery、Cloud SQL for PostgreSQL、Spanner にロードします。これらのテンプレートの目的は、宛先で最新のレプリケートされたソーステーブルを維持することです。各テンプレートは Dataflow UI で利用可能で、Datastream で生成されたファイル用に作られたもので、すぐに使用できる処理を実現します。
  • Cloud Data Fusion: Datastream は、Cloud Data Fusion のレプリケーション機能を使用して Oracle コネクタを強化することにより、Cloud Data Fusion と統合されます。Datastream が内部で透過的に「活用」する複製の Oracle ソースを作成すると、データ パイプラインを簡単に構築できます。このパイプラインには、Datastream が Cloud Data Fusion にストリーミングする Oracle データの変換が豊富に含まれています。
  • Cloud Storage: Datastream は、変更ストリーミングの宛先として書き込みを行うことにより Cloud Storage と統合します。
  • Cloud SQL と Spanner: Datastream と Dataflow テンプレートを使用すると、データベースで最新のレプリケート済みテーブルを維持できます。
Dataflow の Datastream-to-BigQuery テンプレートのデータ操作言語(DML)オペレーションの数に制限はありますか? いいえ。このテンプレートは、ストリーミング挿入 API を使用して BigQuery にデータをロードします。そのため、DML オペレーションの数に上限はありません。ただし、いくつかの割り当て制限が適用されます。

セキュリティと接続性

質問 回答
Datastream は機密データのための安全なサービスですか? Datastream は、ソースから宛先にストリーミングされる転送中のデータを保護するために、複数の安全なプライベート接続構成をサポートしています。データが複製されると、デフォルトで暗号化され、BigQuery または Cloud Storage のセキュリティ管理が利用されます。Datastream によってバッファリングされたデータは、すべて保存時に暗号化されます。
ソースを Datastream に接続するために使用できる接続オプションはどれですか?

構成できる接続方法には、次の 3 種類があります。

  • IP 許可リスト: この方法は、ソースの Datastream のリージョン IP アドレスを許可リストに登録することでパブリック接続を提供します。ストリームを作成すると、Datastream によりこれらの IP アドレスが UI に表示されます。
  • フォワード SSH トンネル: この方法では、リージョン IP アドレスを許可リストに登録するだけでなく、お客様が構成した SSH 踏み台を活用して、パブリック ネットワークを介した安全な接続を提供します。
  • VPC ピアリングを介したプライベート接続: この方法を使用して、Google Cloud の内部ネットワーク経由で Google Cloud でホストされるデータベースに接続します。または、Datastream のプライベート ネットワークと組織の Google Cloud VPC との間で VPC ピアリングを確立して、既存の VPN または Interconnect を活用します。
Datastream による機密データの処理を制限するにはどうすればよいですか?

Datastream では、宛先にストリーミングするソースの特定のデータ要素(スキーマ、テーブル、列)や、ストリーミングから除外する要素を指定できます。

データベース ログには、ストリーム定義で除外された要素からの変更データが含まれている場合があります。ソースでこれらの要素はフィルタできないため、Datastream はこれらの要素に関連付けられたデータを読み取りますが、無視します。

Datastream はどのようにデータベースの認証情報を保護しますか? すべてのユーザー メタデータ(データソースへのアクセスに使用されるユーザー名とパスワードを含む)は、転送中および保存時に暗号化されます。このメタデータへのアクセスは追跡、監査されます。
[プライベート接続構成の作成] には、共有 VPC でプライベート接続構成を作成するために、Datastream サービス アカウントに roles/compute.networkAdmin ロールを付与する必要があると書いてありますが、なぜですか? networkAdmin ロールは、VPC ピアリングを作成する場合にのみ必要です。ピアリングの確立後は、ロールは不要になります。組織で Datastream サービス アカウントへの networkAdmin ロールの付与が許可されていない場合は、次の特定の権限を持つカスタムロールを作成します。

IP 範囲を動的に選択する

  • compute.routes.get
  • compute.routes.list
  • compute.subnetworks.get
  • compute.subnetworks.list

ピアリングされたネットワークを作成する

  • compute.globalOperations.get
  • compute.networks.addPeering
  • compute.networks.removePeering
  • compute.networks.get

IP アドレスを予約する

  • compute.globalAddresses.get
  • compute.globalAddresses.create
  • compute.globalAddresses.createInternal
  • compute.globalAddresses.delete
  • compute.globalAddresses.deleteInternal
  • compute.networks.use
  • compute.networks.listPeeringRoutes
Private Service Connect を使用してプライベート接続構成を作成できますか? いいえ、Datastream は Private Service Connect をサポートしていません。

Datastream のモニタリング

質問 回答
過去のデータがすべて宛先にコピーされたことを知るにはどうすればよいですか? Datastream は、ログファイルの現在のステータスに関する情報を提供します。テーブルのバックフィルが完了したことを示すログエントリが作成されます。
レイテンシはときどき上昇し、時間の経過とともに徐々に低下します。これは想定されることですか? Datastream は、ソースによって生成されたイベント スループットが増加すると自動的にスケールアップします。ただし、ソース データベースと Datastream の両方を保護するため、Datastream で同時に実行できる接続とプロセスの数には上限があります。イベントのスループットの大幅な増加が見込まれ、イベントのバックログの処理が徐々に行われると、レイテンシの一時的な急増が予測されます。

料金

質問 回答
Datastream の料金体系はどうなっていますか?

Datastream の料金は、ソースから宛先にストリーミングされるデータの量(GB)に基づいて課金されます。

Datastream の料金情報の詳細については、料金をご覧ください。

データのサイズの計算方法を教えてください。 請求額は、ソースから宛先にストリーミングされる未加工(非圧縮)のデータサイズに基づいて計算されます。Datastream では、宛先にストリーミングされるデータに対してのみ料金が発生します。
BigQuery、Dataflow または Cloud Data Fusion で Datastream を使用する場合、料金はどのくらいですか? 各サービスは個別に料金設定され、個別に課金されます。

詳細情報

質問 回答
Datastream の使用に関するその他の質問や問題がある場合はどうすればよいですか? Datastream の使用に関して問題が発生した場合は、Google のサポートチームがサポートを行います。また、このトラブルシューティング ガイドでは、Datastream の使用中に発生する可能性のある一般的な問題を扱っています。