.. _dicts-external_dicts_dict_sources: ************************** Источники внешних словарей ************************** Внешний словарь можно подключить из множества источников. Общий вид конфигурации: .. code-block:: xml ... ... ... Источник настраивается в разделе ``source``. Типы источников (``source_type``): * :ref:`dicts-external_dicts_dict_sources-local_file` * :ref:`dicts-external_dicts_dict_sources-executable` * :ref:`dicts-external_dicts_dict_sources-http` * :ref:`dicts-external_dicts_dict_sources-odbc` * СУБД: * :ref:`dicts-external_dicts_dict_sources-mysql` * :ref:`dicts-external_dicts_dict_sources-clickhouse` * :ref:`dicts-external_dicts_dict_sources-mongodb` .. _dicts-external_dicts_dict_sources-local_file: Локальный файл ============== Пример настройки: .. code-block:: xml /opt/dictionaries/os.tsv TabSeparated Поля настройки: * ``path`` - Абсолютный путь к файлу. * ``format`` - Формат файла. Поддерживаются все форматы, описанные в разделе ":ref:`formats`". .. _dicts-external_dicts_dict_sources-executable: Исполняемый файл ================ Работа с исполняемым файлом зависит от :ref:`размещения словаря в памяти `. Если тип размещения словаря ``cache`` и ``complex_key_cache``, то ClickHouse запрашивает необходимые ключи, отправляя запрос в ``STDIN`` исполняемого файла. Пример настройки: .. code-block:: xml cat /opt/dictionaries/os.tsv TabSeparated Поля настройки: * ``command`` - Абсолютный путь к исполняемому файлу или имя файла (если каталог программы прописан в ``PATH``). * ``format`` - Формат файла. Поддерживаются все форматы, описанные в разделе ":ref:`formats`". .. _dicts-external_dicts_dict_sources-http: HTTP(s) ======= Работа с HTTP(s) сервером зависит от :ref:`размещения словаря в памяти `. Если тип размещения словаря ``cache`` и ``complex_key_cache``, то ClickHouse запрашивает необходимые ключи, отправляя запрос методом ``POST``. Пример настройки: .. code-block:: xml http://[::1]/os.tsv TabSeparated Чтобы ClickHouse смог обратиться к HTTPS-ресурсу, необходимо :ref:`настроить openSSL ` в конфигурации сервера. Поля настройки: * ``url`` - URL источника. * ``format`` - Формат файла. Поддерживаются все форматы, описанные в разделе ":ref:`formats`". .. _dicts-external_dicts_dict_sources-odbc: ODBC ==== Этим способом можно подключить любую базу данных, имеющую ODBC драйвер. Пример настройки: .. code-block:: xml DatabaseName TableName
DSN=some_parameters SQL_QUERY
Поля настройки: * ``db`` - имя базы данных. Не указывать, если имя базы задано в параметрах ````. * ``table`` - имя таблицы. * ``connection_string`` - строка соединения. * ``invalidate_query`` - запрос для проверки статуса словаря. Необязательный параметр. Читайте подробнее в разделе :ref:`dicts-external_dicts_dict_lifetime`. Пример подключения PostgreSQL ----------------------------- ОС Ubuntu. Установка unixODBC и ODBC-драйвера для PostgreSQL: :: sudo apt-get install -y unixodbc odbcinst odbc-postgresql Настройка ``/etc/odbc.ini`` (или ``~/.odbc.ini``): :: [DEFAULT] Driver = myconnection [myconnection] Description = PostgreSQL connection to my_db Driver = PostgreSQL Unicode Database = my_db Servername = 127.0.0.1 UserName = username Password = password Port = 5432 Protocol = 9.3 ReadOnly = No RowVersioning = No ShowSystemTables = No ConnSettings = Конфигурация словаря в ClickHouse: .. code-block:: xml table_name DSN=myconnection postgresql_table
300 360 id some_column UInt64 0
Может понадобиться в ``odbc.ini`` указать полный путь до библиотеки с драйвером ``DRIVER=/usr/local/lib/psqlodbcw.so``. Пример подключения MS SQL Server -------------------------------- ОС Ubuntu. Установка драйвера: :: sudo apt-get install tdsodbc freetds-bin sqsh Настройка драйвера: :: $ cat /etc/freetds/freetds.conf ... [MSSQL] host = 192.168.56.101 port = 1433 tds version = 7.0 client charset = UTF-8 $ cat /etc/odbcinst.ini ... [FreeTDS] Description = FreeTDS Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so FileUsage = 1 UsageCount = 5 $ cat ~/.odbc.ini ... [MSSQL] Description = FreeTDS Driver = FreeTDS Servername = MSSQL Database = test UID = test PWD = test Port = 1433 Настройка словаря в ClickHouse: .. code-block:: xml test dict
DSN=MSSQL;UID=test;PWD=test
300 360 k s String
СУБД ==== .. _dicts-external_dicts_dict_sources-mysql: MySQL ----- Пример настройки: .. code-block:: xml 3306 clickhouse qwerty example01-1 1 example01-2 1 db_name table_name
id=10 SQL_QUERY
Поля настройки: * ``port`` - порт сервера MySQL. Можно указать для всех реплик или для каждой в отдельности (внутри ````). * ``user`` - имя пользователя MySQL. Можно указать для всех реплик или для каждой в отдельности (внутри ````). * ``password`` - пароль пользователя MySQL. Можно указать для всех реплик или для каждой в отдельности (внутри ````). * ``replica`` - блок конфигурации реплики. Блоков может быть несколько. * ``replica/host`` - хост MySQL. * ``replica/priority`` - приоритет реплики. При попытке соединения ClickHouse обходит реплики в соответствии с приоритетом. Чем меньше цифра, тем выше приоритет. * ``db`` - имя базы данных. * ``table`` - имя таблицы. * ``where`` - условие выбора. Необязательный параметр. * ``invalidate_query`` - запрос для проверки статуса словаря. Необязательный параметр. Читайте подробнее в разделе :ref:`dicts-external_dicts_dict_lifetime`. MySQL можно подключить на локальном хосте через сокеты, для этого необходимо задать ``host`` и ``socket``. Пример настройки: .. code-block:: xml localhost /path/to/socket/file.sock clickhouse qwerty db_name table_name
id=10 SQL_QUERY
.. _dicts-external_dicts_dict_sources-clickhouse: ClickHouse ---------- Пример настройки: .. code-block:: xml example01-01-1 9000 default default ids
id=10
Поля настройки: * ``host`` - хост ClickHouse. Если host локальный, то запрос выполняется без сетевого взаимодействия. Чтобы повысить отказоустойчивость решения, можно создать таблицу типа :ref:`Distributed ` и прописать её в дальнейших настройках. * ``port`` - порт сервера ClickHouse. * ``user`` - имя пользователя ClickHouse. * ``password`` - пароль пользователя ClickHouse. * ``db`` - имя базы данных. * ``table`` - имя таблицы. * ``where`` - условие выбора. Может отсутствовать. .. _dicts-external_dicts_dict_sources-mongodb: MongoDB ------- Пример настройки: .. code-block:: xml localhost 27017 test dictionary_source Поля настройки: * ``host`` - хост MongoDB. * ``port`` - порт сервера MongoDB. * ``user`` - имя пользователя MongoDB. * ``password`` - пароль пользователя MongoDB. * ``db`` - имя базы данных. * ``collection`` - имя коллекции.