Реестр схем данных
Примечание
Функциональность находится на стадии Preview.
Сервис Schema Registry реализует реестр схем — централизованное хранилище для управления и проверки схем данных. Реестр схем позволяет обеспечить безопасную эволюцию схем данных, решить проблемы совместимости данных и повысить производительность систем, сократив объем данных, передаваемых по сети. Кроме того, реестр схем позволит соблюсти требования безопасности по работе с данными и наладить совместную работу между командами. В Schema Registry вы можете добавлять схемы формата Avro
Пространство имен
Пространство имен (namespace) — это некоторое множество схем. Схемы и субъекты из разных пространств имен полностью изолированы друг от друга. Пользователь самостоятельно решает сколько пространств имен создавать и по какому принципу размещать схемы в них. Создание референсов между схемами из разных пространств невозможно.
Субъект
Субъект (subject
Конкретная версия субъекта содержит метаинформацию о схеме и саму схему. Версии субъекта нумеруются по порядку, увеличиваясь на единицу. Каждая версия субъекта уникальна и содержит только одну схему. Вы можете сравнивать схемы в разных версиях субъекта.
Схема
Схема (schema
Схемы используются для проверки структуры данных в сообщениях о событиях и гарантируют, что производители и потребители отправляют и получают данные в одном и том же формате. Схемы определяются в реестре схем только внутри субъекта.
Вы можете редактировать схему данных. Для этого загрузите обновленную схему в субъект. Новая схема отобразится в новой версии субъекта.
Важно
Изменение типа схемы может привести к некорректной проверке совместимости схем в разных версиях субъекта.
Референс
Референс (schema reference
- Имя референса. Для Avro справочное имя — это полное имя схемы, для JSON — URL-адрес, а для Protobuf — имя файла Protobuf со схемой (как указано в директиве
import
). - Имя субъекта, в котором зарегистрирована схема для референса.
- Версия субъекта, которая содержит схему для референса.
Пример референса для схемы формата Protobuf
Рассмотрим схему msg2.proto
в субъекте test-msg2
, которая ссылается на схему msg1.proto
в субъекте test-msg1
.
Содержимое файла msg1.proto
:
message msg1 {
int8 my_field = 1
}
Содержимое msg2.proto
:
import "msg1.proto"
message msg2 {
msg1 my_field = 1
}
Чтобы связать эти схемы, при загрузке схемы msg2.proto
в субъект test-msg2
добавьте референс со следующими параметрами:
msg1.proto
— имя референса;test-msg1
— имя субъекта, под которым зарегистрирована схема для референсаmsg1.proto
;1
— версия субъектаtest-msg1
, которая содержит схему для референса.