よくある質問

をご覧ください。

概要

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

  • Datastream と変更データ キャプチャ(CDC)に関する一般的な質問
  • MySQL 変更データ キャプチャ(CDC)
  • Oracle 変更データ キャプチャ(CDC)
  • Datastream を使用する一般的なユースケース
  • Datastream と Google Cloud データサービスの統合方法
  • Datastream がサポートするソースと宛先
  • Datastream の動作と制限事項
  • セキュリティと接続性
  • Datastream ファイルの処理
  • Datastream のモニタリング
  • 料金
  • Datastream に関する追加情報

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

質問 回答
Datastream とは

Datastream は、サーバーレスで使いやすい変更データ キャプチャ(CDC)およびレプリケーション サービスであり、異種のデータベースおよびアプリケーション間で、最小限のレイテンシでデータ ストリームを確実に同期できます。Datastream では、Oracle データベースと MySQL データベースから Cloud Storage へのデータのストリーミングの変更がサポートされています。

このサービスを使用すると、Dataflow テンプレートとの統合を効率化して、BigQuery で最新のマテリアライズド ビューを分析用に強化することや、データベース同期のために Cloud SQL または Cloud Spanner にデータベースを複製すること、Cloud Storage のストリームを直接活用してイベント ドリブンのアーキテクチャを実現することができます。BigQuery への変換を含むデータ パイプラインを構築する場合は、Datastream も Cloud Data Fusion と統合されます。

CDC とは

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

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

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

バックフィルとは Datastream は、進行中の変更だけでなく、バックフィルも使用してソースから既存のデータをすべて pull し、転送先にストリーミングします。その結果、宛先にはソースの履歴データがすべて「バックフィル」されます。
Datastream でデータをストリーミングする方法はどのようなものですか? Datastream は、次の 2 つの方法のいずれかにより、ソースから宛先にデータをストリーミングします。
  • CDC: ソースから進行中の変更をリアルタイムでキャプチャする。
  • バックフィル: テーブルに存在するデータの履歴スナップショットを提供する。
変更ストリームとは 変更ストリームは、ダウンストリームで利用するために Cloud Storage などの宛先に Datastream が出力する一連のイベントです。変更ストリームの転送先に書き込まれた結果は、特定のデータベース テーブルからの一定期間の変更ログイベントが含まれるファイルのセットです。これらのイベントは、ソースからそのテーブルへの挿入、更新、削除を表し、イベント駆動型アーキテクチャの場合は Dataflow などのサービスで宛先のダウンストリームに使用され、処理されます。
マテリアライズド ビューとは

マテリアライズド ビューは、宛先のソーステーブルの 1 対 1 の最新表現です。このタイプのビューの例としては、テーブルの変更が継続的に BigQuery テーブルにレプリケートされる Oracle データベース テーブルが挙げられます。そのため、Oracle テーブルからストリーミングした変更を使用して BigQuery テーブルが最新の状態に保たれます。

マテリアライズド ビューでは、各変更イベントを使用してマテリアライズド ビューを更新することによって、変更ストリームを活用します。Datastream では、宛先から変更ストリーム イベントを pull して適切に宛先テーブルを更新するテンプレートを活用し、Dataflow との統合により、BigQuery、Cloud SQL、Cloud Spanner などの宛先にマテリアライズド ビューを提供します。

Datastream にはソースのエージェントが必要ですか? ソースにエージェントをインストールする必要はありません。Datastream は、既存のインターフェース(Oracle LogMiner など)を使用して、ソースからデータを取得します。
Datastream を本番環境のデータベースで使用することによるパフォーマンスへの影響はどうですか?

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

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

ログファイルをソースから Google Cloud にコピーできますか? いいえ。Datastream では、データベース サーバーで直接ログのクエリが実行され、指定されたテーブルへの変更のみが宛先に書き込まれます。
Datastream は過去のデータも転送できますか? はい。デフォルトでは、Datastream は CDC ストリームと並行して、指定したソースのデータベース テーブルからすべての履歴データを取得します。Datastream では、ソースの一部またはすべてのデータベース テーブルから履歴データを柔軟に取得できます。また、ストリームを構成する際、過去のバックフィルを無効にすることもできます。
Datastream でサポートされている最大行サイズはどのくらいですか? Datastream は現在、3 MB 以下の行に制限されています。
Datastream で順序は保証されますか? Datastream では順序は保証されません。イベントごとに追加のメタデータが提供され、それを使用して宛先バケットの結果整合性が確保されます。ソース、変更の速度と頻度、などのパラメータに応じて、結果整合性は通常 1 時間以内に達成できます。
Datastream では 1 回限りの配信が保証されますか? いいえ。Datastream は at-least-once(最低 1 回)配信です。Datastream が各イベントに書き込む追加のメタデータを使用して、重複するデータを削除できます。
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 許可リストとリージョンをご覧ください。

