[Документация Yandex Cloud](../../index.md) > [Yandex MetaData Hub](../index.md) > Schema Registry > Концепции > Реестр схем

# Реестр схем данных


{% note warning %}

Функциональность доступна только в [регионе Россия](../../overview/concepts/region.md).

{% endnote %}


{% note info %}

Функциональность находится на стадии [Preview](../../overview/concepts/launch-stages.md).

{% endnote %}

[Сервис Schema Registry](schema-registry.md) реализует реестр схем — централизованное хранилище для управления и проверки [схем данных](schema-registry.md#schema). Реестр схем позволяет обеспечить безопасную эволюцию схем данных, решить проблемы совместимости данных и повысить производительность систем, сократив объем данных, передаваемых по сети. Кроме того, реестр схем позволит соблюсти требования безопасности по работе с данными и наладить совместную работу между командами. В Schema Registry вы можете добавлять схемы формата [Avro](https://avro.apache.org/), [JSON Schema](https://json-schema.org/) и [Protobuf](https://protobuf.dev/).

## Пространство имен {#namespace}

_Пространство имен_ (namespace) — это некоторое множество схем. Схемы и субъекты из разных пространств имен полностью изолированы друг от друга. Пользователь самостоятельно решает сколько пространств имен создавать и по какому принципу размещать схемы в них. Создание референсов между схемами из разных пространств невозможно.

## Субъект {#subject}

_Субъект_ ([subject](https://docs.confluent.io/platform/current/schema-registry/develop/api.html#subjects)) — именованная сущность, в рамках которой эволюционирует [схема данных](#schema).
Конкретная версия субъекта содержит метаинформацию о схеме и саму схему. Версии субъекта нумеруются по порядку, увеличиваясь на единицу. Каждая версия субъекта уникальна и содержит только одну схему. Вы можете [сравнивать схемы](../operations/compare-schemas.md) в разных версиях субъекта.

## Схема {#schema}

_Схема_ ([schema](https://docs.confluent.io/platform/current/schema-registry/develop/api.html#schemas)) — это определение формата данных для описания их типа и структуры.
Схемы используются для проверки структуры данных в сообщениях о событиях и гарантируют, что производители и потребители отправляют и получают данные в одном и том же формате. Схемы определяются в реестре схем только внутри [субъекта](#subject).
Вы можете редактировать схему данных. Для этого [загрузите обновленную схему в субъект](../operations/add-schema.md). Новая схема отобразится в новой версии субъекта.

## Референс {#reference}

_Референс_ ([schema reference](https://docs.confluent.io/platform/current/schema-registry/fundamentals/serdes-develop/index.html#referenced-schemas)) — ссылка на другие схемы, состоящая из следующих параметров:

* Имя референса. Для Avro справочное имя — это полное имя схемы, для JSON — URL-адрес, а для Protobuf — имя файла Protobuf со схемой (как указано в директиве `import`).
* Имя субъекта, в котором зарегистрирована схема для референса.
* Версия субъекта, которая содержит схему для референса.

{% cut "Пример референса для схемы формата Protobuf" %}

Рассмотрим схему `msg2.proto` в субъекте `test-msg2`, которая ссылается на схему `msg1.proto` в субъекте `test-msg1`.

Содержимое файла `msg1.proto`:

```bash
message msg1 {
    int8 my_field = 1
}
```

Содержимое `msg2.proto`:

```bash
import "msg1.proto"

message msg2 {
    msg1 my_field = 1
}
```

Чтобы связать эти схемы, при загрузке схемы `msg2.proto` в субъект `test-msg2` добавьте референс со следующими параметрами:
* `msg1.proto` — имя референса;
* `test-msg1` — имя субъекта, под которым зарегистрирована схема для референса `msg1.proto`;
* `1` — версия субъекта `test-msg1`, которая содержит схему для референса.

{% endcut %}

## Примеры использования {#examples}

* [Создание реестра схем для поставки данных в формате Debezium CDC из Apache Kafka®](../tutorials/schema-registry-cdc-debezium-kafka.md)