Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save kenzo0107/012035f381dbda69448d503565df33d9 to your computer and use it in GitHub Desktop.
Save kenzo0107/012035f381dbda69448d503565df33d9 to your computer and use it in GitHub Desktop.

https://docs.confluent.io/cloud/current/sr/fundamentals/index.html

以下は、Confluent ドキュメント「Schema Registry Concepts for Confluent Cloud」の内容を日本語に和訳し、Markdown 形式で整理したものです。


Confluent Cloud における Schema Registry の基本概念

Confluent Cloud の Schema Registry は、ストリーム処理や静的データ(データベース、ファイルなど)を問わず、スキーマの管理・共有を一元化するマネージドレポジトリです。このセクションでは、スキーマ、レジストリ、内部構造・仕組みに関する基本的な概念を解説します。(Confluent Documentation)


仕組みの概要

  • Schema Registry はメタデータの提供レイヤーとして機能し、RESTful API を通じて Avro / JSON Schema / Protobuf スキーマの登録・取得を行います。
  • スキーマは「Subject 名」に基づいてバージョン管理され、互換性設定に応じたスキーマ進化をサポートします。
  • Kafka クライアント向けのシリアライザが提供されており、これにより Kafka メッセージ送受信時にスキーマの登録・取得が自動化されます。
  • Schema Registry は Kafka クラスターから独立しており、プロデューサーとコンシューマーは依然として Kafka を介してメッセージ交換を行いながら、必要に応じてスキーマとのやり取りも行います。(Confluent Documentation)

スキーマ、サブジェクト、トピックの関係

  • Kafka のトピックはメッセージの集合(キー/バリュー)で、どちらも Avro / JSON Schema / Protobuf でシリアライズ可能です。
  • スキーマはデータの構造を定義しますが、トピック名とスキーマ名は必ずしも一致しません。
  • Schema Registry におけるスキーマの適用範囲は Subject によって定義され、デフォルトではトピック名から派生されます。(Confluent Documentation)

Subject 名戦略の変更

  • 各トピックごとに Subject 名の戦略を変更可能です(例:TopicNameStrategy, RecordNameStrategy 等)。
  • Subject aliases 機能により、ある Subject を別名(エイリアス)として登録でき、再登録や戦略変更なしで既存スキーマを利用可能です。(Confluent Documentation)

シリアライズ/デシリアライズ対応フォーマット

  • Schema Registry は Avro、Protobuf、JSON Schema の各フォーマットをサポートしています。
  • 各フォーマットに対応した Kafka 向け Serializer / Deserializer が提供され、スキーマの自動登録機能付きです。
  • Protobuf シリアライザは、参照先スキーマも再帰的に登録できる仕組みです。(Confluent Documentation)

スキーマ参照(Schema References)

  • Avro, JSON Schema, Protobuf の各フォーマットで、スキーマ内から他のスキーマを参照する機能をサポートしています。
  • 参照には「名前・Subject・バージョン」が含まれ、登録時にはこれらを指定します。
  • 参照されたスキーマは、取得時に併せて取得されます。(Confluent Documentation)
  • この機能を活用することで、同一トピックに異なるイベントタイプを効率的に格納することも可能です。(Confluent Documentation)

API サポート

  • Schema Registry の REST API により、スキーマ/Subject の登録・取得・削除、バージョンや ID による参照などが可能です。(Confluent Documentation)

Schema Evolution(スキーマ進化)と互換性

  • 新しいスキーマはバージョン管理され、互換性設定に基づいて進化させることができます。
  • 互換性の種類と対応変更は以下の通りです:(Confluent Documentation)
互換性タイプ 許可される変更内容 対象となるバージョン
BACKWARD フィールド削除・オプションの追加 最後のバージョンに対して
BACKWARD_TRANSITIVE 同上(全バージョンに対して) 全以前バージョン
FORWARD フィールド追加・オプションの削除 最後のバージョンに対して
FORWARD_TRANSITIVE 同上(全バージョンに対して) 全以前バージョン
FULL 完全互換(前後両方) 最後のバージョンに対して
FULL_TRANSITIVE 同上(全バージョンに対して) 全以前バージョン
NONE 検証なし 設定なし
  • BACKWARD(非トランジティブ)はデフォルト設定で、新スキーマは直前バージョンにのみ互換性があることを意味します。
  • 互換性の種類に応じて、プロデューサー・コンシューマーのアップグレード順序に注意が必要です。(Confluent Documentation)

まとめ

Confluent Cloud における Schema Registry の基本機能は以下の通りです:

  • スキーマ登録・バージョン管理:REST API 経由で Avro / JSON Schema / Protobuf スキーマを操作可能。
  • 互換性チェックと進化:設定に基づきスキーマを安心して更新可能。
  • シリアライズ支援:Kafka 向け SerDes によるスキーマの自動登録。
  • スキーマ参照:複雑なスキーマ設計をモジュール化・再利用可能。
  • Subject 名戦略 & エイリアス:スキーマ命名や再利用戦略に柔軟性あり。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment