8.3. Avro シリアル化
Avro を使用したレコードキーおよび値のシリアライズ機能はテクノロジープレビュー機能です。テクノロジープレビューの機能は、Red Hat の実稼働環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat はテクノロジープレビュー機能を実稼働環境に実装することは推奨しません。テクノロジープレビューの機能は、最新の技術をいち早く提供して、開発段階で機能のテストやフィードバックの収集を可能にするために提供されます。サポート範囲の詳細は、「テクノロジプレビュー機能のサポート範囲」を参照してください。
Debezium コネクターは Kafka Connect フレームワークで機能し、変更イベントレコードを生成してデータベースの各行レベルの変更をキャプチャーします。変更イベントレコードごとに、Debezium コネクターは以下を行います。
- 設定した変換を適用します。
- 設定された Kafka Connect コンバーターを使用して、レコードキーおよび値をバイナリー形式でシリアライズします。
- 正しい Kafka トピックにレコードを書き込みます。
各 Debezium コネクターインスタンスにコンバーターを指定できます。Kafka Connect では、レコードキーと値を JSON ドキュメントにシリアライズする JSON コンバーターが提供されます。デフォルトの動作では、JSON コンバーターにレコードのメッセージスキーマが含まれ、各レコードが非常に詳細になります。『 Getting Started with Debezium』には、ペイロードとスキーマの両方が含まれる場合にレコードが表示されます。JSON でレコードをシリアライズする必要がある場合、以下のコネクター設定プロパティーをに設定することを検討してください false
。
-
key.converter.schemas.enable
-
value.converter.schemas.enable
これらのプロパティーを設定して、各レコードから詳細なスキーマ情報を false
除外します。
Apache Avro を使用すると、レコードキーと値をシリアライズできます。Avro バイナリー形式は、コンパクトで効率的です。Avro スキーマにより、各レコードに正しい構造があることを確認することができます。Avro のスキーマ進化メカニズムにより、スキーマを進化できます。これは、変更したデータベーステーブル構造に一致するように各レコードのスキーマを動的に生成する Debezium コネクターに不可欠です。時間の経過とともに、同じ Kafka トピックに書き込まれたイベントレコードを変更する場合は、同じスキーマのバージョンが異なる可能性があります。Avro のシリアライズにより、イベントレコードコンシューマーの変更がレコードスキーマに適応することが容易になります。
Apache Avro のシリアライズを使用するには、Avro メッセージスキーマとそのバージョンを管理するスキーマレジストリーをデプロイする必要があります。このレジストリーの設定に関する詳細は、Red Hat Integration - Service Registry のドキュメントを参照してください。
8.3.1. Red Hat Integration - Service Registry について
Red Hat Integration: Service Registry は、Avro と連携するコンポーネントを複数提供します。
- Debezium コネクター設定で指定できる Avro コンバーター。このコンバーターは、Kafka Connect スキーマを Avro スキーマにマッピングします。次にコンバーターは Avro スキーマを使用してレコードキーと値を Avro のコンパクトなバイナリー形式にシリアライズします。
以下を追跡する API およびスキーマレジストリー
- Kafka トピックで使用される Avro スキーマ
- Avro コンバーターが生成された Avro スキーマを送信する場所
Avro スキーマはこのレジストリーに保存されているため、各レコードには小さな スキーマ ID のみが含まれている必要があります。これにより、各レコードはさらに小さくなります。Kafka のような I/O バインドされたシステムでは、プロデューサーとコンシューマーの合計スループットがより高くなります。
- Kafka プロデューサーおよびコンシューマーの Avro Serdes ( セシリアライザーおよびデシリアライザー)。変更イベントレコードを使用するために作成する Kafka コンシューマーアプリケーションは、Avro Serdes を使用して変更イベントレコードをデシリアライズできます。
Debezium で Service Registry を使用するには、Service Registry コンバーターとその依存関係を、Debezium コネクターの実行に使用する Kafka Connect コンテナーイメージに追加します。
Service Registry プロジェクトは JSON コンバーターも提供します。このコンバーターは、あまり詳細なメッセージと人間が判読できる JSON の利点を組み合わせることができます。メッセージにはスキーマ情報自体は含まれませんが、スキーマ ID のみが含まれます。