feature_flags

В рамках классического подхода feature toggling проект YDB реализует механизм фича-флагов.

Фича-флаги — настройки, которые включают или отключают отдельные возможности YDB. Они позволяют включать новую функциональность поэтапно: её код уже может присутствовать в установленной версии YDB, а сама функциональность ещё недоступна пользователям.

Кто переключает фича-флаги

Переключать фича-флаги может владелец функциональности, знакомый с её внутренней реализацией. Переключение — сложный процесс: необходимо учитывать состояние кластера, зависимости между возможностями и совместимость версий и форматов данных.

Не переключайте флаги самостоятельно, если у вас недостаточно знаний о внутренней реализации функциональности и последствиях изменения её состояния. Перед переключением изучите документацию нужной версии YDB и при необходимости обсудите изменение с владельцем функциональности.

Важно

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

Экспериментальная функциональность

Почему флаг может быть выключен

Часть функциональности попадает в релиз в экспериментальном состоянии. Она ещё находится в разработке, поэтому по умолчанию выключена. Её поведение, синтаксис, API или формат хранения данных могут измениться без сохранения обратной совместимости. Такая функциональность может долго оставаться экспериментальной или быть удалена, так и не став общедоступной.

При этом не каждый выключенный флаг означает экспериментальную функциональность. Некоторые флаги управляют стабильными возможностями, которые нужны не всем. Статус конкретной возможности проверяйте по её документации для нужной версии YDB.

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

Чем опасно включение экспериментальной функциональности

Для экспериментальной функциональности не гарантируются стабильность, производительность и обратная совместимость. Включение её флага может привести к:

  • ошибкам при выполнении запросов или нестабильной работе кластера;
  • снижению производительности;
  • записи данных в формате, который не поддерживается предыдущей версией YDB.

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

Не включайте экспериментальную функциональность в production-кластерах. Для проверки используйте отдельный тестовый кластер с данными, которые не жалко потерять.

Как узнать, доступна ли функциональность

При проверке доступности учитывайте установленную версию YDB и конфигурацию кластера.

  1. Прочитайте документацию нужной версии и release notes. Проверьте ограничения функциональности и указания на её экспериментальный статус.
  2. Сгенерируйте конечную конфигурацию для узлов, которые обслуживают нужную базу данных, и проверьте значение соответствующего флага. Описание флагов приведено в справочнике конфигурации.

Значение флага по умолчанию определяется кодом соответствующей версии YDB. В конфигурации кластера значение может отличаться от значения по умолчанию. Поэтому справочник флагов не заменяет проверку фактической доступности на вашем кластере.

Как функциональность становится общедоступной

Когда экспериментальная функциональность готова к общему использованию, её флаг включают по умолчанию в соответствующей версии YDB. Из документации этой версии убирают предупреждение об экспериментальном статусе, а в release notes появляется запись о доступности функциональности.

После обновления кластера проверьте его конфигурацию: явно заданное значение флага может отличаться от нового значения по умолчанию.

Настройка флагов

Секция feature_flags включает или отключает отдельные возможности YDB в основной конфигурации кластера. С помощью селекторов динамической конфигурации можно переопределить флаги для отдельных баз данных или групп узлов. Чтобы включить возможность, установите соответствующий фича-флаг в значение true. Например, для включения поддержки автопартиционирования топиков в CDC добавьте следующие строки в конфигурацию:

feature_flags:
  enable_topic_autopartitioning_for_cdc: true

Функциональные флаги

Флаг Функция
enable_json_index JSON-индексы для ускорения поиска в полях JSON
enable_json_index_auto_select Автоматический выбор JSON-индексов при выполнении запросов
enable_fulltext_index Полнотекстовый индекс для полнотекстового поиска
enable_local_bloom_filter_index Локальный Блум-индекс типа bloom_filter
enable_local_bloom_ngram_filter_index Локальный Блум-индекс типа bloom_ngram_filter
enable_local_min_max_index Локальный min_max-индекс
enable_topic_autopartitioning_for_cdc Автопартиционирование топиков в CDC для строковых таблиц
enable_access_to_index_impl_tables Возможность указания числа реплик для вторичного индекса
enable_changefeeds_export, enable_changefeeds_import Поддержка потоков изменений (changefeed) в операциях резервного копирования и восстановления
enable_view_export Поддержка представлений (VIEW) в операциях резервного копирования и восстановления
enable_export_auto_dropping Автоудаление временных директорий и таблиц при экспорте в S3
enable_followers_stats Системные представления с информацией об истории перегруженных партиций
enable_strict_acl_check Запрет на выдачу прав несуществующим пользователям и на удаление пользователей, которым выданы права
enable_strict_user_management Строгие правила администрирования локальных пользователей (т.е. администрировать локальных пользователей может только администратор кластера или базы данных)
enable_database_admin Добавление роли администратора базы данных
enable_kafka_native_balancing Клиентская балансировка партиций при чтении по протоколу Kafka
enable_topic_compactification_by_key Включение компактификации топиков в YDB Topics Kafka API
enable_kafka_transactions Включение транзакций в YDB Topics Kafka API
enable_external_data_sources Включение внешних источников данных
switch_to_config_v2 Переход с конфигурации V1 на конфигурацию V2
enable_streaming_queries Включение потоковых запросов
enable_stable_node_names Включение стабильных имен динамических узлов
enable_alter_database_create_hive_first Создание отдельного Hive для системных таблеток базы при создании базы данных
Предыдущая
Следующая