[Документация Yandex Cloud](../../index.md) > [Yandex Data Streams](../index.md) > [Концепции](index.md) > Термины и определения

# Термины и определения в Data Streams

## Поток данных {#stream-concepts}

Поток данных (Stream) — это именованный набор сообщений. Запись и чтение сообщений в Data Streams ведется через потоки. Потоки данных создаются на основе Yandex Managed Service for YDB и хранятся в базах данных.

## Сегмент {#shard}

Для горизонтального масштабирования поток данных разделяется на сегменты (Shard), являющиеся единицами параллелизма. Каждый сегмент имеет ограниченную [пропускную способность](#shard-thoughput).

{% note info %}

В данный момент уменьшение количества сегментов в потоке данных поддерживается только при помощи удаления и повторного создания потока с меньшим количеством сегментов.

{% endnote %}

Возможна настройка потока данных таким образом, что количество сегментов будет увеличиваться при росте скорости записи в этот поток данных. Подробнее в разделе [автопартиционирование в документации YDB](https://ydb.tech/docs/ru//concepts/topic#partitioning).

### Ключ сегмента {#partition-key}

Для каждого [сообщения](#message), которое записывается в поток, указывается ключ сегмента. С помощью хеша ключа сообщение сопоставляется сегменту внутри потока.

{% note warning %}

При обновлении количества сегментов потока меняется их распределение по пространству хешей ключей. Сообщения, которые были записаны до обновления количества сегментов, остаются в тех же сегментах и в том же порядке. Новые сообщения будут распределяться по новому количеству сегментов.

{% endnote %}

### Пропускная способность сегмента {#shard-thoughput}

Каждый сегмент имеет ограниченную пропускную способность, указываемую пользователем. Максимальная скорость записи данных в один сегмент — 1 МБ/с, максимальная скорость чтения — 2 МБ/с.

## Сообщение {#message}

Сообщение (Message) — это минимальная неделимая единица пользовательской информации.

Сообщение состоит из [тела](#message-body) и дополнительных системных свойств.

### Тело сообщения {#message-body}

Тело сообщения представляет собой набор байт. Data Streams никак не интерпретирует тело сообщения.

### Порядковый номер сообщения {#sequence-number}

Во время записи в поток данных каждому сообщению присваивается порядковый номер. Порядковые номера сообщений уникальны внутри одного сегмента и последовательно возрастают.

### Время хранения сообщений {#retention-time}

Для каждого потока данных определено время хранения сообщений. После истечения времени хранения сообщения автоматически удаляются.

## Потребители данных {#consumers}

Потребители данных — это приложения, которые получают и обрабатывают данные из Data Streams. Все потребители данных разделяют [общую квоту](limits.md) на чтение.

## Выделенные потребители данных {#extended-consumers}

Для некоторых случаев модель общей [квоты](https://kz.console.yandex.cloud/cloud?section=quotas) для всех потребителей данных является слишком ограничительной, поэтому каждому потребителю выдают гарантированную скорость чтения. Потребители данных с гарантированной скоростью чтения называются _выделенными потребителями данных_.

## Автопартиционирование {#autopartitioning}

Часть данных может потеряться при перегрузке отдельных [сегментов](#shard) или всего [потока](#stream-concepts). [Автопартиционирование](https://ydb.tech/docs/ru//concepts/topic#autopartitioning) автоматически добавляет сегменты и распределяет нагрузку. Это помогает избежать потерь данных.

Можно включить и настроить автопартиционирование во время или после [создания](../operations/manage-streams.md#create-data-stream) потока данных.

{% note warning %}

* Отключить автопартиционирование нельзя.
* Если текущее количество сегментов потока будет автоматически увеличено, его нельзя уменьшить.
* Протокол Apache Kafka® не поддерживает автопартиционирование топиков. Если автопартиционирование включено, работа с потоком данных по протоколу Apache Kafka® невозможна.

{% endnote %}

Автопартиционирование не тарифицируется отдельно. При [тарификации по времени хранения](../pricing.md#time-limit) добавление сегментов увеличивает плату за выделенные ресурсы пропорционально числу сегментов.