よくある質問

概要

このページでは、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 のイベント ストリームを直接活用してイベント ドリブンのアーキテクチャを実現することもできます。

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

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

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

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

バックフィルとは

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

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

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

CDC オペレーションとバックフィル オペレーションの推奨順序は何ですか。 ほとんどの場合、特別な考慮事項はありません。ストリームでバックフィルが有効になっている場合、Datastream はバックフィルと 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 など)を使用して、ソースからデータを取得します。
1 つのストリームに含めることができるテーブルの数はいくつですか? Datastream は、1 つのストリームで最大 10,000 個のテーブルを処理できます。データベースを複数のストリームに分割する技術的な理由はありませんが、PostgreSQL ソースからの大規模なトランザクションを複製する場合など、さまざまな論理フローに異なるストリームを使用するビジネス上の考慮事項がある場合があります。ただし、各ストリームはソース データベースの負荷を増加させます。このような負荷は 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 の宛先の行サイズの上限は 100 MB、BigQuery の行サイズの上限は 20 MB です。
  • レプリケーションでは、次のようなデータ定義言語(DDL)オペレーションはサポートされません。
    • テーブルの中央の列を削除する。値が間違った列に関連付けられるため、データが一致しない可能性があります。
    • 列のデータ型を変更する。データが適切な Datastream の統合タイプに正しくマッピングされず、データが破損する可能性があるため、データの不一致が生じる可能性があります。
    • カスケード削除は無視される。
    • テーブルの切り捨ては無視される。

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

Datastream が生成するすべてのイベントには、どのようなデータが含まれていますか。 生成される各イベント(挿入、更新、削除)には、ソースからのデータの行全体と、各列のデータ型と値が含まれます。各イベントには、順序付けと exactly-once 配信の確実な実現に使用できるイベント メタデータも含まれます。
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 は、宛先の列を削除しません。列は手動で削除する必要があります。この動作は意図されたものです。削除された列を宛先に保持することが望ましい場合があるためです。たとえば、Datastream では、ソースの列の名前を変更することを、列を削除して別の列を追加することと解釈します。この場合、宛先の元の列を失うわけにはいきません。
検証エラーによりストリームを開始できません。しかしそれはエラーだと思います。または、とにかくストリームの実行を試行したいと思います。この検証を通過するにはどうすればよいですか? force=true フラグを追加して検証チェックをスキップすると、API を使用してストリームを開始できます。なお、検証をスキップしても、ストリームを実行できるとは限りません。また、データベースに必要な構成や権限がない場合でも、検証に失敗する場合があります。
失敗したストリームを再開できますか?

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

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

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

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

各ソースの制限ページでは、ストリームに最大 10,000 個のテーブルを含めることができると指定されています。つまり、Datastream では 10,000 を超えるテーブルに対して CDC オペレーションを同時に実行できないということですか? いいえ。上限は 1 回のライブ配信あたりです。テーブルの合計数が 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 Connection Manager を使用します。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 のデータ取り込みプロセスでは、ソースの構成に応じてトランザクション ログまたは変更テーブルが使用されます。詳細については、ソース SQL Server データベースをご覧ください。
Datastream がソース SQL Server データベースからデータを複製するために最低限必要な権限は何ですか。

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

変更テーブルの CDC メソッドの場合:

  • db_owner
  • db_denydatawriter

また、トランザクション ログの CDC メソッドの場合:

  • データベースと sys.fn_dblog 関数に対する SELECT 権限
  • dbo.sysjobs テーブルに対する SELECT 権限
  • VIEW SERVER STATE
  • ソースの構成について詳しくは、データベース タイプに応じてそれぞれの構成ページをご覧ください。

トランザクション ログを使用するときに、ポーリング間隔の変更や切り捨て防止対策の設定などの構成が必要なのはなぜですか? トランザクション ログを使用して SQL Server ソースからデータをレプリケートする場合、Datastream で読み取り前にログが切り捨てられると、データが失われます。ポーリング間隔の変更と切り捨て防止対策の設定は任意ですが、ダウンタイムや接続の問題が発生した場合でも Datastream がデータを読み取れるよう、これらによって保護が強化されます。詳細については、ソース SQL Server データベースを構成するをご覧ください。
SQL Server ソースから複製する場合に選択する CDC 方法

ソースの SQL Server データベースの構成に基づいて、使用可能な 2 つの CDC 方法のいずれかを選択できます。

  • トランザクション ログ: この方法を選択すると、データベース ログから直接変更を処理できます。この手法は最高のパフォーマンスを提供し、より効率的ですが、ご利用のデータベースでサポートされない可能性のある追加の構成手順が必要になります。
  • 変更テーブル: 専用の変更テーブルからの変更を処理するには、この方法を選択します。この方法は制限が少なく構成も容易ですが、スループットが低下し、データベースの負荷が高くなります。

詳細については、ソースとしての SQL Server の概要をご覧ください。

BigQuery の宛先の動作

質問 回答
Datastream と BigQuery はどのように連携してソース データベースからの変更を複製しますか? Datastream は、ソースデータベースから変更ストリームを継続的に読み取り、Storage Write API を使用して、アップサート イベントと削除イベントを BigQuery の宛先テーブルにストリーミングします。BigQuery は、テーブルの未更新の構成に基づいて、テーブルに変更を適用します。
BigQuery でデータ操作言語(DML)オペレーションが適用される仕組み
  • 追加専用モードでは、データは変更のストリームとして BigQuery に追加され、INSERTUPDATE-INSERTUPDATE-DELETEDELETE イベントごとに個別の行が追加されます。
  • Merge モード(デフォルト)では、Datastream が BigQuery にテーブルを作成するときに、ソースで定義された主キーに従ってテーブルの主キーが設定されます。BigQuery はイベントを処理し、ソーステーブルの主キーに基づいて基になる BigQuery テーブルに変更を適用します。ソーステーブルに主キーがない場合、追記専用モードが使用された場合と同様に扱われます。
Datastream と BigQuery はイベントの順序をどのように処理しますか? BigQuery は、イベントのメタデータと内部変更シーケンス番号(CSN)を使用して、イベントをテーブルに正しい順序で適用します。イベントのメタデータの詳細については、イベントとストリームをご覧ください。
Datastream で使用する場合の BigQuery の費用はどのように計算されますか? BigQuery の費用は、Datastream とは別に計算され、請求されます。BigQuery の費用を管理する方法については、BigQuery CDC の料金をご覧ください。
BigQuery へのデータのストリーミング時に Datastream でサポートされている最大行サイズはどのくらいですか? Datastream でサポートされている最大行サイズは 20 MB です。
BigQuery にストリーミングする場合、テーブルの接頭辞は _ になります。BigQuery のテーブルがソース データベースと同じ構造になるように、この動作を変更できますか? BigQuery の宛先にデータセットを構成する場合は、スキーマごとにデータセットを作成するか、すべてのスキーマに単一のデータセットを作成します。スキーマごとにデータセットを作成すると、ソース内の各スキーマが 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 レプリケーションでイベントを取得する場所。
  • log_position: MySQL バイナリログ内のレコードのオフセットを識別します。

PostgreSQL ソースの場合:

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

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

同じタイムスタンプで複数のファイルが作成された場合、どの順序で処理する必要がありますか? ファイル内およびファイル間の順序は保証されないため、ソースのファイルを処理する順序を決定する最良の方法は、特定のタイムスタンプのすべてのファイルからすべてのイベントを取得し、このセクションで説明した方法で順序を適用することです。
主キーの更新はどのように処理されますか?イベントの前と後の情報はありますか? 行の主キーが変更されると、Datastream によって変更に対応する UPDATE-DELETEUPDATE-INSERT の 2 つのイベントが生成されます。UPDATE-DELETE イベントは更新前のデータを表し、UPDATE-INSERT は更新後のデータを表します。ソース固有のメタデータの詳細については、イベントとストリームをご覧ください。
Cloud Storage へのデータのストリーミング時に Datastream でサポートされている最大行サイズはどのくらいですか? Datastream でサポートされている最大行サイズは 100 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 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 はどのようにしてデータベース認証情報を安全に保ちますか? すべてのユーザー メタデータ(データソースへのアクセスに使用されるユーザー名とパスワードを含む)は、転送中と保存時に暗号化され、Google 独自のストレージ システムに保存されます。このメタデータへのアクセスは追跡され、監査されます。
[プライベート接続構成の作成] には、共有 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 によって処理されるデータのサイズに基づいて計算されます。Datastream では、宛先にストリーミングされたデータに対してのみ料金が発生します。
BigQuery または Dataflow で Datastream を使用する場合、料金はどのくらいですか? 各サービスは個別に料金設定され、個別に課金されます。

その他の情報

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

次のステップ