Список изменений YDB Server

Версия 24.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

Дата выхода: 14 мая 2024.

Производительность

  • Исправлена проблема повышенного потребления вычислительных ресурсов актором топиков PERSQUEUE_PARTITION_ACTOR.
  • Оптимизировано использование ресурсов репликами SchemeBoard. Наибольший эффект заметен при модификации метаданных таблиц с большим количеством партиций.

Исправления ошибок

  • Исправлена ошибка возможной неполной фиксации накопленных изменений при использовании распределенных транзакций. Данная ошибка возникает при крайне редкой комбинации событий, включающей в себя перезапуск таблеток, обслуживающих вовлеченные в транзакцию партиции таблиц.
  • Устранена гонка между процессами слияния таблиц и сборки мусора, из-за которой сборка мусора могла завершиться ошибкой нарушения инвариантов и, как следствие, аварийным завершением серверного процесса ydbd.
  • Исправлена ошибка в Blob Storage, из-за которой информация о смене состава группы хранения могла не поступать своевременно на отдельные узлы кластера. В результате в редких случаях могли блокироваться операции чтения и записи данных, хранящихся в затронутой группе, и требовалось ручное вмешательство администратора.
  • Исправлена ошибка в Blob Storage, из-за которой при корректной конфигурации могли не запускаться узлы хранения данных. Ошибка проявлялась для систем с явным образом включенной экспериментальной функцией "blob depot" (по умолчанию эта функция выключена).
  • Исправлена ошибка, возникавшая в некоторых ситуациях записи в топик с пустым producer_id при выключенной дедупликации. Она могла приводить к аварийному завершению серверного процесса ydbd.
  • Исправлена проблема, приводящая к падению процесса ydbd из-за ошибочного состояния сессии записи в топик.
  • Исправлена ошибка отображения метрики количества партиций в топике, ранее в ней отображалось некорректное значение.
  • Устранены утечки памяти, которые проявлялись при копировании данных топиков между кластерами YDB. Они могли приводить к завершению серверных процессов ydbd из-за исчерпания доступной оперативной памяти.

Версия 23.3

Дата выхода: 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 в колонку string OLAP.
  • Исправлено падение 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.
  • Исправлена ошибка, при которой запрос с сортировкой возвращает ошибку при убывании.
  • Исправлено взаимодействие KQP с 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.
  • Включён safe heal по умолчанию.

Версия 23.2

Дата выхода: 14 августа 2023.

Функциональность

  • (Экспериментально) Реализована видимость собственных изменений. При включении этой функции вы можете читать измененные значения из текущей транзакции, которая еще не была закоммичена. Также эта функциональность позволяет выполнять несколько модифицирующих операций в одной транзакции над таблицей с вторичными индексами. Для включения этой функциональности добавьте enable_kqp_immediate_effects: true в секцию table_service_config в конфигурационный файл.
  • (Экспериментально) Реализованы итераторные чтения. Эта функциональность позволяет разделить чтения и вычисления между собой. Итераторные чтения позволяют даташардам увеличить пропускную способность читающих запросов. Для включения этой функциональности добавьте enable_kqp_data_query_source_read: true в секцию table_service_config в конфигурационный файл.

Встроенный UI

  • Улучшена навигация:
    • Кнопки переключения между режимами диагностики и разработки вынесены на левую панель.
    • На всех страницах добавлены хлебные крошки.
    • На странице базы данных информация о группах хранения и узлах базы перенесена во вкладки.
  • История и сохраненные запросы перенесены во вкладки над редактором запросов.
  • На вкладках Info для объектов схемы настройки выведены в терминах конструкции CREATE или ALTER.
  • Поддержано отображение колоночных таблиц в дереве схемы.

Производительность

  • Для сканирующих запросов реализована возможность эффективного поиска отдельных строк с использованием первичного ключа или вторичных индексов, что позволяет во многих случаях значительно улучшить производительность. Как и в обычных запросах, для использования вторичного индекса необходимо явно указать его имя в тексте запроса с использованием ключевого слова VIEW.

  • (Экспериментально) Добавлена возможность управлять системными таблетками базы (SchemeShard, Coordinators, Mediators, SysViewProcessor) её собственному Hive'у, вместо корневого Hive'а, и делать это сразу в момент создания новой базы. Без этого флага системные таблетки новой базы создаются в корневом Hive'е, что может негативно сказаться на его загруженности. Включение этого флага делает базы полностью изолированными по нагрузке, что может быть особенно актуально для инсталляций, состоящих из ста и более узлов. Для включения этой функциональности добавьте alter_database_create_hive_first: true в секцию feature_flags в конфигурационный файл.

Исправления ошибок

  • Исправлена ошибка в автоконфигурации акторной системы, в результате чего вся нагрузка ложится на системный пул.
  • Исправлена ошибка, приводящая к полному сканированию при поиске по префиксу первичного ключа через LIKE.
  • Исправлены ошибки при взаимодействии с фолловерами даташардов.
  • Исправлены ошибки при работе с памятью в колоночных таблицах.
  • Исправлена ошибки при обработке условий для immediate-транзакций.
  • Исправлена ошибка в работе итераторных чтений на фолловерах даташардов.
  • Исправлена ошибка, приводящая к лавинообразной переустановке сессий доставки данных до асинхронных индексов
  • Исправлены ошибки в оптимизаторе в сканирующих запросах
  • Исправлена ошибка некорректного расчёта потребления хранилища hive'ом после расширения базы
  • Исправлена ошибка зависания операций от несуществующих итераторов
  • Исправлены ошибки при чтении диапазона на NOT NULL колонке
  • Исправлена ошибка зависания репликации VDisk'ов
  • Исправлена ошибка в работе опции run_interval в TTL

