8.4. CloudEvent のエクスポート
CloudEvents は、イベントデータを一般的な方法で記述するための仕様です。その目的は、サービス、プラットフォーム、およびシステム間で相互運用性を提供することです。Debezium を使用すると、MongoDB、MySQL、PostgreSQL、または SQL Server コネクターを設定し、CloudEvents 仕様に準拠する変更イベントレコードを出力できます。
CloudEvents 形式で変更イベントレコードを出力することはテクノロジープレビュー機能です。テクノロジープレビューの機能は、Red Hat の実稼働環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat はテクノロジープレビュー機能を実稼働環境に実装することは推奨しません。テクノロジープレビューの機能は、最新の技術をいち早く提供して、開発段階で機能のテストやフィードバックの収集を可能にするために提供されます。サポート範囲の詳細は、「テクノロジプレビュー機能のサポート範囲」を参照してください。
CloudEvents 仕様は以下を定義します。
- 標準イベント属性のセット
- カスタム属性を定義するルール
- イベント形式のシリアライズされた表現(JSON など)へのマッピングルール
- Apache Kafka、HTTP、AMQP などのトランスポート層のプロトコルバインディング。
Debezium コネクターが CloudEvents 仕様に準拠する変更イベントレコードを出力するように設定するには、Debezium は Kafka Connect メッセージコンバーターで io.debezium.converters.CloudEventsConverterあるを提供します。
現在、構造化マッピングモードのみがサポートされます。CloudEvents の変更イベントフレームは JSON にする必要があります。data 形式は JSON である必要があります。今後の Debezium リリースはバイナリーマッピングモードをサポートする予定です。
8.4.1. イベント形式の例 リンクのコピーリンクがクリップボードにコピーされました!
以下の例は、PostgreSQL コネクターによって出力される CloudEvents 変更イベントレコードを示しています。この例では、PostgreSQL コネクターは、JSON を CloudEvents 形式および形式として使用するように設定されてい data ます。
{
"id" : "name:test_server;lsn:29274832;txId:565",
"source" : "/debezium/postgresql/test_server",
"specversion" : "1.0",
"type" : "io.debezium.postgresql.datachangeevent",
"time" : "2020-01-13T13:55:39.738Z",
"datacontenttype" : "application/json",
"iodebeziumop" : "r",
"iodebeziumversion" : "1.1.2.Final",
"iodebeziumconnector" : "postgresql",
"iodebeziumname" : "test_server",
"iodebeziumtsms" : "1578923739738",
"iodebeziumsnapshot" : "true",
"iodebeziumdb" : "postgres",
"iodebeziumschema" : "s1",
"iodebeziumtable" : "a",
"iodebeziumtxId" : "565",
"iodebeziumlsn" : "29274832",
"iodebeziumxmin" : null,
"iodebeziumtxid": "565",
"iodebeziumtxtotalorder": "1",
"iodebeziumtxdatacollectionorder": "1",
"data" : {
"before" : null,
"after" : {
"pk" : 1,
"name" : "Bob"
}
}
}
- 1
- 変更イベントの内容に基づいて変更イベント用にコネクターが生成する一意の ID。
- 2
- イベントのソース。これは、コネクターの設定の
database.server.nameプロパティーによって指定されるデータベースの論理名です。 - 3
- CloudEvents 仕様のバージョン。
- 4
- 変更イベントを生成したコネクタータイプ。このフィールドの形式はです
io.debezium.CONNECTOR_TYPE.datachangeevent。の値CONNECTOR_TYPEはmongodb、、mysqlpostgresql、またはですsqlserver。 - 5
- ソースデータベースの変更時間。
- 6
- は、JSON である
data属性のコンテンツタイプを記述します。 - 7
- 操作識別子。設定可能な値は、
rread、ccreate、uupdate、またはddelete です。 - 8
- Debezium 変更イベントから認識される
source属性はすべて、属性名のiodebezium接頭辞を使用して CloudEvents 拡張属性にマッピングされます。 - 9
- コネクターで有効にすると、Debezium 変更イベントから認識される各
transaction属性は、属性名のiodebeziumtx接頭辞を使用して CloudEvents 拡張属性にマッピングされます。 - 10
- 実際のデータ自体は変更されています。操作やコネクターによっては、データに、、
beforeafterまたはpatchフィールドが含まれることがあります。