Список изменений сервера Корпоративной СУБД Яндекса
Версия 25.1
Версия 25.1.4.ent.3
Дата выхода: 25 ноября 2025.
Функциональность
- Реализован векторный индекс для приближённого векторного поиска. Для векторного поиска опубликованы рецепты для YDB CLI и YQL, а также примеры работы на С++ и Python. Включается установкой флага
enable_vector_indexв конфигурации кластера. Внимание! После включения флага откат на предыдущие версии YDB невозможен. - Добавлена поддержка консистентной асинхронной репликации.
- Поддержаны запросы BATCH UPDATE и BATCH DELETE, позволяющие изменять большие строковые таблицы вне транзакционных ограничений. Включается установкой флага
enable_batch_updatesв конфигурации кластера. - Добавлен механизм конфигурации V2, упрощающий развёртывание новых кластеров YDB и дальнейшую работу с ними. Сравнение механизмов конфигурации V1 и V2.
- Добавлена поддержка параметризованного типа Decimal.
- Реализована клиентская балансировка партиций при чтении по протоколу Kafka (как у самой Kafka). Раньше балансировка происходила на сервере. Включается установкой флага
enable_kafka_native_balancingв конфигурации кластера. - Добавлена поддержка автопартиционирования топиков в CDC для строковых таблиц. Включается установкой флага
enable_topic_autopartitioning_for_cdcв конфигурации кластера. - Добавлена возможность изменить время хранения данных в CDC-топике с использованием выражения
ALTER TOPIC. - Поддержан формат DEBEZIUM_JSON для потоков изменений (changefeed).
- Добавлена возможность создавать потоки изменений к индексным таблицам.
- Добавлена возможность указания числа реплик для вторичного индекса. Включается установкой флага
enable_access_to_index_impl_tablesв конфигурации кластера. - В операциях резервного копирования и восстановления поддержаны потоки изменений. Чтобы воспользоваться функциональностью, необходимо установить флаги
enable_changefeeds_exportиenable_changefeeds_exportв секцииfeature_flagsконфигурации базы данных или кластера. - Добавлено автоудаление временных директорий и таблиц при экспорте в S3. Включается установкой флага
enable_export_auto_droppingв конфигурации кластера. - Добавлена автоматическая проверка целостности резервных копий при импорте, предотвращающая восстановление из повреждённых резервных копий и защищающая от потери данных.
- Добавлена возможность создания представлений, использующих UDF в запросах.
- Добавлены системные представления с информацией о настройках прав доступа, истории перегруженных партиций - включается установкой флага
enable_followers_statsв конфигурации кластера, истории партиций строковых таблиц со сломанными блокировками (TLI). - Добавлены новые параметры в операторы CREATE USER и ALTER USER:
HASH— возможность задания пароля в зашифрованном виде;LOGINиNOLOGIN— разблокировка и блокировка пользователя.
- Повышена безопасность учётных записей:
- Добавлена проверка сложности пароля пользователя;
- Реализована автоматическая блокировка пользователя при исчерпании лимита попыток ввода пароля;
- Добавлена возможность самостоятельной смены пароля пользователем.
- Реализована возможность переключения функциональных флагов во время работы сервера YDB. Флаги, для которых в proto-файле не указан параметр
(RequireRestart) = true, будут применяться без рестарта кластера. - Теперь самые старые (а не новые) блокировки меняются на полношардовые при превышении количества блокировок на шардах.
- Реализовано сохранение оптимистичных блокировок в памяти при плавном перезапуске даташардов, что должно уменьшить число ошибок ABORTED из-за потери блокировок при балансировке таблиц между узлами.
- Реализована отмена волатильных транзакций со статусом ABORTED при плавном перезапуске даташардов.
- Добавлена возможность удалить
NOT NULL-ограничения на столбец в таблице с помощью запросаALTER TABLE ... ALTER COLUMN ... DROP NOT NULL. - Добавлено ограничение в 100 000 на число одновременных запросов на создание сессий в сервисе координации.
- Увеличено максимальное число столбцов в первичном ключе с 20 до 30.
- Улучшена диагностика и интроспекция ошибок, связанных с памятью (#10419, #11968).
- (Экспериментально) Добавлен экспериментальный режим работы с более строгими проверками прав доступа. Включается установкой следующих флагов:
enable_strict_acl_check– не позволять выдавать права несуществующим пользователям и удалять пользователей, если им выданы права;enable_strict_user_management— включает строгие правила администрирования локальных пользователей (т.е. администрировать локальных пользователей может только администратор кластера или базы данных);enable_database_admin— добавляет роль администратора базы данных.
- Добавлена возможность использовать привычные инструменты потоковой обработки данных – Kafka Connect, Confluent Schema Registry, Kafka Streams, Apache Flink, AKH через Kafka API при работе с YDB Topics. Теперь YDB Topics Kafka API поддерживает:
- клиентскую балансировку читателей – включается установкой флага
enable_kafka_native_balancingв конфигурации кластера. Как работает балансировка читателей в Apache Kafka. Теперь балансировка читателей в Kafka API YDB Topics будет работать точно так же, - компактифицированные топики – включается установкой флага
enable_topic_compactification_by_key, - транзакции – включается установкой флага
enable_kafka_transactions.
- клиентскую балансировку читателей – включается установкой флага
- Добавлен новый протокол в Node Broker, устраняющий всплески сетевого трафика на больших кластерах (более 1000 серверов), связанного с рассылкой информации об узлах.
Изменения с потерей обратной совместимости
- Если вы используете запросы, в которых происходит обращение к именованным выражениям как к таблицам с помощью AS_TABLE, обновите temporal over YDB на версию v1.23.0-ydb-compat перед обновление YDB на текущую версию, чтобы избежать ошибок в выполнении таких запросов.
YDB UI
- В редактор запросов добавлена поддержка частичной загрузки результатов — отображение начинается сразу при получении первого фрагмента с сервера без ожидания полного завершения запроса. Это позволяет быстрее получать результаты.
- Улучшена безопасность: элементы управления, которые недоступны пользователю, теперь не отображаются в интерфейсе. Пользователи не будут сталкиваться с ошибками "Доступ запрещен".
- Добавлен добавлен поиск по идентификатору таблетки на вкладку "Tablets".
- Добавлена подсказка по горячим клавишам, которая открывается по комбинации
⌘+K. - На страницу базы данных добавлена вкладка "Операции", которая позволяет просматривать список операций и отменять их.
- Обновлена панель мониторинга кластера, добавлена возможность ее свернуть.
- Реализована поддержка поиска с учетом регистра в инструменте иерархического отображения JSON.
- На верхнюю панель после выбора базы данных добавлены примеры кода для подключения в YDB SDK, что ускоряет процесс разработки.
- Исправлена сортировка строк на вкладке Запросы.
- Удалены лишние запросы подтверждения при закрытии страницы браузера в редакторе запросов — подтверждение запрашивается только когда это необходимо.
- Исправлена ошибка, из-за которой не все таблетки отображались на вкладке Tablets в разделе диагностики.
- Исправлена ошибка, из-за которой на вкладке Storage в разделе диагностики базы данных отображались не только узлы хранения.
- Исправлена ошибка сериализации, которая могла приводить к падению при открытии статистики выполнения запроса.
- Изменена логика перехода узлов в критическое состояние – заполненный на 75-99% CPU pool теперь вызывает предупреждение, а не критическое состояние.
Производительность
- Добавлена поддержка свёртки констант в оптимизаторе запросов по умолчанию, что повышает производительность запросов за счёт вычисления константных выражений на этапе компиляции.
- Добавлен новый протокол гранулярного таймкаста, который позволит сократить время выполнения распределённых транзакций (замедление одного шарда не будет приводить к замедлению всех).
- Реализована функциональность сохранения состояния даташардов в памяти при перезапусках, что позволяет сохранить блокировки и повысить шансы на успешное выполнение транзакций. Это сокращает время выполнения длительных транзакций за счёт уменьшения числа повторных попыток.
- Реализована конвейерная обработка внутренних транзакций в Node Broker, что ускорило запуск динамических узлов в кластере YDB.
- Улучшена устойчивость Node Broker к повышенной нагрузке со стороны узлов кластера.
- Включены по умолчанию выгружаемые B-Tree-индексы вместо невыгружаемых SST-индексов, что позволяет сократить потребление памяти при хранении «холодных» данных.
- Оптимизировано потребление памяти узлами хранения.
- Сократили время запуска Hive до 30%.
- Оптимизирован процесс репликации в распределённом хранилище.
- Оптимизирован размер заголовка больших двоичных объектов в VDisk.
- Уменьшено потребление памяти за счёт очистки страниц аллокатора.
- Оптимизирована обработка пустых входов при выполнении JOIN-операций.
Исправления ошибок
- Исправлена ошибка в настройке Interconnect, приводящая к снижению производительности.
- Исправлена ошибка «Out of memory» при удалении очень больших таблиц за счёт регулирования числа одновременно обрабатывающих данную операцию таблеток.
- Исправлена ошибка, возникавшая при указании одного и того же узла базы данных несколько раз в конфигурации для системных таблеток.
- Устранена ошибка длительного (секунды) чтения данных при частых операциях перешардирования таблицы.
- Исправлена ошибка чтения из асинхронных реплик, приводившая к сбою.
- Исправлены редкие зависания при первоначальном сканировании CDC.
- Исправлена обработка незавершённых схемных транзакций в даташардах при перезапуске системы.
- Исправлена ошибка несогласованного чтения из топика при попытке явно подтвердить сообщение, прочитанное в рамках транзакции. Теперь пользователь при попытке подтвердить сообщение получит ошибку.
- Исправлена ошибка, из-за которой автопартиционирование некорректно работало при работе с топиком в транзакции.
- Исправлены зависания транзакций при работе с топиками во время перезапуска таблеток.
- Исправлена ошибка «Key is out of range» при импорте из S3-совместимого хранилища.
- Исправлено некорректное определение конца поля с метаданными в конфигурации кластера.
- Улучшено построение вторичных индексов: при возникновении некоторых ошибок система ретраит процесс, а не прерывает его.
- Исправлена ошибка выполнения выражения
RETURNINGв запросахINSERT INTOиUPSERT INTO. - Исправлена проблема зависания операции «Drop Tablet» в PQ tablet, особенно во время задержек в работе Interconnect.
- Исправлена ошибка, возникавшая во время компакшна VDisk.
- Исправлена проблема, из-за которой длительные сессии чтения топика завершались с ошибками «too big inflight».
- Исправлено зависание при чтении топика, если хотя бы одна партиция не имела входящих данных, но читалась несколькими потребителями.
- Устранена редкая проблема перезагрузок PQ tablet.
- Устранена проблема, при которой после обновления версии кластера Hive запускались подписчики в датацентрах без работающих узлов баз данных.
- Исправлена ошибка
Failed to set up listener on port 9092 errno# 98 (Address already in use), возникавшая при обновлении версии. - Исправлена ошибка, приводившая к segmentation fault при одновременном выполнении запроса к healthcheck и отключении узла кластера.
- Исправлен сбой в партиционировании строковой таблицы при выборе разделённого ключа из образцов доступа, содержащих смешанные операции с полным ключом и префиксом ключа (например, точное чтение или чтение диапазона).
- Исправлена ошибка, из-за которой тип индекса ошибочно определялся как
GLOBAL SYNC, хотя в запросе явно указывалсяUNIQUE. - Исправлена ошибка, из-за которой автопартиционирование топиков не работало, когда параметр конфигурации
max_active_partitionзадавался с помощью выраженияALTER TOPIC. - Исправлена ошибка, из-за которой
ydb scheme describeвозвращал список столбцов не в том порядке, в котором они были заданы при создании таблицы. - Добавлена поддержка в асинхронной репликации нового типа записи об изменениях —
reset-записи (в дополнение кupdate- иerase-записям). - Исправлена ошибка, из-за которой экземпляр репликации с неуказанным параметром
COMMIT_INTERVALприводил к сбою процесса. - Исправлены редкие ошибки при чтении из топика во время балансировки партиций.
- Исправлена ошибка, из-за которой при удалении dedicated-базы данных системные таблетки базы могли остаться неудалёнными.
- Исправлена ошибка, из-за которой таблетки могли зависать при недостатки памяти на узлах. Теперь таблетки будут автоматически запускаться, как только на каком-либо из узлов освободится достаточное количество ресурсов.
- Исправлена ошибка, из-за которой при записи сообщений Kafka сохранялось только первое сообщение из батча, а остальные сообщения игнорировались.
Версия 24.4
Версия 24.4.4.20
Дата выхода: 1 ноября 2025.
Функциональность
- В операциях резервного копирования и восстановления поддержаны представления (VIEW). Чтобы воспользоваться функциональностью, необходимо установить флаг
enable_view_exportв секцииfeature_flagsконфигурации базы данных или кластера. - В текст ошибок Transaction locks invalidated в случае невозможности идентифицировать таблицу (Unknown table) добавляются дополнительные идентификаторы: идентификатор пути к объекту (
PathId) и идентификатор таблетки (TabletId).
Версия 24.4.4.15
Дата выхода: 19 сентября 2025.
Производительность
- Столбцы, по которым осуществляется сортировка результатов выполнения запроса, учитываются оптимизатором при автоматическом выборе вторичного индекса. Функциональность работает только для запросов к единственной таблице, без присоединения других таблиц.
Исправления ошибок
- При получении ошибки
OperationAbortedв ответе от S3 операция экспорта не завершается ошибкой, а повторяет попытку записи в S3.
Версия 24.4.4.13
Дата выхода: 29 июля 2025.
Функциональность
-
Поддержан рестарт без потери доступности кластера в минимальной отказоустойчивой конфигурации из трех узлов.
-
Добавлены новые функции UDF Roaring bitmap: AndNotWithBinary, FromUint32List, RunOptimize
-
Добавлена возможность регистрировать узел базы данных по сертификату. В Node Broker добавлен флаг
AuthorizeByCertificateиспользования сертификата при регистрации. -
Добавлены приоритеты проверки аутентификационных тикетов с использованием стороннего IAM-провайдера, с самым высоким приоритетом обрабатываются запросы от новых пользователей. Тикеты в кеше обновляют свою информацию с приоритетом ниже.
-
Добавлена возможность чтения и записи в топик с использованием Kafka API без аутентификации.
-
Включены по умолчанию:
Производительность
- Ускорено поднятие таблеток на больших кластерах: 210 мс → 125 мс (ssd), 260 мс → 165 мс (hdd).
- Ограничено количество одновременно обрабатываемых изменений конфигураций.
- Оптимизировано потребление памяти PQ-таблетками.
- Оптимизировано потребление CPU таблеткой Scheme shard, что уменьшило задержки ответов на запросы. Теперь лимит на число операций Scheme shard проверяется до выполнения операций разделения и слияния таблеток.
- Включен по умолчанию автоматический выбор вторичного индекса при выполнении запроса.
Исправления ошибок
- Исправлена ошибка, из-за которой при чтении из топика маленьких сообщений маленькими порциями значительно увеличивалась назгрузка на CPU. Это могло приводить к задержкам в чтении/записи в этот топик.
- Исправлена ошибка восстановления из резервной копии, которая была создана в момент автоматического разделения таблицы.
- Исправлена ошибка в сериализации
Uuidдля CDC. - Исправлена ошибка, из-за которой чтение на подписчиках таблетки могло приводить к сбоям во время автоматического разделения таблицы.
- Исправлена ошибка, при которой узел координации успешно регистрировал прокси-серверы несмотря на разрыв связи.
- Исправлена ошибка, возникающие при открытии в интерфейсе вкладки с информацией о группах распределенного хранилища.
- Исправлена ошибка, из-за которой Health Check не сообщал о проблемах в синхронизации времени.
- Исправлена редкая ошибка зависания клиентских приложений во время выполнения коммита транзакции, когда удаление партиции совершалось раньше обновления квоты на запись в топик.
- Исправлена ошибка в копировании таблиц с типом Decimal, которая приводила к сбою при откате на предыдущую версию.
- Исправлена ошибка, при которой коммит без подтверждения записи в топик приводил к блокировке текущей и следующих транзакций с топиками.
- Исправлены зависания транзакций при работе с топиками при перезагрузке или удалении таблетки.
- Исправлены проблемы с чтением сообщений больше 6Mb через Kafka API.
- Устранена утечка памяти во время записи в топик.
- Исправлены ошибки обработки nullable столбцов и столбцов с типом UUID в строковых таблицах.
- Исправлена ошибка, которая приводила к существенному снижению скорости чтения с подписчиков таблетки.
- Исправлена ошибка, которая приводила к ожиданию подтверждения волатильной распределённой транзакции до следующего рестарта.
- Исправлена редкая ошибка, которая приводила к сбою при подключении подписчиков таблетки к лидеру с несогласованным состоянием журнала команд.
- Исправлена редкая ошибка, которая приводила к сбою при перезапуске удалённого datashard с неконсистентными изменениями.
- Исправлена ошибка, из-за которой мог нарушаться порядок обработки сообщений в топике.
- Исправлена редкая ошибка, из-за которой могло зависать чтение из топика.
- Исправлена проблема, из-за которой транзакция зависала при одновременном управлении топиком пользователем и перемещении PQ таблетки на другой узел.
- Исправлена проблема с утечкой значения счётчика для userInfo, которая могла приводить к ошибке чтения
too big in flight. - Исправлен сбой прокси-сервера из-за дублирования топиков в запросе.
- Исправлена редкая ошибка, из-за которой пользователь мог писать в топик в обход ограничений квоты аккаунта.
- Исправлена проблема, из-за которой после удаления топика система возвращала "OK", но его таблетки продолжали работать. Для удаления таких таблеток воспользуйтесь инструкцией из pull request.
- Исправлена редкая ошибка, из-за которой не восстанавливалась резервная копия большой таблицы с вторичным индексом.
- Исправлена проблема, которая приводила к ошибке при вставке данных с помощью
UPSERTв строковые таблицы с значениями по умолчанию. - Устранена ошибка, которая приводила к сбою при выполнении запросов к таблицам с вторичными индексами, возвращающих списки результатов с помощью выражения
RETURNING *.
Версия 24.3
Версия 24.3.13.11
Дата выхода: 6 марта 2025.
Исправления ошибок
- Исправлена редкая проблема, которая приводила к утечкам незакоммиченных изменений.
- Исправлены проблемы с согласованностью, связанные с кэшированием удаленных диапазонов.
- Исправлена проблема длительного кеширования негативных ответов на запросы аутентификации от LDAP-совместимого каталога пользователей и групп.
Версия 24.3.13.10
Дата выхода: 24 декабря 2024.
Функциональность
- Добавлена трассировка запросов – инструмент, позволяющий детально посмотреть путь следования запроса по распределенной системе.
- Добавлена поддержка асинхронной репликации, которая позволяет синхронизировать данные между базами YDB почти в реальном времени. Также она может быть использована для миграции данных между базами с минимальным простоем работающих с ними приложений.
- Добавлена поддержка представлений (VIEW), которая может быть включена администратором кластера с помощью настройки
enable_viewsв динамической конфигурации. - В федеративных запросах поддержаны новые внешние источники данных: MySQL, Microsoft SQL Server, Greenplum.
- Разработана документация по разворачиванию YDB с функциональностью федеративных запросов (в ручном режиме).
- Для Docker-контейнера с YDB добавлен параметр запуска
FQ_CONNECTOR_ENDPOINT, позволяющий указать адрес коннектора ко внешним источникам данных. Добавлена возможность TLS-шифрования соединения с коннектором. Добавлена возможность вывода порта сервиса коннектора, локально работающего на том же хосте, что и динамический узел YDB. - Добавлен режим автопартиционирования топиков, в котором топики могут разбивать партиции в зависимости от нагрузки с сохранением гарантий порядка чтения сообщений и exactly once записи. Режим может быть включен администратором кластера с помощью настроек
enable_topic_split_mergeиenable_pqconfig_transactions_at_scheme_shardв динамической конфигурации. - Добавлены транзакции с участием топиков и строковых таблиц. Таким образом, можно транзакционно перекладывать данные из таблиц в топики и в обратном направлении, а также между топиками, чтобы данные не терялись и не дублировались. Транзакции могут быть включены администратором кластера с помощью настроек
enable_topic_service_txиenable_pqconfig_transactions_at_scheme_shardв динамической конфигурации. - Добавлена поддержка CDC для синхронных вторичных индексов.
- Добавлена возможность изменить период хранения записей в CDC топиках.
- Добавлена поддержка автоинкремента для колонок, включенных в первичный ключ таблицы.
- Добавлена запись в аудитный лог событий логина пользователей в YDB, событий завершения сессии пользователя в пользовательском интерфейсе, а также запроса бэкапа и восстановления из бэкапа.
- Добавлено системное представление, позволяющее получить информацию о сессиях, установленных с базой данных, с помощью запроса.
- Добавлена поддержка константных значений по умолчанию для колонок строковых таблиц.
- Добавлена поддержка выражения
RETURNINGв запросах. - Добавлена встроенная функция
version(). - Добавлены время запуска/завершения и автор в метаданные операций резервного копирования/восстановления из S3-совместимого хранилища.
- Добавлена поддержка резервного копирования/восстановления из S3-совместимого хранилища ACL для таблиц.
- Для запросов, читающих из S3, в план добавлены пути и метод декомпрессии.
- Добавлены новые настройки парсинга для
timestamp,datetimeпри чтении данных из S3. - Добавлена поддержка типа
Decimalв ключах партиционирования. - Улучшена диагностика проблем хранилища в HealthCheck.
- (Экспериментально) Добавлен стоимостной оптимизатор для сложных запросов, где участвуют колоночные таблицы. Оптимизатор рассматривает большое количество альтернативных планов выполнения и выбирает из них лучший на основе оценки стоимости каждого варианта. На текущий момент оптимизатор работает только с планами, где есть операции JOIN.
- (Экспериментально) Реализована начальная версия менеджера рабочей нагрузки, который позволяет создавать пулы ресурсов с ограничениями по процессору, памяти и количеству активных запросов. Реализованы классификаторы ресурсов для отнесения запросов к определенному пулу ресурсов.
- (Экспериментально) Реализован автоматический выбор индекса при выполнении запроса, который может быть включен администратором кластера с помощью настройки
index_auto_choose_modeвtable_service_configв динамической конфигурации.
YDB UI
- Поддержано создание и отображение экземпляра асинхронной репликации.
- Добавлено обозначение столбцов с автоинкрементом.
- Добавлена вкладка с информацией о таблетках.
- Добавлена вкладка с информацией о группах распределенного хранилища.
- Добавлена настройка для добавления трассировки ко всем запросам и отображение результатов трассировки запроса.
- На страницу PDisk добавлены атрибуты, информация о потреблении дискового пространства, а также кнопка, которая запускает декомиссию диска.
- Добавлена информация о выполняющихся запросах.
- Добавлена настройка лимита строк в выдаче для редактора запроса и отображение, если результаты запроса превысили лимит.
- Добавлено отображение перечня запросов с максимальным потреблением CPU за последний час.
- Добавлен поиск на страницах с историей запросов и списком сохраненных запросов.
- Добавлена возможность прервать исполнение запроса.
- Добавлена возможность сохранять запрос из редактора горячими клавишами.
- Разделено отображение дисков от дисков-доноров.
- Добавлена поддержка InterruptInheritance ACL и улучшено отображение действующих ACL.
- Добавлено отображение текущей версии пользовательского интерфейса.
- Добавлена с информацией о состоянии настроек включения экспериментальной функциональности.
Производительность
- Ускорено восстановление из бэкапа таблиц со вторичными индексами до 20% по нашим тестам.
- Оптимизирована пропускная способность Interconnect.
- Улучшена производительность CDC-топиков, содержащих тысячи партиций.
- Сделан ряд улучшений алгоритма балансировки таблеток Hive.
Исправления ошибок
- Исправлена ошибка, которая приводила в неработоспособное состояние базу с большим количеством таблиц или партиций при восстановлении из резервной копии. Теперь при превышении лимитов на размер базы, операция восстановления завершится ошибкой, база продолжит работать в штатном режиме.
- Реализован механизм, принудительно запускающий фоновый компакшн при обнаружении несоответствий между схемой данных и данными, хранящимися в DataShard. Это решает редко возникающую проблему задержки в изменении схемы данных.
- Устранено дублирование аутентификационных тикетов, которое приводило к повышенному числу запросов в провайдеры аутентификации.
- Исправлена ошибка нарушения инварианта при первоначальном сканировании CDC, приводившая к аварийному завершению серверного процесса ydbd.
- Запрещено изменение схемы таблиц резервного копирования.
- Исправлено зависание первоначального сканирования CDC при частых обновлениях таблицы.
- Исключены удаленные индексы из подсчета лимита на максимальное количество индексов.
- Исправлена ошибка в отображении времени, на которое запланировано выполнение набора транзакций (планируемый шаг).
- Исправлена проблема прерывания blue–green deployment в больших кластерах, возникающая из-за частого обновления списка узлов.
- Исправлена редко возникающая ошибка, которая приводила к нарушению порядка выполнения транзакций.
- Исправлена ошибка в EvWrite API, которая приводила к некорректному освобождению памяти.
- Исправлена проблема зависания волатильных транзакций после перезапуска.
- Исправлена ошибка в CDC, приводящая в некоторых случаях к повышенному потреблению CPU, вплоть до ядра на одну CDC-партицию.
- Устранена задержка чтения, возникающая во время и после разделения некоторых партиций.
- Исправлены ошибки при чтении данных из S3.
- Исправлен способ расчета aws signature при обращении к S3.
- Исправлены ложные срабатывания системы HealthCheck в момент бэкапа базы с большим количеством шардов.
- Снято ограничение на запись в тип Uint8 значений больше 127.
- Исправлена ошибка восстановления из резервной копии, сохраненной в хранилище S3 с Path-style адресацией.
- Исправлена потенциальная поломка "замороженных" блокировок, к которой могли приводить массовые операции (например, удаление по TTL).
- Исправлена редкая проблема, которая приводила к ошибкам при выполнении запроса на чтение.
Версия 24.2
Версия 24.2.7.1
Дата выхода: 20 августа 2024.
Функциональность
- Добавлена возможность задать приоритеты задачам обслуживания в системе управления кластером.
- Добавлена настройка стабильных имён для узлов кластера в рамках тенанта.
- Добавлено получение вложенных групп от LDAP-сервера, в LDAP-конфигурации улучшен парсинг хостов и добавлена настройка для отключения встроенной аутентификацию по логину и паролю.
- Добавлена возможность аутентификации динамических узлов по SSL-сертификату.
- Реализовано удаление неактивных узлов из Hive без его перезапуска.
- Улучшено управление inflight pings при перезапуске Hive в кластерах большого размера.
- Изменен порядок установления соединения с узлами при перезапуске Hive.
YDB UI
- Добавлена возможность задать TTL для сессии пользователя в конфигурационном файле.
- Добавлена сортировка по
CPUTimeв таблицу со списком запросов. - Исправлена потеря точности при работе с
double,float. - Поддержано создание директорий из UI.
- Добавлена возможность задать интервал фонового обновления данных на всех страницах.
- Улучшено отображения ACL.
- Включено автодополнение в редакторе запросов по умолчанию.
- Добавлена поддержка View.
Исправления ошибок
- Добавлена проверка на размер локальной транзакции до ее коммита, чтобы исправить ошибки в работе схемных операции при выполнении экспорта/бекапа больших баз.
- Исправлена ошибка дублирования результатов SELECT-запроса при уменьшении квоты в DataShard.
- Исправлены ошибки, возникающие при изменении состояния координатора.
- Исправлены ошибки, возникающие в момент первичного сканирования CDC.
- Исправлено состояние гонки в асинхронной доставке изменений (асинхронные индексы, CDC).
- Исправлена редкая ошибка, из-за которой удаление по TTL приводило к аварийному завершению процесса.
- Исправлена ошибка отображения статуса PDisk в интерфейсе CMS.
- Исправлены ошибки, из-за которых мягкий перенос (drain) таблеток с узла мог зависать.
- Исправлена ошибка остановки interconnect proxy на узле, работающем без перезапусков, при добавлении другого узла в кластер.
- Исправлен учет свободной памяти в interconnect.
- Исправлены счетчики UnreplicatedPhantoms/UnreplicatedNonPhantoms в VDisk.
- Исправлена обработка пустых запросов сборки мусора на VDisk.
- Исправлено управление настройками TVDiskControls через CMS.
- Исправлена ошибка загрузки данных, созданных более новыми версиями VDisk.
- Исправлена ошибка выполнении запроса
REPLACE INTOсо значением по умолчанию. - Исправлена ошибка исполнения запросов, в которых выполнялось несколько left join'ов к одной строковой таблице.
- Исправлена потеря точности для
float,doubleтипов при использовании CDC.
Версия 24.1
Версия 24.1.18.1
Дата выхода: 31 июля 2024.
Функциональность
- Реализована Knn UDF для точного поиска ближайших векторов.
- Разработан gRPC сервис QueryService, обеспечивающий возможность выполнения всех типов запросов (DML, DDL) и выборку неограниченных объёмов данных.
- Реализована интеграция с LDAP протоколом и возможность получения перечня групп из внешних LDAP-каталогов.
Встроенный UI
- Добавлен дашборд диагностики потребления ресурсов, который находится на вкладке с информацией о базе данных и позволяет определить текущее состояние потребление основных ресурсов: ядер процессора, оперативной памяти и места в сетевом распределенном хранилище.
- Добавлены графики для мониторинга основных показателей работы кластера YDB.
Производительность
- Оптимизированы таймауты сессий сервиса координации от сервера до клиента. Ранее таймаут составлял 5 секунд, что в худшем случае приводило к определению неработающего клиента (и освобождению удерживаемых им ресурсов) в течение 10 секунд. В новой версии время проверки зависит от времени ожидания сеанса, что обеспечивает более быстрое реагирование при смене лидера или захвате распределённых блокировок.
- Оптимизировано потребление CPU репликами SchemeShard, особенно при обработке быстрых обновлений для таблиц с большим количеством партиций.
Исправления ошибок
- Исправлена ошибка возможного переполнения очереди, Change Data Capture резервирует емкость очереди изменений при первоначальном сканировании.
- Исправлена потенциальная взаимоблокировка между получением записей CDC и их отправкой.
- Исправлена проблема потери очереди задач медиатора при переподключении медиатора, исправление позволяет обработать очередь задач медиатора при ресинхронизации.
- Исправлена редко возникающая ошибка, когда при включённых и используемых волатильных транзакциях возвращался успешный результат подтверждения транзакции до того, как она была успешно закоммичена. Волатильные транзакции по умолчанию выключены, находятся в разработке.
- Исправлена редко возникающая ошибка, приводившая к потере установленных блокировок и успешному подтверждению транзакций, которые должны были завершиться ошибкой Transaction Locks Invalidated.
- Исправлена редкая ошибка, приводящая к возможному нарушению гарантий целостности данных при конкурентной записи и чтении данных по определённому ключу.
- Исправлена проблема, из-за которой реплики для чтения переставали обрабатывать запросы.
- Исправлена редкая ошибка, которая могла привести к аварийному завершению процессов базы данных при наличии неподтверждённых транзакций над таблицей в момент её переименования.
- Исправлена ошибка в логике определения статуса статической группы, когда статическая группа не помечалась нерабочей, хотя должна была.
- Исправлена ошибка частичного коммита распределённой транзакции с незакоммиченными изменениями в случае некоторых гонок с рестартами.
- Исправлены аномалии с чтением устаревших данных, которые были обнаружены с помощью Jepsen.
Версия 23.4
Версия 23.4.11.1
Дата выхода: 14 мая 2024.
Производительность
- Исправлена проблема повышенного потребления вычислительных ресурсов актором топиков
PERSQUEUE_PARTITION_ACTOR. - Оптимизировано использование ресурсов репликами SchemeBoard. Наибольший эффект заметен при модификации метаданных таблиц с большим количеством партиций.
Исправления ошибок
- Исправлена ошибка возможной неполной фиксации накопленных изменений при использовании распределенных транзакций. Данная ошибка возникает при крайне редкой комбинации событий, включающей в себя перезапуск таблеток, обслуживающих вовлеченные в транзакцию партиции таблиц.
- Устранена гонка между процессами слияния таблиц и сборки мусора, из-за которой сборка мусора могла завершиться ошибкой нарушения инвариантов и, как следствие, аварийным завершением серверного процесса
ydbd. - Исправлена ошибка в Blob Storage, из-за которой информация о смене состава группы хранения могла не поступать своевременно на отдельные узлы кластера. В результате в редких случаях могли блокироваться операции чтения и записи данных, хранящихся в затронутой группе, и требовалось ручное вмешательство администратора.
- Исправлена ошибка в Blob Storage, из-за которой при корректной конфигурации могли не запускаться узлы хранения данных. Ошибка проявлялась для систем с явным образом включенной экспериментальной функцией "blob depot" (по умолчанию эта функция выключена).
- Исправлена ошибка, возникавшая в некоторых ситуациях записи в топик с пустым
producer_idпри выключенной дедупликации. Она могла приводить к аварийному завершению серверного процессаydbd. - Исправлена проблема, приводящая к падению процесса
ydbdиз-за ошибочного состояния сессии записи в топик. - Исправлена ошибка отображения метрики количества партиций в топике, ранее в ней отображалось некорректное значение.
- Устранены утечки памяти, которые проявлялись при копировании данных топиков между кластерами YDB. Они могли приводить к завершению серверных процессов
ydbdиз-за исчерпания доступной оперативной памяти.
Версия 23.3
Версия 23.3.25.2
Дата выхода: 12 октября 2023.
Функциональность
- Реализована видимость собственных изменений внутри транзакций. Ранее при попытке прочитать данные, уже модифицированные в текущей транзакцией, запрос завершался ошибкой. Это приводило к необходимости упорядочивать чтения и записи внутри транзакции. С появлением видимости собственных изменений эти ограничения снимаются, и запросы могут читать измененные в данной транзакции строчки.
- Добавлена поддержка колоночных таблиц. Колоночные таблицы хорошо подходят для работы с аналитическими запросами (Online Analytical Processing), так как при выполнении запроса считываются только те столбцы, которые непосредственно участвуют в запросе. Колоночные таблицы YDB позволяют создавать аналитические отчёты с производительностью, сопоставимой со специализированными аналитическими СУБД.
- Добавлена поддержка Kafka API для топиков. Теперь с YDB-топиками можно работать через Kafka-совместимый API, предназначенный для миграции существующих приложений. Обеспечена поддержка протокола Kafka версии 3.4.0.
- Добавлена возможность записи в топик без дедупликации. Такой вид записи хорошо подходит для случаев, когда порядок обработки сообщений не критичен. Запись без дедупликации работает быстрее и потребляет меньше ресурсов на сервере, но упорядочение и дедупликация сообщений на сервере не происходит.
- В YQL добавлены возможности создавать, изменять и удалять топики.
- Добавлена возможность назначать и отзывать права доступа с помощью команд YQL GRANT и REVOKE.
- Добавлена возможность логгировать DML-операции в аудитном логе.
- (Экспериментально) При записи сообщений в топик теперь можно передавать метаданные. Для включения этой функциональности добавьте
enable_topic_message_meta: trueв конфигурационный файл. - (Экспериментально) Добавлена возможность чтения из топиков и запись в таблицу в рамках одной транзакции. Новая возможность упрощает сценарий переноса данных из топика в таблицу. Для её включения добавьте
enable_topic_service_tx: trueв конфигурационный файл. - (Экспериментально) Добавлена поддержка совместимости с PostgreSQL. Новый механизм позволяет выполнять SQL запросы в PostgreSQL диалекте на инфраструктуре YDB с использованием сетевого протокола PostgreSQL. Можно использовать привычные инструменты работы с PostgreSQL, такие, как psql и драйверы (pq для Golang и psycopg2 для Python), а также разрабатывать запросы на привычном PostgreSQL синтаксисе с горизонтальной масштабируемостью и отказоустойчивость YDB.
- (Экспериментально) Добавлена поддержка федеративных запросов. Она позволяет получать информацию из различных источников данных без их переноса в YDB. Поддерживается взаимодействие с ClickHouse, PostgreSQL, S3 через YQL-запросы без дублирования данных между системами.
Встроенный UI
- В настройках селектора типа запроса добавлена новая опция
PostgreSQL, которая доступна при включении параметраEnable additional query modes. Также в истории запросов теперь учитывается синтаксис, используемый при выполнении запроса. - Обновлен шаблон YQL-запроса для создания таблицы. Добавлено описание доступных параметров.
- Сортировка и фильтрация для таблиц Storage и Nodes вынесена на сервер. Необходимо включить параметр
Offload tables filters and sorting to backendв разделе экспериментов, чтобы использовать данный функционал. - В контекстное меню были добавлены кнопки для создания, изменения и удаления топиков.
- Добавлена сортировка по критичности для всех issues в дереве в
Healthcheck.
Производительность
- Реализованы итераторные чтения. Новая функциональность позволяет разделить чтения и вычисления между собой. Итераторные чтения позволяют даташардам увеличить пропускную способность читающих запросов.
- Оптимизирована производительность записи в топики YDB.
- Улучшена балансировка таблеток при перегрузке нод.
Исправления ошибок
- Исправлена ошибка возможной блокировки читающими итераторами снепшотов, о которых не знают координаторы.
- Исправлена утечка памяти при закрытии соединения в kafka proxy.
- Исправлена ошибка, при которой снепшоты, взятые через читающие итераторы, могут не восстанавливаться на рестартах.
- Исправлен некорректный residual предикат для условия
IS NULLна колонку. - Исправлена срабатывающая проверка
VERIFY failed: SendResult(): requirement ChunksLimiter.Take(sendBytes) failed. - Исправлен
ALTER TABLEпоTTLдля колоночных таблиц. - Реализован
FeatureFlag, который позволяет отключать/включать работу сCSиDS. - Исправлено различие координаторного времени между 23-2 и 23-3 на 50мс.
- Исправлена ошибка, при которой ручка
storageвозвращала лишние группы, когда в запросе параметрnode_idвоviewer backend. - Добавлен
usageфильтр в/storageвоviewer backend. - Исправлена ошибка в Storage v2, при которой возвращалось некорректное число в
Degraded. - Исправлена отмена подписки от сессий в итераторных чтениях при рестарте таблетки.
- Исправлена ошибка, при которой во время роллинг-рестарта при походе через балансер моргает
healthcheckалертами про storage. - Обновлены метрики
cpu usageв ydb. - Исправлено игнорирование
NULLпри указанииNOT NULLв схеме таблицы. - Реализован вывод записей об операциях
DDLв общий лог. - Реализован запрет для команды
ydb table attribute add/dropработать с любыми объектами, кроме таблиц. - Отключён
CloseOnIdleдляinterconnect. - Исправлено задваивание скорости чтения в UI.
- Исправлена ошибка, при которой могли теряться данные на
block-4-2. - Добавлена проверка имени топика.
- Исправлен возможный
deadlockв акторной системе. - Исправлен тест
KqpScanArrowInChanels::AllTypesColumns. - Исправлен тест
KqpScan::SqlInParameter. - Исправлены проблемы параллелизма для OLAP-запросов.
- Исправлена вставка
ClickBench parquet. - Добавлен недостающий вызов
CheckChangesQueueOverflowв общемCheckDataTxReject. - Исправлена ошибка возврата пустого статуса при вызовах
ReadRows API. - Исправлен некорректны ретрай экспорта в финальной стадии.
- Исправлена проблема с бесконечной квотой на число записей в CDC-топике.
- Исправлена ошибка импорта колонки
stringиparquetв колонкуstringOLAP. - Исправлено падение
KqpOlapTypes.Timestampпод tsan. - Исправлено падение во
viewer backendпри попытке выполнить запрос к базе из-за несовместимости версий. - Исправлена ошибка, при которой
viewerне возвращал ответ отhealthcheckиз-за таймаута. - Исправлена ошибка, при которой в Pdisk'ах могло сохраняться некорректное значение
ExpectedSerial. - Исправлена ошибка, при которой ноды базы падают по
segfaultв S3 акторе. - Исправлена гонка в
ThreadSanitizer: data race KqpService::ToDictCache-UseCache. - Исправлена гонка в
GetNextReadId. - Исправлено завышение результата
SELECT COUNT(*)сразу после импорта. - Исправлена ошибка, при которой
TEvScanмог вернуть пустой набор данных в случае сплита даташарда. - Добавлен отдельный issue/код ошибки в случае исчерпания доступного места.
- Исправлена ошибка
GRPC_LIBRARY Assertion failed. - Исправлена ошибка, при которой при чтении по вторичному индексу в сканирующих запросах получался пустой результат.
- Исправлена валидация
CommitOffsetвTopicAPI. - Уменьшено потребление
shared cacheпри приближении к OOM. - Смержена логика планировщиков из
data executerиscan executerв один класс. - Добавлены ручки
discoveryиproxyв процесс выполненияqueryвоviewer backend. - Исправлена ошибка, при которой ручка
/clusterвозвращает название корневого домена типа/ruвоviewer backend. - Реализована схема бесшовного обновления табличек для
QueryService. - Исправлена ошибка, при которой
DELETEвозвращал данные и НЕ удалял их. - Исправлена ошибка работы
DELETE ONвquery service. - Исправлено неожиданное выключение батчинга в дефолтных настройках схемы.
- Исправлена срабатывающая проверка
VERIFY failed: MoveUserTable(): requirement move.ReMapIndexesSize() == newTableInfo->Indexes.size(). - Увеличен дефолтный таймаут grpc-сриминга.
- Исключены неиспользуемые сообщения и методы из
QueryService. - Добавлена сортировка по
Rackв/nodesвоviewer backend. - Исправлена ошибка, при которой запрос с сортировкой возвращает ошибку при убывании.
- Исправлено взаимодействие
QPсNodeWhiteboard. - Удалена поддержка старых форматов параметров.
- Исправлена ошибка, при которой
DefineBoxне применялся для дисков, на которых есть статическая группа. - Исправлена ошибка
SIGSEGVв диннодах при импортеCSVчерезYDB CLI. - Исправлена ошибка с падением при обработке
NGRpcService::TRefreshTokenImpl. - Реализован
gossipпротокол обмена информацией о ресурсах кластера. - Исправлена ошибка
DeserializeValuePickleV1(): requirement data.GetTransportVersion() == (ui32) NDqProto::DATA_TRANSPORT_UV_PICKLE_1_0 failed. - Реализованы автоинкрементные колонки.
- Использовать статус
UNAVAILABLEвместоGENERIC_ERRORпри ошибке идентификации шарда. - Добавлена поддержка
rope payloadвTEvVGet. - Добавлено игнорирование устаревших событий.
- Исправлено падение write-сессий на невалидном имени топика.
- Исправлена ошибка
CheckExpected(): requirement newConstr failed, message: Rewrite error, missing Distinct((id)) constraint in node FlatMap. - Включён
self healпо умолчанию.