MySQL 変更データ キャプチャ(CDC)

質問 回答
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 データベース テーブルをロックしますか?Datastream にはなぜ LOCK TABLE 権限が必要なのですか?

ほとんどの場合、Datastream はテーブルをロックする必要はありません。ただし、特定の条件(InnoDB ストレージ エンジンと分離レベルが REPEATABLE READ に設定されている MySQL 8 など)では、Datastream はバックフィル中にテーブルのロックを取得します。

Oracle 変更データ キャプチャ(CDC)

質問 回答
Datastream は Oracle からデータをどのように取得しますか? Datastream は、Oracle LogMiner を使用して Oracle の REDO ログからデータを抽出します。
Datastream には Oracle の GoldenGate ライセンスが必要ですか? いいえ。Datastream は Oracle LogMiner を使用して、データベースの REDO ログからデータを読み取ります。
Oracle LogMiner がサポートされなくなった場合はどうなりますか? Oracle は今後のリリースでサポートされる予定です。現時点では、Oracle LogMiner は一般提供されているすべての Oracle リリースで引き続きご利用いただけます。
Datastream は、Oracle データベースから転送中のデータの暗号化をサポートしていますか。

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

Datastream は、Oracle マルチテナント アーキテクチャ、特にコンテナ データベース(CDB)とプラガブル データベース(PDB)をサポートしていますか? Datastream は現在、CDB と PDB をサポートしていませんが、今後サポートされる予定です。

ユースケース

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

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

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

統合

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

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

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

  • Dataflow: Datastream は Dataflow テンプレートを介して Dataflow と統合されます。これらのテンプレートは、Cloud Storage からデータを読み取り、そのデータを BigQuery、Cloud SQL for PostgreSQL、Cloud 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、Cloud Spanner、BigQuery: Datastream は、これらの宛先データベースと統合されます。Dataflow テンプレートを使用すると、データベースで最新のマテリアライズド ビューを維持できます。

送信元と宛先

質問 回答
Datastream ではどのソースと宛先がサポートされていますか?
  • ソース: Datastream では、Oracle のソースと MySQL のソースからストリーミングされたデータを、クラウドホスト型とセルフマネージド型の両方でサポートしてます。ソースのサポートの詳細については、動作と制限事項をご覧ください。
  • 宛先: Datastream では、Cloud Storage にストリーミングされたファイルにデータの変更を書き込むことができます。Dataflow テンプレートを使用して、このデータを Cloud Storage から BigQuery、Cloud Spanner、Cloud SQL for PostgreSQL に転送できます。
Datastream は暗号化されたデータベースを処理できますか? はい。

動作と制限事項

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

MySQL の場合、Datastream はバージョン 5.6、5.7、および 8.0 をサポートします。以下の MySQL 準拠のデータベースがサポートされています(ただし、これらに限定されません)。

  • オンプレミスまたはクラウド プロバイダのいずれかでセルフホストされるデータベース
  • Cloud SQL for MySQL
  • AWS RDS MySQL と Aurora MySQL
  • MariaDB
  • Alibaba Cloud PolarDB
  • Percona Server for MySQL

Oracle の場合、Datastream は 11g リリース 2 以上をサポートします(SCAN 構成、CDB/PDB、自律型 DB の RAC はサポートしていません)。以下の Oracle 準拠のデータベースがサポートされています(ただし、これらに限定されません)。

  • オンプレミスまたはクラウド プロバイダのいずれかでセルフホストされるデータベース
  • AWS RDS
  • Oracle Cloud
Datastream はどのようにソースからデータを抽出しますか?

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

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

ログファイルをソースから Google Cloud に直接コピーできますか? Datastream は、ログファイル全体をコピーするのではなく、データベース サーバーから直接ログファイルに対してクエリを実行し、指定したテーブルの変更のみを宛先に複製します。
Oracle ソースの場合、Datastream には GoldenGate ライセンスが必要ですか? Datastream は、Oracle LogMiner を使用してデータベースのREDO ログからデータを読み取るため、GoldenGate ライセンスは必要ありません。
Oracle LogMiner が新しいバージョンでサポートされていない場合はどうなりますか? Oracle では LogMiner の CONTINUOUS_MINE オプションのサポートを終了していますが、このオプションは Datastream で使用されていないため、このサポートの終了は Datastream に影響しません。
Datastream が処理できるデータにはどのような制限がありますか?

一般的な制限、MySQL ソースの制限、Oracle ソースの制限があります。

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

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

MySQL の制限事項は、主キーのないテーブルで 1 億行を超えるテーブルはサポートされていません。

