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", 1 "source" : "/debezium/postgresql/test_server", 2 "specversion" : "1.0", 3 "type" : "io.debezium.postgresql.datachangeevent", 4 "time" : "2020-01-13T13:55:39.738Z", 5 "datacontenttype" : "application/json", 6 "iodebeziumop" : "r", 7 "iodebeziumversion" : "1.1.2.Final", 8 "iodebeziumconnector" : "postgresql", "iodebeziumname" : "test_server", "iodebeziumtsms" : "1578923739738", "iodebeziumsnapshot" : "true", "iodebeziumdb" : "postgres", "iodebeziumschema" : "s1", "iodebeziumtable" : "a", "iodebeziumtxId" : "565", "iodebeziumlsn" : "29274832", "iodebeziumxmin" : null, "iodebeziumtxid": "565", 9 "iodebeziumtxtotalorder": "1", "iodebeziumtxdatacollectionorder": "1", "data" : { 10 "before" : null, "after" : { "pk" : 1, "name" : "Bob" } } }
- 1
- 変更イベントの内容に基づいて変更イベント用にコネクターが生成する一意の ID。
- 2
- イベントのソース。これは、コネクターの設定の
database.server.name
プロパティーによって指定されるデータベースの論理名です。 - 3
- CloudEvents 仕様のバージョン。
- 4
- 変更イベントを生成したコネクタータイプ。このフィールドの形式はです
io.debezium.CONNECTOR_TYPE.datachangeevent
。の値CONNECTOR_TYPE
はmongodb
、、mysql
postgresql
、またはですsqlserver
。 - 5
- ソースデータベースの変更時間。
- 6
- は、JSON である
data
属性のコンテンツタイプを記述します。 - 7
- 操作識別子。設定可能な値は、
r
read、c
create、u
update、またはd
delete です。 - 8
- Debezium 変更イベントから認識される
source
属性はすべて、属性名のiodebezium
接頭辞を使用して CloudEvents 拡張属性にマッピングされます。 - 9
- コネクターで有効にすると、Debezium 変更イベントから認識される各
transaction
属性は、属性名のiodebeziumtx
接頭辞を使用して CloudEvents 拡張属性にマッピングされます。 - 10
- 実際のデータ自体は変更されています。操作やコネクターによっては、データに、、
before
after
またはpatch
フィールドが含まれることがあります。