【すきーまれじすとり】

スキーマレジストリ とは?

最終更新:
💡 データの形を共有する、型定義の図書館

データの項目や型を決めるスキーマを登録し、バージョンや互換性を管理する仕組み。Kafkaなどのデータ通信で、送り手と受け手が形式を共有するために使う。互換性の検査範囲や対応形式は製品と設定によって異なる。

📌 このページのポイント
データの形は、レジストリで共有型定義の管理場所IDとスキーマ・バージョン設定に沿って互換性を確認送り手ProducerKafkaID + データ受け手Consumer登録する定義を取得データ本体は、Kafkaでやり取り
ConfluentのKafka向け構成を簡略化した例。登録・取得は専用クライアントで行います。
ひよこ ひよこ
何を登録する場所なの?
ペンギン先生 ペンギン先生
注文イベントならorder_idやamountのような項目と、その型などを定義するスキーマを登録するよ。注文データそのものを保管する場所とは役割が違うんだ。
ひよこ ひよこ
どうやって送り手と受け手で共有する?
ペンギン先生 ペンギン先生
ConfluentのKafka向けの例では、送り手がスキーマIDをメッセージに付け、受け手がIDに対応するスキーマを使って読み取るよ。定義の登録・取得には専用のシリアライザーなどを使えるんだ。
ひよこ ひよこ
後方互換と前方互換は、どちら向き?
ペンギン先生 ペンギン先生
後方互換は、新しいスキーマの受け手が古いデータを読めること。前方互換は、古いスキーマの受け手が新しいデータを読めることだよ。ConfluentのFULLは、その両方を確かめる設定なんだ。
ひよこ ひよこ
項目を増やしたら、必ず安全?
ペンギン先生 ペンギン先生
形式や項目の定義、互換性の設定によって変わるよ。たとえばAvroで項目を追加するとき、新しい読み手が古いデータを読むには、その項目の既定値が必要になる。項目の意味を変える影響まで自動で保証するものではないね。
ひよこ ひよこ
Kafkaでしか使えないの?
ペンギン先生 ペンギン先生
ほかにも使うよ。AWS Glue Schema RegistryはKafkaやKinesisなどと連携する。ConfluentとAWS GlueはAvro・Protobuf・JSON Schemaに対応するけれど、対応する仕様や設定の名前には違いがあるんだ。
もっと詳しく知りたい人へ

ConfluentのBACKWARDなら、すべての古い版と互換性がある?

BACKWARDは原則として直前の版との比較で、すべての登録済みの版を直接検査する設定ではありません。全過去版との後方互換性を検査するにはBACKWARD_TRANSITIVEを使います。前方互換や双方向にもTRANSITIVE設定があります。読み手が使う版と、過去に保存されたデータを含めて設定を選びます。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「スキーマレジストリ」って出てきたら「データの型定義と、その変更を管理する場所」と思えばだいたいOK!
📖 おまけ:英語の意味
「Schema Registry」 = スキーマの登録管理所
💬 schema(データ構造の定義)+ registry(登録・管理する場所)だよ。コンテナイメージのDockerレジストリと同じ発想で、データの「型」を登録・管理するんだ

参考資料

← 用語集にもどる