動作とユースケース
Datastream を使用すると、リレーショナル データベース管理システム(RDBMS)やその他のソースのソースデータを BigQuery や Cloud Storage などの宛先にほぼリアルタイムで移行できます。これにより、ダウンストリームのユースケース(データ ウェアハウジングと分析のためにデータを BigQuery に読み込む、人工知能や機械学習のユースケースに対してデータに対して Spark ジョブを実行する、など)に対応できます。
コンセプト
変更データ キャプチャ
変更データ キャプチャ(CDC)は、変更されたデータを特定(および追跡)し、変更されたデータを使って対応できるようにするための、一連のソフトウェア設計パターンです。また、CDC は、エンタープライズ データソースに加えられた変更の識別、キャプチャ、配信に基づくデータ統合のアプローチでもあります。
イベント ソーシング
2005 年に導入されたイベント ソーシングは、アプリケーションの状態の変化がすべてイベント オブジェクトでキャプチャされる設計パターンです。イベント ソーシングを活用することで、アプリケーションでは、状態を再構築する、ポイントインタイム リカバリを(その時点までにイベントを処理することで)実行する、ロジックが変更された場合は状態を再計算する、またはコマンドクエリ責務分離(CQRS)設計を有効にすることが可能になります。リアルタイム イベント処理ツールの進化に伴い、多くのアプリケーションがイベント ソーシング モデルに移行しています。これまで、トランザクション データベースは、アトミック性、整合性、独立性、永続性(ACID)の要件により常にイベント指向でした。
トランザクション データベース
トランザクション データベースでは、データベースが行う一連のオペレーションは通常、ストレージ エンジンでオペレーションが実行される前に先行書き込みログ(WAL)に書き込まれます。ストレージ エンジンでオペレーションが実行され、WAL に commit されると、そのオペレーションは成功したとみなされます。WAL を使用するとアトミック性と耐久性が可能になり、データベースの忠実性の高いレプリケーションも可能です。一部のデータベースでは、ストレージ レベルで発生する正確なオペレーション(例: write 0x41 on location 20
)がログに書き込まれるため、これらのアクションは同じストレージ エンジンでのみ複製(またはやり直し)できます。他のデータベースは、別のストレージ エンジンで再実行できる完全な論理ステートメント(または行)をログに記録します。
イベントとストリーム
Datastream は、さまざまなソースからほぼリアルタイムで大量のデータを取り込んで、データを移行先で利用できるようにします。Datastream では、データはイベント単位で保存されます。ストリームは、ソースからのイベントの継続的な取り込みと、宛先への書き込みを表します。
統合型
データソースには独自のタイプがあり、中にはデータベース自体に固有のものもあれば、汎用的で、データベース間で共有されるものもあります。統合された転送先へのストリームを生成する多くの異なるソースがあるため、すべてのソースで元のソースタイプを表す標準的で、統合された方法が必要です。統合型は、すべてのソースでデータ型を表現する一般的かつロスレスな方法であり、統合された方法で使用できるようになります。Datastream でサポートされている統合型は、サポートされているすべてのソースシステムにまたがる正規化されたすべての型のスーパーセットを表すため、すべての型をロスレスでサポートできます。
エンティティ コンテキスト
Datastream には、次の 5 つのエンティティがあります。
- プライベート接続の構成により、Datastream は安全なプライベート ネットワーク接続を介してデータソースと通信できます。この通信は、Virtual Private Cloud(VPC)とのピアリングを介して行われます。
- 接続プロファイルは、特定のソースまたは転送先データベースへの接続情報を表します。
- ストリームは、ソースと転送先の接続プロファイルのペアとストリーム固有の設定を表します。
- オブジェクトは、ストリームの副次的な部分を表します。たとえば、データベース ストリームにはすべてのテーブルに対してストリーミングされるデータ オブジェクトがあります。
- イベントは、特定のオブジェクトに対するデータ操作言語(DML)のすべての変更を表します。
プライベート接続構成を作成したら、プライベート通信チャネルを介して Google Cloud やその他の場所でホストされているソースに接続できます。プライベート接続はオプションであり、Datastream はパブリック ネットワークを介した他の接続モードもサポートしています。
ソースと転送先の接続プロファイルを作成したら、接続プロファイルに保存されている情報を使用して、ソースから転送先にデータを転送するストリームを作成できます。
ストリームを作成すると、Datastream はソースに直接接続し、コンテンツを消費した後、イベント構造に基づいてイベントを処理して転送先に書き込みます。
プライベート接続の構成と接続プロファイルは、簡単に再利用できるように、ストリームを別々に管理できます。また、企業では頻度が多いため、ソースまたは転送先への接続を確立できるユーザーはストリームの作成元と同じユーザーではありません。
機能
Datastream の機能は次のとおりです。
- サーバーレス: ストリームを構成すると、データが移動し始めます。インストール、リソースの割り当て、メンテナンス オーバーヘッドは発生しません。データ量は増減するため、Datastream の自動スケーリング機能により、データがニア リアルタイムで自動的に移動し続けるようにリソースが割り当てられます。
- 統合 Avro ベース型スキーマ: Datastream は、すべてのソース固有のデータ型を Avro 型に基づいて統合 Datastream 型スキーマに変換することで、ソースに依存しない処理を実現します。
- 履歴データと CDC データのストリーミング: Datastream は、履歴と CDC の両方のソースデータを同時にリアルタイムでストリーミングします。
追加ライセンスのない Oracle CDC: Datastream は、Oracle ソースのバージョン 11.2g 以降の LogMiner ベースの CDC ストリーミングを提供します。追加ライセンスやソフトウェアのインストールに追加料金はかかりません。
BigQuery の宛先: ソースの変更は、ニア リアルタイムで BigQuery テーブルに継続的に複製されます。BigQuery のデータは、ほぼ即時に分析に利用できます。
Cloud Storage の転送先: CDC データは、Cloud Storage の自己記述型 Avro ファイルまたは JSON ファイルに継続的に書き込まれます。この情報は、所定の場所での直接の追加処理や、ダウンストリームの別の転送先(Spanner など)への読み込みによって、追加の処理を行うために簡単に利用できます。
ユースケース
Datastream の使用には、主に次の 3 つのシナリオがあります。
- データ統合: データベースと Software as a Service(SaaS)クラウド サービスからのデータ ストリームは、BigQuery にデータを読み込むことで、ニア リアルタイムのデータ統合パイプラインにデータをフィードできます。
- ストリーミング分析: データベースの変更が Dataflow などのストリーミング パイプラインに取り込まれ、不正行為の検出、セキュリティ イベント処理、異常検出が行われます。
- ほぼリアルタイムのデータ変更の利用可能性: ほぼリアルタイムでのデータ変更の利用可能性により、人工知能と機械学習アプリケーションが強化され、チャーンの防止や、マーケティング活動や本番システムへのフィードバックを活用したエンゲージメントの拡大ができます。
行動サマリー
Datastream を使用すると、お客様は複数のデータソースからの継続的な変更を Google Cloud に直接ストリーミングできます。
ソース
- 認証や追加の構成オプションなど、Datastream で使用するソースの設定作業が必要です。
- 各ソースは、すべてのデータ操作言語(DML)の変更を反映するイベントを生成します。
- 各ストリームでは、過去のデータをバックフィルするほか、進行中の変更を転送先にストリーミングできます。
宛先
Datastream は、BigQuery と Cloud Storage を宛先としてサポートしています。ストリームの作成時に、目的の BigQuery データセットまたは Cloud Storage バケットが定義されます。
イベント配信
- イベントの順序は保証されません。イベント メタデータには、イベントの順序を決めるために使用できる情報が含まれます。
- イベント配信が少なくとも 1 回発生します。イベント メタデータには、転送先で重複するデータを削除するために使用できるデータが含まれています。
- イベントサイズは、BigQuery の宛先の場合はイベントごとに 20 MB、Cloud Storage の宛先の場合はイベントごとに 100 MB に制限されています。
イベントについて詳しくは、イベントとストリームをご覧ください。
高可用性と障害復旧
このセクションでは、高可用性と障害復旧に関連するシナリオを Datastream がどのように扱うかについて説明します。
- 高可用性: Datastream はリージョン サービスであり、各リージョンの複数のゾーンで実行されます。いずれかのリージョンで単一ゾーンの障害が発生しても、他のゾーンでのサービスの可用性や品質には影響しません。
- 障害復旧: リージョンに障害が発生した場合、そのリージョンで実行されているストリームはすべて停止している間中断します。サービス停止が解決した後、Datastream は中断したところから再開され、宛先に書き込まれていないデータはソースから再び取得されます。この場合、移行先ではデータの重複が発生する可能性があります。重複するデータの削除について詳しくは、イベント配信をご覧ください。
初期データと CDC データ
データソースには、ソースがストリームに接続される前に存在していたデータ(履歴データ)が含まれるため、Datastream は、履歴データとイベントをリアルタイムで発生するイベントの両方を生成します。
迅速なデータアクセスを確保するため、履歴データとリアルタイムのデータ変更を同時に転送先に複製します。イベント メタデータは、イベントがバックフィルのものか、CDC からのものかを示しています。
次のステップ
- Datastream の詳細を確認します。
- 詳しくは、イベントとストリームをご覧ください。
- 統合型のタイプのマッピングについて学習する。
- Datastream でサポートされているソースの詳細を確認する。
- Datastream でサポートされている宛先の詳細を確認する。
- プライベート接続構成、接続プロファイル、ストリームを作成する方法を確認する。