Oracle の制限事項は次のとおりです。

  • 列のサポート:
    • 一部のデータ型はサポートされていないため、NULL 値で複製されます。これらのデータ型には、抽象データ型(ADT)、ANYDATA、コレクション(VARRAY)、BLOB/CLOB/LOB/NCLOBLONGUDTUROWIDXMLType があります。
  • サポートされていない Oracle の機能:
    • 外部テーブル
    • データベース リンク(dblinks)
    • インデックスのみのテーブル(IOT)
    • Oracle Label Security(OLS)は複製されません。
  • 1 億行を超えるテーブルでは、バックフィルはサポートされていません。

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

Datastream は、すべてのソースでデータ型を正規化することにより、データソース間のデータのダウンストリーム処理を簡単でわかりやすいものにします。Datastream は、元のソースデータ型(MySQL の NUMERIC 型または Oracle の NUMBER 型など)を受け取り、Datastream の統合型に正規化します。

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

Datastream システムでソースのデータ型を認識する必要がある場合は、Datastream のスキーマ レジストリへの API 呼び出しで実行できます。このレジストリには、すべてのデータソースについて、バージョニングされた最新のスキーマが保存されます。また、スキーマ レジストリ API を使用すると、ソース データベースのスキーマが変更されるため、ダウンストリーム スキーマのブレの解決が速くなります。

Datastream は、ソース内の構造(スキーマ)の変更をどのように処理しますか? Datastream は、ソースデータ構造への変更を継続的に追跡します。スキーマは Datastream のスキーマ レジストリに保存され、各イベントは生成された時点でスキーマを参照します。これにより、Datastream やその他のダウンストリーム プロセスがスキーマの変更をリアルタイムで追跡し、その変更に基づいて調整を行うことができます。これにより、すべてのデータが確実にストリーミングされ、宛先に読み込まれます。

セキュリティと接続性

質問 回答
Datastream は機密データ向けの安全なサービスですか? Datastream は、ソースから宛先にストリーミングされる転送中のデータを保護するために、複数の安全なプライベート接続構成をサポートしています。データが複製されると、デフォルトで暗号化され、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 では、データベースの認証情報はどのように保護されますか? すべてのユーザーのメタデータ(データソースへのアクセスに使用されたユーザー名とパスワードを含む)は、転送中も保存時も暗号化されます。このメタデータへのアクセスは追跡および監査されます。

Datastream ファイルを処理する

質問 回答
Cloud Storage でファイルを作成する方法 Datastream は、テーブルごとにフォルダを作成します。各フォルダでは、Datastream が、ユーザー定義のサイズまたは時間のしきい値に達するたびにファイルをローテーション(または新しいファイルを作成)します。Datastream は、スキーマの変更が検出された場合も常にファイルをローテーションします。ファイル名は、(スキーマのハッシュに基づく)一意のスキーマキーの後に、ファイル内の最初のイベントのタイムスタンプが続きます。セキュリティ上の理由から、これらのファイル名は人が読み取ったり理解したりするためのものではありません。
Cloud Storage 内のデータが順序付けられていない場合、宛先に読み込まれる前にイベントを並べ替えるにはどうすればよいですか? 各イベントには複数のメタデータ フィールドがあり、Oracle REDO ログの行が一意に識別されます。具体的には、以下のとおりです。
  • rs_id。これは、実際には 3 つの値で構成されます(例: 0x0073c9.000a4e4c.01d0)。rs_id は、REDO ログ内のレコードを一意に識別します。
  • ssn。REDO ログのレコードが長すぎる場合に使用します。そのため、Oracle LogMiner はレコードを複数の行に分割します。
イベントを並べ替えるには、rs_id の各部分で並べ替えを行い、次に ssn で並べ替えます。
同じタイムスタンプで複数のファイルが作成された場合、どの順序で処理する必要がありますか? ファイル内およびファイル間での順序は保証されていないため、特定のタイムスタンプを持つすべてのファイルからすべてのイベントを取得し、上記の方法で順序を適用してファイルを処理する順序を決定することをおすすめします。
主キーの更新はどのように処理されますか?イベントの前後に情報はありますか? row_id メタデータ フィールドは、変更する行を一意に識別します。データの整合性を確保するため、主キーに頼るのではなく、row_id フィールドに関連付けられた値に基づいてデータを統合します。

Datastream のモニタリング

質問 回答
すべての履歴データが宛先の Cloud Storage バケットにコピーされたことを、どのように確認できますか? Datastream は、ログファイルで現在のステータスに関する情報を提供します。テーブルのバックフィルが完了したことを示すログエントリが作成されます。

料金

質問 回答
Datastream の料金を教えてください。

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

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

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

詳細情報

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