Правила оценки стоимости операций с топиками
Режимы тарификации
Тарификация операций с данными в топиках YDB
Если топик создается как хранилище для потока данных Data Streams, он по умолчанию получает режим тарификации по выделенным ресурсам. Для находящихся в режиме по выделенным ресурсам топиков начисление Request Units YDB не производится, оплата делается на почасовой основе в рамках сервиса Yandex Data Streams.
Смена режима тарификации может быть произведена для любого топика явно вызовом команды YDB CLI ydb topic alter
Расчет потребления Request Units
Для топика, находящегося в режиме тарификации по фактическому использованию, YDB осуществляет расчет стоимости операций в Request Units по описанным ниже правилам.
TopicAPI
TopicAPI используется при работе через YDB SDK и CLI, и предоставляет потоковые методы чтения и записи данных. Стоимость обращения к этим методам в Request Units (RU) вычисляется по следующим правилам:
-
Каждый вызов метода чтения или записи, то есть открытие потока записи или чтения, стоит 1 RU.
-
В рамках каждого открытого потокового метода передачи (сессии) накапливается объем переданных (записанных или считанных) данных. В момент превышения этим объемом границ блоков начисляется дополнительный 1 RU за каждый блок. При этом размеры блоков отличаются для чтения и записи:
Направление Размер блока Чтение 8КБ Запись 4КБ
Пример расчета
- Вызван новый потоковый метод записи. В этот момент начисляется 1 RU.
- В рамках метода передан пакет данных для записи объемом 1 КБ. Так как граница блока записи 4 КБ не превышена, дополнительных начислений RU не производится.
- В рамках метода передан пакет данных для записи объемом 8 КБ. Общий объем переданных в рамках метода данных стал равен 9 КБ, что включает 2 блока по 4 КБ. Производится начисление 2 RU, по 1 RU за каждый блок.
- В рамках метода передан пакет данных для записи объемом 6 КБ. Общий объем переданных в рамках метода данных стал равен 15 КБ, что включает 3 блока данных по 4 КБ, что стоит 3 RU. Так как 2 RU уже ранее передавались, передается разница 3 RU - 2 RU = 1 RU.
Расчет для чтения производится аналогично, но с размером блока в 8 КБ.
DataStreamsAPI
DataStreamsAPI используется при обращении к топику через интерфейс потоков данных, совместимый с AWS Kinesis. На данном интерфейсе не поддерживаются потоковые методы чтения и записи, и передача каждого блока данных требует вызова отдельного унарного метода (запрос-ответ). Стоимость обращения к этим методам в Request Units (RU) вычисляется по следующим правилам:
-
Каждый вызов метода чтения или записи для передачи или получения очередного блока данных стоит 1 RU.
-
Рассчитывается объем блоков данных, переданных в запросе к методу записи, или полученных в ответе на вызов метода чтения. Размеры блоков отличаются для чтения и записи:
Направление Размер блока Чтение 8КБ Запись 4КБ -
За каждый полный переданный блок данных начисляется по 1 RU.
Пример расчета
- Вызван метод KinesisAPI
getRecords
. - В ответе получен пакет данных размером в 20 KБ. Этот объем содержит два полных блока чтения размером 8 КБ.
- Стоимость вызова в RU = 1 RU за вызов + 2 RU за два полученных полных блока данных = 3 RU.
KafkaAPI
На интерфейсе KafkaAPI не поддерживаются потоковые методы чтения и записи, а передача каждого блока данных требует вызова отдельного унарного метода (запрос-ответ). Стоимость обращения к этим методам в Request Units (RU) вычисляется по следующим правилам:
-
Каждый вызов метода чтения или записи для передачи или получения очередного блока данных стоит 1 RU (вступает в силу с 01.07.2024).
-
Рассчитывается объем блоков данных, переданных в запросе к методу записи, или полученных в ответе на вызов метода чтения. Размеры блоков для чтения и записи отличаются:
Направление Размер блока Чтение 8КБ Запись 4КБ -
За каждый полный переданный блок данных начисляется по 1 RU.
Пример расчета
- Вызван метод KafkaAPI
FETCH
. - В ответе получен пакет данных размером 20 KБ. Этот объем содержит два полных блока чтения размером 8 КБ.
- Стоимость вызова в RU = 1 RU за вызов + 2 RU за два полученных полных блока данных = 3 RU.
Расчет для записи производится аналогично, но с размером блока в 4 КБ.