Развёртывание YDB с функцией Federated Query

Важно

Данная функциональность находится в режиме "Experimental".

Общая схема инсталляции

YDB может выполнять федеративные запросы ко внешним источникам (например, объектным хранилищам или реляционным СУБД) без необходимости перемещения их данных непосредственно в YDB. В данном разделе мы рассмотрим изменения, которые необходимо внести в конфигурацию YDB и окружающую инфраструктуру для включения функциональности федеративных запросов.

Примечание

Для организации доступа к некоторым из источников данных требуется развёртывание специального микросервиса - коннектора. Ознакомьтесь c перечнем поддерживаемых источников, чтобы понять, требуется ли вам установка коннектора.

Кластер YDB и внешние источники данных в варианте production-инсталляции должны развёртываться на разных физических или виртуальных серверах, в том числе в облаках. Если для доступа к определённому источнику требуется развёртывание коннектора, это необходимо сделать на тех же серверах, на которых развёрнуты динамические узлы YDB. Иными словами, на каждый процесс ydbd, работающий в режиме динамического узла, должен приходиться один локальный процесс коннектора.

При этом должны выполняться следующие требования:

  • внешний источник данных должен быть доступен по сети для запросов со стороны YDB или со стороны коннектора (при его наличии);
  • коннектор должен быть доступен по сети для запросов со стороны YDB (что достигается тривиальным образом благодаря работе этих процессов на одном и том же хосте).

Инсталляция YDB FQ

Примечание

В настоящее время мы не поддерживаем развёртывание коннектора в Kubernetes, но планируем добавить её в ближайшем будущем.

Пошаговое руководство

  1. Выполните шаги инструкции по развёртыванию динамического узла YDB до подготовки конфигурационных файлов включительно.
  2. Если для доступа к нужному вам источнику требуется развернуть коннектор, сделайте это согласно инструкции.
  3. Если для доступа к нужному вам источнику трубуется развернуть коннектор, в конфигурационном файле YDB в секции query_service_config добавьте подсекцию generic по приведённому ниже образцу. В полях connector.endpoint.host и connector.endpoint.port укажите сетевой адрес коннектора (по умолчанию localhost и 2130). При совместном размещении коннектора и динамического узла YDB на одном сервере установка шифрованных соединений между ними не требуется, но в случае необходимости вы можете включить шифрование, передав значение true в поле connector.use_ssl и указав путь до сертификата CA, использованного для подписи TLS-ключей коннектора, в connector.ssl_ca_crt:
    query_service_config:
        generic:
            connector:
                endpoint:
                    host: localhost                 # имя хоста, где развернут коннектор
                    port: 2130                      # номер порта для слушающего сокета коннектора
                use_ssl: false                      # флаг, включающий шифрование соединений
                ssl_ca_crt: "/opt/ydb/certs/ca.crt" # (опционально) путь к сертификату CA
            default_settings:
                - name: DateTimeFormat
                  value: string
                - name: UsePredicatePushdown
                  value: "true"
    
  4. В конфигурационном файле YDB добавьте секцию feature_flags следующего содержания:
    feature_flags:
        enable_external_data_sources: true
        enable_script_execution_operations: true
    
  5. Продолжайте развёртывание динамического узла YDB по инструкции.