Версия 23.1

Дата выхода 5 мая 2023. Для обновления до версии 23.1 перейдите в раздел Загрузки.

Функциональность

  • Добавлено первоначальное сканирование таблицы при создании потока изменений CDC. Теперь можно выгрузить все данные, которые существуют на момент создания потока.
  • Добавлена возможность атомарной замены индекса. Теперь можно атомарно и прозрачно для приложения подменить один индекс другим заранее созданным индексом. Замена выполняется без простоя.
  • Добавлен аудитный лог — поток событий, который содержит информацию обо всех операциях над объектами YDB.

Производительность

  • Улучшены форматы передачи данных между стадиями исполнения запроса, что ускорило SELECT на запросах с параметрами на 10%, на операциях записи — до 30%.
  • Добавлено автоматическое конфигурирование пулов акторной системы в зависимости от их нагруженности. Это повышает производительность за счет более эффективного совместного использования ресурсов ЦПУ.
  • Оптимизирована логика применения предикатов — выполнение ограничений с использованием OR и IN с параметрами автоматически переносится на сторону DataShard.
  • (Экспериментально) Для сканирующих запросов реализована возможность эффективного поиска отдельных строк с использованием первичного ключа или вторичных индексов, что позволяет во многих случаях значительно улучшить производительность. Как и в обычных запросах, для использования вторичного индекса необходимо явно указать его имя в тексте запроса с использованием ключевого слова VIEW.
  • Реализовано кеширование графа вычисления при выполнении запросов, что уменьшает потребление ЦПУ при его построении.

Исправления ошибок

  • Исправлен ряд ошибок в реализации распределенного хранилища данных. Мы настоятельно рекомендуем всем пользователям обновиться на актуальную версию.
  • Исправлена ошибка построения индекса на not null колонках.
  • Исправлен подсчет статистики при включенном MVCC.
  • Исправлены ошибки с бэкапами.
  • Исправлена гонка во время сплита и удаления таблицы с CDC.

Версия 22.5

Дата выхода 7 марта 2023. Для обновления до версии 22.5 перейдите в раздел Загрузки.

Что нового

Исправления ошибок и улучшения

  • Исправлена ошибка при вставке 0 строк операцией BulkUpsert.
  • Исправлена ошибка при импорте колонок типа Date/DateTime из CSV.
  • Исправлена ошибка импорта данных из CSV с разрывом строки.
  • Исправлена ошибка импорта данных из CSV с пустыми значениями.
  • Улучшена производительность Query Processing (WorkerActor заменен на SessionActor).
  • Компактификация DataShard теперь запускается сразу после операций split или merge.

Версия 22.4

Дата выхода 12 октября 2022. Для обновления до версии 22.4 перейдите в раздел Загрузки.

Что нового

  • YDB Topics и Change Data Capture (CDC):

    • Представлен новый Topic API. Топик YDB — это сущность для хранения неструктурированных сообщений и доставки их различным подписчикам.
    • Поддержка нового Topic API добавлена в YDB CLI и SDK. Topic API предоставляет методы потоковой записи и чтения сообщений, а также управления топиками.
    • Добавлена возможность захвата изменений данных таблицы с отправкой сообщений об изменениях в топик.
  • SDK:

    • Добавлена возможность взаимодействовать с топиками в YDB SDK.
    • Добавлена официальная поддержка драйвера database/sql для работы с YDB в Golang.
  • Embedded UI:

    • Поток изменений CDC и вторичные индексы теперь отображаются в иерархии схемы базы данных как отдельные объекты.
    • Улучшена визуализация графического представления query explain планов.
    • Проблемные группы хранения теперь более заметны.
    • Различные улучшения на основе UX-исследований.
  • Query Processing:

    • Добавлен Query Processor 2.0 — новая подсистема выполнения OLTP-запросов со значительными улучшениями относительно предыдущей версии.
    • Улучшение производительности записи составило до 60%, чтения до 10%.
    • Добавлена возможность включения ограничения NOT NULL для первичных ключей в YDB во время создания таблиц.
    • Включена поддержка переименования вторичного индекса в режиме онлайн без остановки сервиса.
    • Улучшено представление query explain, которое теперь включает графы для физических операторов.
  • Core:

    • Для read-only транзакций добавлена поддержка консистентного снапшота, который не конфликтует с пишущими транзакциями.
    • Добавлена поддержка BulkUpsert для таблиц с асинхронными вторичными индексами.
    • Добавлена поддержка TTL для таблиц с асинхронными вторичными индексами.
    • Добавлена поддержка сжатия при экспорте данных в S3.
    • Добавлен audit log для DDL statements.
    • Поддержана аутентификация со статическими учетными данными.
    • Добавлены системные таблицы для диагностики производительности запросов.
Предыдущая
Следующая