mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-10 01:25:21 +00:00
Links fixed to standard MD syntax and the docs sources are the linked GitHub site.
Russian sources are updated following the english ones.
This commit is contained in:
parent
f7181b4c68
commit
af96036860
@ -7,8 +7,8 @@
|
||||
|
||||
ClickHouse поддерживает также:
|
||||
|
||||
> - [Параметрические агрегатные функции](../parametric_functions.html#aggregate_functions_parametric), которые помимо стоблцов принимаю и другие параметры.
|
||||
> - [Комбинаторы](../combinators.html#aggregate_functions_combinators), которые изменяют поведение агрегатных фунций.
|
||||
> - [Параметрические агрегатные функции](parametric_functions.md#aggregate_functions_parametric), которые помимо стоблцов принимаю и другие параметры.
|
||||
> - [Комбинаторы](combinators.md#aggregate_functions_combinators), которые изменяют поведение агрегатных фунций.
|
||||
|
||||
```eval_rst
|
||||
.. toctree::
|
||||
|
@ -3,16 +3,16 @@
|
||||
Внешние словари
|
||||
===============
|
||||
|
||||
Существует возможность подключать собственные словари из различных источников данных. Источником данных для словаря может быть локальный текстовый/исполняемый файл, HTTP(s) ресурс или другая СУБД. Подробнее смотрите в разделе "[Источники внешних словарей](../external_dicts_dict_sources.html#dicts-external_dicts_dict_sources)".
|
||||
Существует возможность подключать собственные словари из различных источников данных. Источником данных для словаря может быть локальный текстовый/исполняемый файл, HTTP(s) ресурс или другая СУБД. Подробнее смотрите в разделе "[Источники внешних словарей](external_dicts_dict_sources.md#dicts-external_dicts_dict_sources)".
|
||||
|
||||
ClickHouse:
|
||||
|
||||
> - Полностью или частично хранит словари в оперативной памяти.
|
||||
> - Периодически обновляет их и динамически подгружает отсутствующие значения. Т.е. словари можно подгружать динамически.
|
||||
|
||||
Конфигурация внешних словарей находится в одном или нескольких файлах. Путь к конфигурации указывается в параметре [dictionaries_config](../../operations/server_settings/settings.html#server_settings-dictionaries_config).
|
||||
Конфигурация внешних словарей находится в одном или нескольких файлах. Путь к конфигурации указывается в параметре [dictionaries_config](../operations/server_settings/settings.md#server_settings-dictionaries_config).
|
||||
|
||||
Словари могут загружаться при старте сервера или при первом использовании, в зависимости от настройки [dictionaries_lazy_load](../../operations/server_settings/settings.html#server_settings-dictionaries_lazy_load).
|
||||
Словари могут загружаться при старте сервера или при первом использовании, в зависимости от настройки [dictionaries_lazy_load](../operations/server_settings/settings.md#server_settings-dictionaries_lazy_load).
|
||||
|
||||
Конфигурационный файл словарей имеет вид:
|
||||
|
||||
@ -32,13 +32,13 @@ ClickHouse:
|
||||
</dictionaries>
|
||||
```
|
||||
|
||||
В одном файле можно [сконфигурировать](../external_dicts_dict.html#dicts-external_dicts_dict) произвольное количество словарей. Формат файла сохраняется даже если словарь один (т.е. `<dictionaries><dictionary> <!--configuration--> </dictionary></dictionaries>`).
|
||||
В одном файле можно [сконфигурировать](external_dicts_dict.md#dicts-external_dicts_dict) произвольное количество словарей. Формат файла сохраняется даже если словарь один (т.е. `<dictionaries><dictionary> <!--configuration--> </dictionary></dictionaries>`).
|
||||
|
||||
Смотрите также "[Функции для работы с внешними словарями](../../functions/ext_dict_functions.html#ext_dict_functions)" .
|
||||
Смотрите также "[Функции для работы с внешними словарями](../functions/ext_dict_functions.md#ext_dict_functions)" .
|
||||
|
||||
<div class="admonition attention">
|
||||
|
||||
Вы можете преобразовывать значения по небольшому словарю, описав его в запросе `SELECT` (см. функцию [transform](../../functions/other_functions.html#other_functions-transform)). Эта функциональность не связана с внешними словарями.
|
||||
Вы можете преобразовывать значения по небольшому словарю, описав его в запросе `SELECT` (см. функцию [transform](../functions/other_functions.md#other_functions-transform)). Эта функциональность не связана с внешними словарями.
|
||||
|
||||
</div>
|
||||
|
||||
|
@ -28,8 +28,8 @@
|
||||
```
|
||||
|
||||
- name - Идентификатор, под которым словарь будет доступен для использования. Используйте символы `[a-zA-Z0-9_\-]`.
|
||||
- [source](../external_dicts_dict_sources.html/#dicts-external_dicts_dict_sources) - Источник словаря.
|
||||
- [layout](../external_dicts_dict_layout.html#dicts-external_dicts_dict_layout) - Размещение словаря в памяти.
|
||||
- [structure](../external_dicts_dict_structure.html#dicts-external_dicts_dict_structure) - Структура словаря. Ключ и атрибуты, которые можно получить по ключу.
|
||||
- [lifetime](../external_dicts_dict_lifetime.html#dicts-external_dicts_dict_lifetime) - Периодичность обновления словарей.
|
||||
- [source](external_dicts_dict_sources.html/#dicts-external_dicts_dict_sources) - Источник словаря.
|
||||
- [layout](external_dicts_dict_layout.md#dicts-external_dicts_dict_layout) - Размещение словаря в памяти.
|
||||
- [structure](external_dicts_dict_structure.md#dicts-external_dicts_dict_structure) - Структура словаря. Ключ и атрибуты, которые можно получить по ключу.
|
||||
- [lifetime](external_dicts_dict_lifetime.md#dicts-external_dicts_dict_lifetime) - Периодичность обновления словарей.
|
||||
|
||||
|
@ -3,11 +3,11 @@
|
||||
Хранение словарей в памяти
|
||||
==========================
|
||||
|
||||
Словари можно размещать в памяти [множеством способов](../external_dicts_dict_layout.html#dicts-external_dicts_dict_layout-manner).
|
||||
Словари можно размещать в памяти [множеством способов](external_dicts_dict_layout.md#dicts-external_dicts_dict_layout-manner).
|
||||
|
||||
Рекомендуем [flat](../external_dicts_dict_layout.html#dicts-external_dicts_dict_layout-flat), [hashed](../external_dicts_dict_layout.html#dicts-external_dicts_dict_layout-hashed) и [complex_key_hashed](../external_dicts_dict_layout.html#dicts-external_dicts_dict_layout-complex_key_hashed). Скорость обработки словарей при этом максимальна.
|
||||
Рекомендуем [flat](external_dicts_dict_layout.md#dicts-external_dicts_dict_layout-flat), [hashed](external_dicts_dict_layout.md#dicts-external_dicts_dict_layout-hashed) и [complex_key_hashed](external_dicts_dict_layout.md#dicts-external_dicts_dict_layout-complex_key_hashed). Скорость обработки словарей при этом максимальна.
|
||||
|
||||
Размещение с кэшированием не рекомендуется использовать из-за потенциально низкой производительности и сложностей в подборе оптимальных параметров. Читайте об этом подробнее в разделе " [cache](../external_dicts_dict_layout.html#dicts-external_dicts_dict_layout-cache)".
|
||||
Размещение с кэшированием не рекомендуется использовать из-за потенциально низкой производительности и сложностей в подборе оптимальных параметров. Читайте об этом подробнее в разделе " [cache](external_dicts_dict_layout.md#dicts-external_dicts_dict_layout-cache)".
|
||||
|
||||
Повысить производительнось словарей можно следующими способами:
|
||||
|
||||
@ -125,7 +125,7 @@ range_hashed
|
||||
+------------------+-----------------------------+------------+----------+
|
||||
```
|
||||
|
||||
Чтобы использовать выборку по диапазонам дат, необходимо в [structure](../external_dicts_dict_structure.html#dicts-external_dicts_dict_structure) определить элементы `range_min`, `range_max`.
|
||||
Чтобы использовать выборку по диапазонам дат, необходимо в [structure](external_dicts_dict_structure.md#dicts-external_dicts_dict_structure) определить элементы `range_min`, `range_max`.
|
||||
|
||||
Пример:
|
||||
|
||||
@ -203,7 +203,7 @@ cache
|
||||
|
||||
Чтобы увеличить производительность кэша, используйте подзапрос с `LIMIT`, а снаружи вызывайте функцию со словарём.
|
||||
|
||||
Поддерживаются [источники](../external_dicts_dict_sources.html#dicts-external_dicts_dict_sources): MySQL, ClickHouse, executable, HTTP.
|
||||
Поддерживаются [источники](external_dicts_dict_sources.md#dicts-external_dicts_dict_sources): MySQL, ClickHouse, executable, HTTP.
|
||||
|
||||
Пример настройки:
|
||||
|
||||
@ -234,4 +234,4 @@ cache
|
||||
complex_key_cache
|
||||
-----------------
|
||||
|
||||
Тип размещения предназначен для использования с составными [ключами](../external_dicts_dict_structure.html#dicts-external_dicts_dict_structure). Аналогичен `cache`.
|
||||
Тип размещения предназначен для использования с составными [ключами](external_dicts_dict_structure.md#dicts-external_dicts_dict_structure). Аналогичен `cache`.
|
||||
|
@ -34,7 +34,7 @@ ClickHouse периодически обновляет словари. Инте
|
||||
</dictionary>
|
||||
```
|
||||
|
||||
При обновлении словарей сервер ClickHouse применяет различную логику в зависимости от типа [источника](../external_dicts_dict_sources.html#dicts-external_dicts_dict_sources):
|
||||
При обновлении словарей сервер ClickHouse применяет различную логику в зависимости от типа [источника](external_dicts_dict_sources.md#dicts-external_dicts_dict_sources):
|
||||
|
||||
> - У текстового файла проверяется время модификации. Если время изменилось по отношению к запомненному ранее, то словарь обновляется.
|
||||
> - Для таблиц типа MyISAM, время модификации проверяется запросом `SHOW TABLE STATUS`.
|
||||
@ -43,7 +43,7 @@ ClickHouse периодически обновляет словари. Инте
|
||||
Для источников MySQL (InnoDB), ODBC можно настроить запрос, который позволит обновлять словари только в случае их фактического изменения, а не каждый раз. Чтобы это сделать необходимо выполнить следующие условия/действия:
|
||||
|
||||
> - В таблице словаря должно быть поле, которое гарантированно изменяется при обновлении данных в источнике.
|
||||
> - В настройках источника указывается запрос, который получает изменяющееся поле. Результат запроса сервер ClickHouse интерпретирует как строку и если эта строка изменилась по отношению к предыдущему состоянию, то словарь обновляется. Запрос следует указывать в поле `<invalidate_query>` настроек [источника](../external_dicts_dict_sources.html#dicts-external_dicts_dict_sources).
|
||||
> - В настройках источника указывается запрос, который получает изменяющееся поле. Результат запроса сервер ClickHouse интерпретирует как строку и если эта строка изменилась по отношению к предыдущему состоянию, то словарь обновляется. Запрос следует указывать в поле `<invalidate_query>` настроек [источника](external_dicts_dict_sources.md#dicts-external_dicts_dict_sources).
|
||||
|
||||
Пример настройки:
|
||||
|
||||
|
@ -54,14 +54,14 @@
|
||||
Поля настройки:
|
||||
|
||||
- `path` - Абсолютный путь к файлу.
|
||||
- `format` - Формат файла. Поддерживаются все форматы, описанные в разделе "[Форматы](../../formats/index.html#formats)".
|
||||
- `format` - Формат файла. Поддерживаются все форматы, описанные в разделе "[Форматы](../formats/index.md#formats)".
|
||||
|
||||
<a name="dicts-external_dicts_dict_sources-executable"></a>
|
||||
|
||||
Исполняемый файл
|
||||
----------------
|
||||
|
||||
Работа с исполняемым файлом зависит от [размещения словаря в памяти](../external_dicts_dict_layout.html#dicts-external_dicts_dict_layout). Если тип размещения словаря `cache` и `complex_key_cache`, то ClickHouse запрашивает необходимые ключи, отправляя запрос в `STDIN` исполняемого файла.
|
||||
Работа с исполняемым файлом зависит от [размещения словаря в памяти](external_dicts_dict_layout.md#dicts-external_dicts_dict_layout). Если тип размещения словаря `cache` и `complex_key_cache`, то ClickHouse запрашивает необходимые ключи, отправляя запрос в `STDIN` исполняемого файла.
|
||||
|
||||
Пример настройки:
|
||||
|
||||
@ -77,14 +77,14 @@
|
||||
Поля настройки:
|
||||
|
||||
- `command` - Абсолютный путь к исполняемому файлу или имя файла (если каталог программы прописан в `PATH`).
|
||||
- `format` - Формат файла. Поддерживаются все форматы, описанные в разделе "[Форматы](../../formats/index.html#formats)".
|
||||
- `format` - Формат файла. Поддерживаются все форматы, описанные в разделе "[Форматы](../formats/index.md#formats)".
|
||||
|
||||
<a name="dicts-external_dicts_dict_sources-http"></a>
|
||||
|
||||
HTTP(s)
|
||||
-------
|
||||
|
||||
Работа с HTTP(s) сервером зависит от [размещения словаря в памяти](../external_dicts_dict_layout.html#dicts-external_dicts_dict_layout). Если тип размещения словаря `cache` и `complex_key_cache`, то ClickHouse запрашивает необходимые ключи, отправляя запрос методом `POST`.
|
||||
Работа с HTTP(s) сервером зависит от [размещения словаря в памяти](external_dicts_dict_layout.md#dicts-external_dicts_dict_layout). Если тип размещения словаря `cache` и `complex_key_cache`, то ClickHouse запрашивает необходимые ключи, отправляя запрос методом `POST`.
|
||||
|
||||
Пример настройки:
|
||||
|
||||
@ -97,12 +97,12 @@ HTTP(s)
|
||||
</source>
|
||||
```
|
||||
|
||||
Чтобы ClickHouse смог обратиться к HTTPS-ресурсу, необходимо [настроить openSSL](../../operations/server_settings/settings.html#server_settings-openSSL) в конфигурации сервера.
|
||||
Чтобы ClickHouse смог обратиться к HTTPS-ресурсу, необходимо [настроить openSSL](../operations/server_settings/settings.md#server_settings-openSSL) в конфигурации сервера.
|
||||
|
||||
Поля настройки:
|
||||
|
||||
- `url` - URL источника.
|
||||
- `format` - Формат файла. Поддерживаются все форматы, описанные в разделе "[Форматы](../../formats/index.html#formats)".
|
||||
- `format` - Формат файла. Поддерживаются все форматы, описанные в разделе "[Форматы](../formats/index.md#formats)".
|
||||
|
||||
<a name="dicts-external_dicts_dict_sources-odbc"></a>
|
||||
|
||||
@ -127,7 +127,7 @@ ODBC
|
||||
- `db` - имя базы данных. Не указывать, если имя базы задано в параметрах `<connection_string>`.
|
||||
- `table` - имя таблицы.
|
||||
- `connection_string` - строка соединения.
|
||||
- `invalidate_query` - запрос для проверки статуса словаря. Необязательный параметр. Читайте подробнее в разделе [Обновление словарей](../external_dicts_dict_lifetime.html#dicts-external_dicts_dict_lifetime).
|
||||
- `invalidate_query` - запрос для проверки статуса словаря. Необязательный параметр. Читайте подробнее в разделе [Обновление словарей](external_dicts_dict_lifetime.md#dicts-external_dicts_dict_lifetime).
|
||||
|
||||
Пример подключения PostgreSQL
|
||||
-----------------------------
|
||||
@ -317,7 +317,7 @@ ODBC
|
||||
- `db` - имя базы данных.
|
||||
- `table` - имя таблицы.
|
||||
- `where` - условие выбора. Необязательный параметр.
|
||||
- `invalidate_query` - запрос для проверки статуса словаря. Необязательный параметр. Читайте подробнее в разделе [Обновление словарей](../external_dicts_dict_lifetime.html#dicts-external_dicts_dict_lifetime).
|
||||
- `invalidate_query` - запрос для проверки статуса словаря. Необязательный параметр. Читайте подробнее в разделе [Обновление словарей](external_dicts_dict_lifetime.md#dicts-external_dicts_dict_lifetime).
|
||||
|
||||
MySQL можно подключить на локальном хосте через сокеты, для этого необходимо задать `host` и `socket`.
|
||||
|
||||
@ -360,7 +360,7 @@ MySQL можно подключить на локальном хосте чер
|
||||
|
||||
Поля настройки:
|
||||
|
||||
- `host` - хост ClickHouse. Если host локальный, то запрос выполняется без сетевого взаимодействия. Чтобы повысить отказоустойчивость решения, можно создать таблицу типа [Distributed](../../table_engines/distributed.html#table_engines-distributed) и прописать её в дальнейших настройках.
|
||||
- `host` - хост ClickHouse. Если host локальный, то запрос выполняется без сетевого взаимодействия. Чтобы повысить отказоустойчивость решения, можно создать таблицу типа [Distributed](../table_engines/distributed.md#table_engines-distributed) и прописать её в дальнейших настройках.
|
||||
- `port` - порт сервера ClickHouse.
|
||||
- `user` - имя пользователя ClickHouse.
|
||||
- `password` - пароль пользователя ClickHouse.
|
||||
|
@ -26,8 +26,8 @@
|
||||
|
||||
В структуре описываются столбцы:
|
||||
|
||||
- `<id>` -[ключевой столбец](../external_dicts_dict_structure.html#dicts-external_dicts_dict_structure-key).
|
||||
- `<attribute>` -[столбец данных](../external_dicts_dict_structure.html#dicts-external_dicts_dict_structure-attributes). Столбцов может быть много.
|
||||
- `<id>` -[ключевой столбец](external_dicts_dict_structure.md#dicts-external_dicts_dict_structure-key).
|
||||
- `<attribute>` -[столбец данных](external_dicts_dict_structure.md#dicts-external_dicts_dict_structure-attributes). Столбцов может быть много.
|
||||
|
||||
<a name="dicts-external_dicts_dict_structure-key"></a>
|
||||
|
||||
@ -65,7 +65,7 @@ ClickHouse поддерживает следующие виды ключей:
|
||||
|
||||
### Составной ключ
|
||||
|
||||
Ключем может быть кортеж (`tuple`) из полей произвольных типов. [layout](../external_dicts_dict_layout.html#dicts-external_dicts_dict_layout) в этом случае должен быть `complex_key_hashed` или `complex_key_cache`.
|
||||
Ключем может быть кортеж (`tuple`) из полей произвольных типов. [layout](external_dicts_dict_layout.md#dicts-external_dicts_dict_layout) в этом случае должен быть `complex_key_hashed` или `complex_key_cache`.
|
||||
|
||||
<div class="admonition tip">
|
||||
|
||||
@ -73,7 +73,7 @@ Cоставной ключ может состоять и из одного эл
|
||||
|
||||
</div>
|
||||
|
||||
Структура ключа задаётся в элементе `<key>`. Поля ключа задаются в том же формате, что и [атрибуты](../external_dicts_dict_structure.html#dicts-external_dicts_dict_structure-attributes) словаря. Пример:
|
||||
Структура ключа задаётся в элементе `<key>`. Поля ключа задаются в том же формате, что и [атрибуты](external_dicts_dict_structure.md#dicts-external_dicts_dict_structure-attributes) словаря. Пример:
|
||||
|
||||
```xml
|
||||
<structure>
|
||||
|
@ -1,3 +1,5 @@
|
||||
<a name="format_capnproto"></a>
|
||||
|
||||
CapnProto
|
||||
=========
|
||||
|
||||
@ -6,10 +8,11 @@ Cap'n Proto - формат бинарных сообщений, похож на
|
||||
Сообщения Cap'n Proto строго типизированы и не самоописывающиеся, т.е. нуждаются во внешнем описании схемы. Схема применяется "на лету" и кешируется для каждого запроса.
|
||||
|
||||
```sql
|
||||
SELECT SearchPhrase, count() AS c FROM test.hits GROUP BY SearchPhrase FORMAT CapnProto SETTINGS schema = 'schema.capnp:Message'
|
||||
SELECT SearchPhrase, count() AS c FROM test.hits
|
||||
GROUP BY SearchPhrase FORMAT CapnProto SETTINGS schema = 'schema:Message'
|
||||
```
|
||||
|
||||
When the schema file looks like:
|
||||
Где `schema.capnp` выглядит следующим образом:
|
||||
|
||||
```
|
||||
struct Message {
|
||||
@ -18,4 +21,7 @@ struct Message {
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Файлы со схемами находятся в файле, который находится в каталоге указанном в параметре [format_schema_path](../operations/server_settings/settings.md#server_settings-format_schema_path) конфигурации сервера.
|
||||
|
||||
Десериализация эффективна и обычно не повышает нагрузку на систему.
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
### hex
|
||||
|
||||
Принимает строку, целое беззнаковое число, дату или дату-с-временем. Возвращает строку, содержащую шестнадцатеричное представление аргумента. Используются заглавные буквы A-F. Не используются префиксы 0x и суффиксы h. Для строк просто все байты кодируются в виде двух шестнадцатеричных цифр. Числа выводятся в big endian ("человеческом") формате. Для чисел вырезаются старшие нули, но только по целым байтам. Например, hex(1) = '01'. Даты кодируются как число дней с начала unix-эпохи. Даты-с-временем кодируются как число секунд с начала unix-эпохи.
|
||||
Принимает аргументы типов: `String`, `unsigned integer`, `Date`, or `DateTime`. Возвращает строку, содержащую шестнадцатеричное представление аргумента. Используются заглавные буквы `A-F`. Не используются префиксы `0x` и суффиксы `h`. Для строк просто все байты кодируются в виде двух шестнадцатеричных цифр. Числа выводятся в big endian ("человеческом") формате. Для чисел вырезаются старшие нули, но только по целым байтам. Например, `hex(1) = '01'`. `Date` кодируется как число дней с начала unix-эпохи. `DateTime` кодируются как число секунд с начала unix-эпохи.
|
||||
|
||||
### unhex(str)
|
||||
Принимает строку, содержащую произвольное количество шестнадцатеричных цифр, и возвращает строку, содержащую соответствующие байты. Поддерживаются как строчные, так и заглавные буквы A-F. Число шестнадцатеричных цифр не обязано быть чётным. Если оно нечётное - последняя цифра интерпретируется как младшая половинка байта 00-0F. Если строка-аргумент содержит что-либо кроме шестнадцатеричных цифр, то будет возвращён какой-либо implementation-defined результат (не кидается исключение).
|
||||
|
@ -3,7 +3,7 @@
|
||||
Функции для работы с внешними словарями
|
||||
=======================================
|
||||
|
||||
Информация о подключении и настройке внешних словарей смотрите в разделе "[Внешние словари](../../dicts/external_dicts.html#dicts-external_dicts)".
|
||||
Информация о подключении и настройке внешних словарей смотрите в разделе "[Внешние словари](../dicts/external_dicts.md#dicts-external_dicts)".
|
||||
|
||||
### dictGetUInt8, dictGetUInt16, dictGetUInt32, dictGetUInt64
|
||||
|
||||
|
@ -58,4 +58,4 @@ ClickHouse поддерживает таблицы с первичным клю
|
||||
## Репликация данных, поддержка целостности данных на репликах
|
||||
|
||||
Используется асинхронная multimaster репликация. После записи на любую доступную реплику, данные распространяются на все остальные реплики. Система поддерживает полную идентичность данных на разных репликах. Восстановление после сбоя осуществляется автоматически, а в сложных случаях - "по кнопке".
|
||||
Подробнее смотрите раздел [Репликация данных](../../table_engines/replication.html#table_engines-replication).
|
||||
Подробнее смотрите раздел [Репликация данных](../table_engines/replication.md#table_engines-replication).
|
||||
|
@ -62,7 +62,7 @@
|
||||
|
||||
Здесь видно объявление двух пользователей - `default` и `web`. Пользователя `web` мы добавили самостоятельно.
|
||||
|
||||
Пользователь `default` выбирается в случаях, когда имя пользователя не передаётся. Также пользователь `default` может использоваться при распределённой обработке запроса - если в конфигурации кластера для сервера не указаны `user` и `password`. (см. раздел о движке [Distributed](../../table_engines/distributed.html)).
|
||||
Пользователь `default` выбирается в случаях, когда имя пользователя не передаётся. Также пользователь `default` может использоваться при распределённой обработке запроса - если в конфигурации кластера для сервера не указаны `user` и `password`. (см. раздел о движке [Distributed](../table_engines/distributed.html)).
|
||||
|
||||
Пользователь, который используется для обмена информацией между серверами, объединенными в кластер, не должен иметь существенных ограничений или квот - иначе распределённые запросы сломаются.
|
||||
|
||||
@ -98,4 +98,4 @@
|
||||
|
||||
Пользователь может получить список всех БД и таблиц в них с помощью запросов `SHOW` или системных таблиц, даже если у него нет доступа к отдельным ДБ.
|
||||
|
||||
Доступ к БД не связан с настройкой [readonly](../settings/query_complexity.html#query_complexity_readonly). Невозможно дать полный доступ к одной БД и `readonly` к другой.
|
||||
Доступ к БД не связан с настройкой [readonly](settings/query_complexity.md#query_complexity_readonly). Невозможно дать полный доступ к одной БД и `readonly` к другой.
|
||||
|
@ -15,7 +15,7 @@
|
||||
|
||||
Если указано `remove` - удалить элемент.
|
||||
|
||||
Также в конфиге могут быть указаны "подстановки". Если у элемента присутствует атрибут `incl`, то в качестве значения будет использована соответствующая подстановка из файла. По умолчанию, путь к файлу с подстановками - `/etc/metrika.xml`. Он может быть изменён в конфигурации сервера в элементе [include_from](../server_settings/settings.html#server_settings-include_from). Значения подстановок указываются в элементах `/yandex/имя_подстановки` этого файла. Если подстановка, заданная в `incl` отсутствует, то в лог попадает соответствующая запись. Чтобы ClickHouse не писал в лог об отсутствии подстановки, необходимо указать атрибут `optional="true"` (например, настройка [macros](../server_settings/settings.html#server_settings-macros)).
|
||||
Также в конфиге могут быть указаны "подстановки". Если у элемента присутствует атрибут `incl`, то в качестве значения будет использована соответствующая подстановка из файла. По умолчанию, путь к файлу с подстановками - `/etc/metrika.xml`. Он может быть изменён в конфигурации сервера в элементе [include_from](server_settings/settings.md#server_settings-include_from). Значения подстановок указываются в элементах `/yandex/имя_подстановки` этого файла. Если подстановка, заданная в `incl` отсутствует, то в лог попадает соответствующая запись. Чтобы ClickHouse не писал в лог об отсутствии подстановки, необходимо указать атрибут `optional="true"` (например, настройка [macros](server_settings/settings.md#server_settings-macros)).
|
||||
|
||||
Подстановки могут также выполняться из ZooKeeper. Для этого укажите у элемента атрибут `from_zk="/path/to/node"`. Значение элемента заменится на содержимое узла `/path/to/node` в ZooKeeper. В ZooKeeper-узел также можно положить целое XML-поддерево, оно будет целиком вставлено в исходный элемент.
|
||||
|
||||
|
@ -7,9 +7,9 @@
|
||||
|
||||
Рассмотренные настройки хранятся в файле `config.xml` сервера ClickHouse.
|
||||
|
||||
Прочие настройки описаны в разделе "[Настройки](../../settings/index.html#settings)".
|
||||
Прочие настройки описаны в разделе "[Настройки](../settings/index.md#settings)".
|
||||
|
||||
Перед изучением настроек ознакомьтесь с разделом [Конфигурационные файлы](../../configuration_files.html#configuration_files), обратите внимание на использование подстановок (атрибуты `incl` и `optional`).
|
||||
Перед изучением настроек ознакомьтесь с разделом [Конфигурационные файлы](../configuration_files.md#configuration_files), обратите внимание на использование подстановок (атрибуты `incl` и `optional`).
|
||||
|
||||
```eval_rst
|
||||
.. toctree::
|
||||
|
@ -68,7 +68,7 @@ default_database
|
||||
|
||||
База данных по умолчанию.
|
||||
|
||||
Перечень баз данных можно получить запросом [SHOW DATABASES](../../query_language/queries.html#query_language_queries_show_databases).
|
||||
Перечень баз данных можно получить запросом [SHOW DATABASES](../query_language/queries.md#query_language_queries_show_databases).
|
||||
|
||||
**Пример**
|
||||
|
||||
@ -103,7 +103,7 @@ dictionaries_config
|
||||
- Указывается абсолютным или относительно конфигурационного файла сервера.
|
||||
- Может содержать wildcard-ы \* и ?.
|
||||
|
||||
Смотрите также "[Внешние словари](../../../dicts/external_dicts.html#dicts-external_dicts)".
|
||||
Смотрите также "[Внешние словари](../../dicts/external_dicts.md#dicts-external_dicts)".
|
||||
|
||||
**Пример**
|
||||
|
||||
@ -130,6 +130,21 @@ dictionaries_lazy_load
|
||||
<dictionaries_lazy_load>true</dictionaries_lazy_load>
|
||||
```
|
||||
|
||||
<a name="server_settings-format_schema_path"></a>
|
||||
|
||||
format_schema_path
|
||||
==================
|
||||
|
||||
Путь к каталогу со схемами для входных данных. Например со схемами для формата [CapnProto](../../formats/capnproto.md#format_capnproto).
|
||||
|
||||
**Пример**
|
||||
|
||||
```xml
|
||||
<!-- Directory containing schema files for various input formats. -->
|
||||
<format_schema_path>format_schemas/</format_schema_path>
|
||||
```
|
||||
|
||||
|
||||
<a name="server_settings-graphite"></a>
|
||||
|
||||
graphite
|
||||
@ -172,7 +187,7 @@ graphite_rollup
|
||||
|
||||
Настройка прореживания данных для Graphite.
|
||||
|
||||
Подробнее читайте в разделе [GraphiteMergeTree](../../../table_engines/graphitemergetree.html#table_engines-graphitemergetree).
|
||||
Подробнее читайте в разделе [GraphiteMergeTree](../../table_engines/graphitemergetree.md#table_engines-graphitemergetree).
|
||||
|
||||
**Пример**
|
||||
|
||||
@ -237,7 +252,7 @@ include_from
|
||||
|
||||
Путь к файлу с подстановками.
|
||||
|
||||
Подробности смотрите в разделе "[Конфигурационный файлы](../../configuration_files.html#configuration_files)".
|
||||
Подробности смотрите в разделе "[Конфигурационный файлы](../configuration_files.md#configuration_files)".
|
||||
|
||||
**Пример**
|
||||
|
||||
@ -338,7 +353,7 @@ macros
|
||||
|
||||
Можно не указывать, если реплицируемых таблицы не используются.
|
||||
|
||||
Подробнее смотрите в разделе "[Создание реплицируемых таблиц](../../../table_engines/replication.html#table_engines-replication-creation_of_rep_tables)".
|
||||
Подробнее смотрите в разделе "[Создание реплицируемых таблиц](../../table_engines/replication.md#table_engines-replication-creation_of_rep_tables)".
|
||||
|
||||
**Пример**
|
||||
|
||||
@ -351,7 +366,7 @@ macros
|
||||
mark_cache_size
|
||||
=================
|
||||
|
||||
Приблизительный размер (в байтах) кеша "засечек", используемых движками таблиц семейства [MergeTree](../../../table_engines/mergetree.html#table_engines-mergetree).
|
||||
Приблизительный размер (в байтах) кеша "засечек", используемых движками таблиц семейства [MergeTree](../../table_engines/mergetree.md#table_engines-mergetree).
|
||||
|
||||
Кеш общий для сервера, память выделяется по мере необходимости. Кеш не может быть меньше, чем 5368709120.
|
||||
|
||||
@ -411,7 +426,7 @@ max_table_size_to_drop
|
||||
|
||||
Ограничение на удаление таблиц.
|
||||
|
||||
Если размер таблицы семейства [MergeTree](../../../table_engines/mergetree.html#table_engines-mergetree) превышает `max_table_size_to_drop` (в байтах), то ее нельзя удалить запросом DROP.
|
||||
Если размер таблицы семейства [MergeTree](../../table_engines/mergetree.md#table_engines-mergetree) превышает `max_table_size_to_drop` (в байтах), то ее нельзя удалить запросом DROP.
|
||||
|
||||
Если таблицу все же необходимо удалить, не перезапуская при этом сервер ClickHouse, то необходимо создать файл `<clickhouse-path>/flags/force_drop_table` и выполнить запрос DROP.
|
||||
|
||||
@ -430,7 +445,7 @@ max_table_size_to_drop
|
||||
merge_tree
|
||||
===========
|
||||
|
||||
Тонкая настройка таблиц семейства [MergeTree](../../../table_engines/mergetree.html#table_engines-mergetree).
|
||||
Тонкая настройка таблиц семейства [MergeTree](../../table_engines/mergetree.md#table_engines-mergetree).
|
||||
|
||||
Подробнее смотрите в заголовочном файле MergeTreeSettings.h.
|
||||
|
||||
@ -509,7 +524,7 @@ openSSL
|
||||
part_log
|
||||
=========
|
||||
|
||||
Логгирование событий, связанных с данными типа [MergeTree](../../../table_engines/mergetree.html#table_engines-mergetree). Например, события добавления или мержа данных. Лог можно использовать для симуляции алгоритмов слияния, чтобы сравнивать их характеристики. Также, можно визуализировать процесс слияния.
|
||||
Логгирование событий, связанных с данными типа [MergeTree](../../table_engines/mergetree.md#table_engines-mergetree). Например, события добавления или мержа данных. Лог можно использовать для симуляции алгоритмов слияния, чтобы сравнивать их характеристики. Также, можно визуализировать процесс слияния.
|
||||
|
||||
Запросы логгируются не в отдельный файл, а в таблицу ClickHouse.
|
||||
|
||||
@ -595,7 +610,7 @@ remote_servers
|
||||
|
||||
Конфигурация кластеров, которые использует движок таблиц Distributed.
|
||||
|
||||
Пример настройки смотрите в разделе "[Движки таблиц/Distributed](../../../table_engines/distributed.html#table_engines-distributed)".
|
||||
Пример настройки смотрите в разделе "[Движки таблиц/Distributed](../../table_engines/distributed.md#table_engines-distributed)".
|
||||
|
||||
**Пример**
|
||||
|
||||
@ -603,7 +618,7 @@ remote_servers
|
||||
<remote_servers incl="clickhouse_remote_servers" />
|
||||
```
|
||||
|
||||
Значение атрибута `incl` смотрите в разделе "[Конфигурационные файлы](../../configuration_files.html#configuration_files)".
|
||||
Значение атрибута `incl` смотрите в разделе "[Конфигурационные файлы](../configuration_files.md#configuration_files)".
|
||||
|
||||
<a name="server_settings-resharding"></a>
|
||||
|
||||
@ -612,7 +627,7 @@ resharding
|
||||
|
||||
Путь в ZooKeeper к очереди задач.
|
||||
|
||||
Подробнее читайте в разделе "[Перешардирование](../../../table_engines/resharding.html#table_engines-resharding)".
|
||||
Подробнее читайте в разделе "[Перешардирование](../../table_engines/resharding.md#table_engines-resharding)".
|
||||
|
||||
**Пример**
|
||||
|
||||
@ -676,9 +691,9 @@ tmp_path
|
||||
uncompressed_cache_size
|
||||
=========================
|
||||
|
||||
Размер кеша (в байтах) для несжатых данных, используемых движками таблиц семейства [MergeTree](../../../table_engines/mergetree.html#table_engines-mergetree).
|
||||
Размер кеша (в байтах) для несжатых данных, используемых движками таблиц семейства [MergeTree](../../table_engines/mergetree.md#table_engines-mergetree).
|
||||
|
||||
Кеш единый для сервера. Память выделяется по-требованию. Кеш используется в том случае, если включена опция [use_uncompressed_cache](../../settings/settings.html#settings-use_uncompressed_cache).
|
||||
Кеш единый для сервера. Память выделяется по-требованию. Кеш используется в том случае, если включена опция [use_uncompressed_cache](../settings/settings.md#settings-use_uncompressed_cache).
|
||||
|
||||
Несжатый кеш выгодно использовать для очень коротких запросов в отдельных случаях.
|
||||
|
||||
@ -717,7 +732,7 @@ ClickHouse использует ZooKeeper для хранения метадан
|
||||
|
||||
Параметр можно не указывать, если реплицированные таблицы не используются.
|
||||
|
||||
Подробно читайте в разделе "[Репликация](../../../table_engines/replication.html#table_engines-replication)".
|
||||
Подробно читайте в разделе "[Репликация](../../table_engines/replication.md#table_engines-replication)".
|
||||
|
||||
**Пример**
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
distributed_product_mode
|
||||
==========================
|
||||
|
||||
Изменяет поведение [распределенных подзапросов](../../../query_language/queries.html#queries-distributed-subrequests), т.е. в тех случаях, когда запрос содержит произведение распределённых таблиц.
|
||||
Изменяет поведение [распределенных подзапросов](../../query_language/queries.md#queries-distributed-subrequests), т.е. в тех случаях, когда запрос содержит произведение распределённых таблиц.
|
||||
|
||||
ClickHouse применяет настройку в том случае, когда в подзапросах на любом уровне встретилась распределенная таблица, которая существует на локальном сервере и имеет больше одного шарда.
|
||||
|
||||
@ -11,7 +11,7 @@ ClickHouse применяет настройку в том случае, ког
|
||||
|
||||
- Только подзапросы для IN, JOIN.
|
||||
- Только если в секции FROM используется распределённая таблица.
|
||||
- Не используется в случае табличной функции [remote](../../../table_functions/remote.html#table_functions-remote).
|
||||
- Не используется в случае табличной функции [remote](../../table_functions/remote.md#table_functions-remote).
|
||||
|
||||
Возможные значения:
|
||||
|
||||
@ -20,7 +20,7 @@ ClickHouse применяет настройку в том случае, ког
|
||||
fallback_to_stale_replicas_for_distributed_queries
|
||||
========================================================
|
||||
|
||||
Форсирует запрос в устаревшую реплику в случае, если актуальные данные недоступны. Смотрите "[Репликация](../../../table_engines/replication.html#table_engines-replication)".
|
||||
Форсирует запрос в устаревшую реплику в случае, если актуальные данные недоступны. Смотрите "[Репликация](../../table_engines/replication.md#table_engines-replication)".
|
||||
|
||||
Из устаревших реплик таблицы ClickHouse выбирает наиболее актуальную.
|
||||
|
||||
@ -37,7 +37,7 @@ force_index_by_date
|
||||
|
||||
Работает с таблицами семейства MergeTree.
|
||||
|
||||
При `force_index_by_date=1` ClickHouse проверяет, есть ли в запросе условие на ключ даты, которое может использоваться для отсечения диапазонов данных. Если подходящего условия нет - кидается исключение. При этом не проверяется, действительно ли условие уменьшает объём данных для чтения. Например, условие `Date != '2000-01-01'` подходит даже в том случае, когда соответствует всем данным в таблице (т.е. для выполнения запроса требуется full scan). Подробнее про диапазоны данных в таблицах MergeTree читайте в разделе "[MergeTree](../../../table_engines/mergetree.html#table_engines-mergetree)".
|
||||
При `force_index_by_date=1` ClickHouse проверяет, есть ли в запросе условие на ключ даты, которое может использоваться для отсечения диапазонов данных. Если подходящего условия нет - кидается исключение. При этом не проверяется, действительно ли условие уменьшает объём данных для чтения. Например, условие `Date != '2000-01-01'` подходит даже в том случае, когда соответствует всем данным в таблице (т.е. для выполнения запроса требуется full scan). Подробнее про диапазоны данных в таблицах MergeTree читайте в разделе "[MergeTree](../../table_engines/mergetree.md#table_engines-mergetree)".
|
||||
|
||||
<a name="settings-settings-force_primary_key"></a>
|
||||
|
||||
@ -48,7 +48,7 @@ force_primary_key
|
||||
|
||||
Работает с таблицами семейства MergeTree.
|
||||
|
||||
При `force_primary_key=1` ClickHouse проверяет, есть ли в запросе условие на первичный ключ, которое может использоваться для отсечения диапазонов данных. Если подходящего условия нет - кидается исключение. При этом не проверяется, действительно ли условие уменьшает объём данных для чтения. Подробнее про диапазоны данных в таблицах MergeTree читайте в разделе "[MergeTree](../../../table_engines/mergetree.html#table_engines-mergetree)".
|
||||
При `force_primary_key=1` ClickHouse проверяет, есть ли в запросе условие на первичный ключ, которое может использоваться для отсечения диапазонов данных. Если подходящего условия нет - кидается исключение. При этом не проверяется, действительно ли условие уменьшает объём данных для чтения. Подробнее про диапазоны данных в таблицах MergeTree читайте в разделе "[MergeTree](../../table_engines/mergetree.md#table_engines-mergetree)".
|
||||
|
||||
<a name="settings_settings_fsync_metadata"></a>
|
||||
|
||||
@ -109,7 +109,7 @@ log_queries
|
||||
|
||||
Установка логгирования запроса.
|
||||
|
||||
Запросы, переданные в ClickHouse с этой установкой, логгируются согласно правилам конфигурационного параметра сервера [query_log](../../server_setings/settings.html#server_settings-query_log).
|
||||
Запросы, переданные в ClickHouse с этой установкой, логгируются согласно правилам конфигурационного параметра сервера [query_log](../server_setings/settings.md#server_settings-query_log).
|
||||
|
||||
**Пример** :
|
||||
|
||||
@ -135,7 +135,7 @@ max_insert_block_size
|
||||
max_replica_delay_for_distributed_queries
|
||||
==============================================
|
||||
|
||||
Отключает отстающие реплики при распределенных запросах. Смотрите "[Репликация](../../../table_engines/replication.html#table_engines-replication)".
|
||||
Отключает отстающие реплики при распределенных запросах. Смотрите "[Репликация](../../table_engines/replication.md#table_engines-replication)".
|
||||
|
||||
Устанавливает время в секундах. Если оставание реплики больше установленного значения, то реплика не используется.
|
||||
|
||||
@ -170,7 +170,7 @@ max_compress_block_size
|
||||
min_compress_block_size
|
||||
==========================
|
||||
|
||||
Для таблиц типа "[MergeTree](../../../table_engines/mergetree.html#table_engines-mergetree)". В целях уменьшения задержек при обработке запросов, блок сжимается при записи следующей засечки, если его размер не меньше min_compress_block_size. По умолчанию - 65 536.
|
||||
Для таблиц типа "[MergeTree](../../table_engines/mergetree.md#table_engines-mergetree)". В целях уменьшения задержек при обработке запросов, блок сжимается при записи следующей засечки, если его размер не меньше min_compress_block_size. По умолчанию - 65 536.
|
||||
|
||||
Реальный размер блока, если несжатых данных меньше max_compress_block_size, будет не меньше этого значения и не меньше объёма данных на одну засечку.
|
||||
|
||||
@ -378,7 +378,7 @@ strict_insert_defaults
|
||||
|
||||
Строгое присвоение значений по умолчанию при добавлении данных.
|
||||
|
||||
Если при выполнении запроса [INSERT](../../../query_language/queries.html#queries-insert) данные для столбца не заданы, то ClickHouse присваивает полям значения по умолчанию. Значения по умолчанию определяются свойством `DEFAULT` для каждого столбца в настройках таблицы. Если для столбца не определен `DEFAULT`, то когда:
|
||||
Если при выполнении запроса [INSERT](../../query_language/queries.md#queries-insert) данные для столбца не заданы, то ClickHouse присваивает полям значения по умолчанию. Значения по умолчанию определяются свойством `DEFAULT` для каждого столбца в настройках таблицы. Если для столбца не определен `DEFAULT`, то когда:
|
||||
|
||||
- `strict_insert_defaults=0` - полям столбца присваиваются нули и пустые строки.
|
||||
- `strict_insert_defaults=1` - ClickHouse генерирует исключение и обязывает пользователя передать данные в столбец.
|
||||
|
@ -567,9 +567,9 @@ INSERT INTO [db.]table [(c1, c2, c3)] VALUES (v11, v12, v13), (v21, v22, v23), .
|
||||
- Значения, вычисляемые из `DEFAULT` выражений, указанных в определении таблицы.
|
||||
- Нули и пустые строки, если `DEFAULT` не определены.
|
||||
|
||||
Если [strict_insert_defaults=1](../../operations/settings/settings.html#settings-strict_insert_defaults), то столбцы, для которых не определены `DEFAULT`, необходимо перечислить в запросе.
|
||||
Если [strict_insert_defaults=1](../operations/settings/settings.md#settings-strict_insert_defaults), то столбцы, для которых не определены `DEFAULT`, необходимо перечислить в запросе.
|
||||
|
||||
В INSERT можно передавать данные любого [формата](../../formats/index.html#formats), который поддерживает ClickHouse. Для этого формат необходимо указать в запросе в явном виде:
|
||||
В INSERT можно передавать данные любого [формата](../formats/index.md#formats), который поддерживает ClickHouse. Для этого формат необходимо указать в запросе в явном виде:
|
||||
|
||||
```sql
|
||||
INSERT INTO [db.]table [(c1, c2, c3)] FORMAT format_name data_set
|
||||
@ -591,7 +591,7 @@ INSERT INTO t FORMAT TabSeparated
|
||||
22 Qwerty
|
||||
```
|
||||
|
||||
С помощью консольного клиента или HTTP интерфейса можно вставлять данные отдельно от запроса. Как это сделать, читайте в разделе "[Интерфейсы](../../interfaces/index.html#interfaces)".
|
||||
С помощью консольного клиента или HTTP интерфейса можно вставлять данные отдельно от запроса. Как это сделать, читайте в разделе "[Интерфейсы](../interfaces/index.md#interfaces)".
|
||||
|
||||
Вставка результатов `SELECT`
|
||||
============================
|
||||
@ -1363,7 +1363,7 @@ ORDER BY EventDate ASC
|
||||
|
||||
<div class="admonition attention">
|
||||
|
||||
Помните, что алгоритмы, описанные ниже, могут работать иначе в зависимости от [настройки](../../operations/settings/settings.html#settings-distributed_product_mode) `distributed_product_mode`.
|
||||
Помните, что алгоритмы, описанные ниже, могут работать иначе в зависимости от [настройки](../operations/settings/settings.md#settings-distributed_product_mode) `distributed_product_mode`.
|
||||
|
||||
</div>
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
system.parts
|
||||
============
|
||||
|
||||
Содержит информацию о кусках таблиц семейства [MergeTree](../../table_engines/mergetree.html#table_engines-mergetree).
|
||||
Содержит информацию о кусках таблиц семейства [MergeTree](../table_engines/mergetree.md#table_engines-mergetree).
|
||||
|
||||
Каждая строка описывает один кусок данных.
|
||||
|
||||
Столбцы:
|
||||
|
||||
- partition (String) - Имя партиции. Формат YYYYMM. Что такое партиция можно узнать из описания запроса [ALTER](../../query_language/queries.html#query_language_queries_alter).
|
||||
- partition (String) - Имя партиции. Формат YYYYMM. Что такое партиция можно узнать из описания запроса [ALTER](../query_language/queries.md#query_language_queries_alter).
|
||||
- name (String) - Имя куска.
|
||||
- active (UInt8) - Признак активности. Если кусок активен, то он используется таблице, в противном случает он будет удален. Неактивные куски остаются после слияний.
|
||||
- marks (UInt64) - Количество засечек. Чтобы получить примерное количество строк в куске, умножьте ``marks`` на гранулированность индекса (обычно 8192).
|
||||
|
@ -9,13 +9,13 @@ Graphite хранит в ClickHouse полные данные, а получат
|
||||
|
||||
- Без прореживания.
|
||||
|
||||
Используется движок [MergeTree](../mergetree.html#table_engines-mergetree).
|
||||
Используется движок [MergeTree](mergetree.md#table_engines-mergetree).
|
||||
|
||||
- С прореживанием.
|
||||
|
||||
Используется движок `GraphiteMergeTree`.
|
||||
|
||||
Движок наследует свойства MergeTree. Настройки прореживания данных задаются параметром [graphite_rollup](../../operations/server_settings/settings.html#server_settings-graphite_rollup) в конфигурации сервера .
|
||||
Движок наследует свойства MergeTree. Настройки прореживания данных задаются параметром [graphite_rollup](../operations/server_settings/settings.md#server_settings-graphite_rollup) в конфигурации сервера .
|
||||
|
||||
Использование движка
|
||||
--------------------
|
||||
|
@ -14,34 +14,64 @@ Kafka(broker_list, topic_list, group_name, format[, schema])
|
||||
|
||||
Параметры:
|
||||
- `broker_list` - Перечень брокеров, разделенный запятыми (`localhost:9092`).
|
||||
- `topic_list` - Перечень топиков Kafka(``my_topic``).
|
||||
- `group_name` - Группа потребителя Kafka (``group1``). Отступы для чтения отслеживаются для каждой группы отдельно.
|
||||
- `topic_list` - Перечень необходимых топиков Kafka (`my_topic`).
|
||||
- `group_name` - Группа потребителя Kafka (`group1`). Отступы для чтения отслеживаются для каждой группы отдельно. Если необходимо, чтобы сообщения не повторялись на кластере, используйте везде одно имя группы.
|
||||
- `format` - Формат сообщений. Имеет те же обозначения, что выдает SQL-выражение `FORMAT`, например, `JSONEachRow`.
|
||||
- `schema` - Опциональный параметр, необходимый, если используется формат, требующий определения схемы. Например, [Cap'n Proto](https://capnproto.org/) требует путь к файлу со схемой и название корневого объекта `schema.capnp:Message`.
|
||||
|
||||
Пример:
|
||||
|
||||
```sql
|
||||
CREATE TABLE queue (timestamp UInt64, level String, message String) ENGINE = Kafka('localhost:9092', 'topic', 'group1', 'JSONEachRow');
|
||||
SELECT * FROM queue LIMIT 5
|
||||
CREATE TABLE queue (
|
||||
timestamp UInt64,
|
||||
level String,
|
||||
message String
|
||||
) ENGINE = Kafka('localhost:9092', 'topic', 'group1', 'JSONEachRow');
|
||||
|
||||
SELECT * FROM queue LIMIT 5;
|
||||
```
|
||||
|
||||
Полученные сообщения отслеживаются автоматически, поэтому из одной группы каждое сообщение считывается только один раз. Если необходимо получить данные дважды, то создайте копию таблицы с другим именем группы.
|
||||
|
||||
Группы пластичны и синхронизированы на кластере. Например, если есть 10 топиков и 5 копий таблицы в кластере, то в каждую копию попадет по 2 топика. Если количество копий изменится, то распределение топиков по копиям изменится автоматически. Подробно читайте об этом на [http://kafka.apache.org/intro](http://kafka.apache.org/intro).
|
||||
|
||||
Kafka обычно используется для построения систем работающих в режиме реального времени. Если к движку присоединить материализованные представления (`MATERIALIZED VIEW`), то он будет в фоновом режиме собирать данные и раскладывать их в соответствующие представления. Что позволяет непрерывно получать сообщения от Kafka и преобразовывать их в необходимый формат с помощью `SELECT`.
|
||||
Чтение сообщения с помощью `SELECT` не слишком полезно (разве что для отладки), поскольку каждое сообщения может быть прочитано только один раз. Практичнее создавать потоки реального времени с помощью материализованных преставлений. Для этого:
|
||||
|
||||
1. Создайте потребителя Kafka с помощью движка и рассматривайте его как поток данных.
|
||||
2. Создайте таблицу с необходимой структурой.
|
||||
3. Создайте материализованное представление, которое преобразует данные от движка и помещает их в ранее созданную таблицу.
|
||||
|
||||
Когда к движку присоединяется материализованное представление (`MATERIALIZED VIEW`), оно начинает в фоновом режиме собирать данные. Это позволяет непрерывно получать сообщения от Kafka и преобразовывать их в необходимый формат с помощью `SELECT`.
|
||||
|
||||
Пример:
|
||||
|
||||
```sql
|
||||
CREATE TABLE queue (timestamp UInt64, level String, message String) ENGINE = Kafka('localhost:9092', 'topic', 'group1', 'JSONEachRow');
|
||||
CREATE TABLE queue (
|
||||
timestamp UInt64,
|
||||
level String,
|
||||
message String
|
||||
) ENGINE = Kafka('localhost:9092', 'topic', 'group1', 'JSONEachRow');
|
||||
|
||||
CREATE MATERIALIZED VIEW daily ENGINE = SummingMergeTree(day, (day, level), 8192) AS
|
||||
SELECT toDate(toDateTime(timestamp)) AS day, level, count() as total
|
||||
FROM queue GROUP BY day, level;
|
||||
CREATE TABLE daily (
|
||||
day Date,
|
||||
level String,
|
||||
total UInt64
|
||||
) ENGINE = SummingMergeTree(day, (day, level), 8192);
|
||||
|
||||
CREATE MATERIALIZED VIEW consumer TO daily
|
||||
AS SELECT toDate(toDateTime(timestamp)) AS day, level, count() as total
|
||||
FROM queue GROUP BY day, level;
|
||||
|
||||
SELECT level, sum(total) FROM daily GROUP BY level;
|
||||
```
|
||||
|
||||
Для улучшения производительности полученные сообщения группируются в блоки размера [max_insert_block_size](../../operations/settings/settings.html#settings-settings-max_insert_block_size). Если блок не удалось сформировать за [stream_flush_interval_ms](../../operations/settings/settings.html#settings-settings_stream_flush_interval_ms) миллисекунд, то данные будут сброшены в таблицу независимо от полноты блока.
|
||||
Для улучшения производительности полученные сообщения группируются в блоки размера [max_insert_block_size](../operations/settings/settings.md#settings-settings-max_insert_block_size). Если блок не удалось сформировать за [stream_flush_interval_ms](../operations/settings/settings.md#settings-settings_stream_flush_interval_ms) миллисекунд, то данные будут сброшены в таблицу независимо от полноты блока.
|
||||
|
||||
Чтобы остановить получение данных топика или изменить логику преобразования, отсоедините материализованное представление:
|
||||
|
||||
```
|
||||
DETACH TABLE consumer;
|
||||
ATTACH MATERIALIZED VIEW consumer;
|
||||
```
|
||||
|
||||
Если необходимо изменить целевую таблицу с помощью `ALTER`, то материализованное представление рекомендуется отключить, чтобы избежать несостыковки между целевой таблицей и данными от представления.
|
@ -57,7 +57,7 @@ SELECT count() FROM table WHERE ((EventDate >= toDate('2014-01-01') AND EventDat
|
||||
SELECT count() FROM table WHERE CounterID = 34 OR URL LIKE '%upyachka%'
|
||||
```
|
||||
|
||||
Чтобы проверить сможет ли ClickHouse использовать индекс при выполнении запроса, используйте настройки [force_index_by_date](../../operations/settings/settings.html#settings-settings-force_index_by_date) и [force_primary_key](../../operations/settings/settings.html#settings-settings-force_primary_key).
|
||||
Чтобы проверить сможет ли ClickHouse использовать индекс при выполнении запроса, используйте настройки [force_index_by_date](../operations/settings/settings.md#settings-settings-force_index_by_date) и [force_primary_key](../operations/settings/settings.md#settings-settings-force_primary_key).
|
||||
|
||||
Индекс по дате обеспечивает чтение только кусков, содержащих даты из нужного диапазона. При этом, кусок данных может содержать данные за многие даты (до целого месяца), а в пределах одного куска, данные лежат упорядоченными по первичному ключу, который может не содержать дату в качестве первого столбца. В связи с этим, при использовании запроса с указанием условия только на дату, но не на префикс первичного ключа, будет читаться данных больше, чем за одну дату.
|
||||
|
||||
|
@ -43,7 +43,7 @@
|
||||
|
||||
Если в конфигурационном файле не настроен ZooKeeper, то вы не сможете создать реплицируемые таблицы, а уже имеющиеся реплицируемые таблицы будут доступны в режиме только на чтение.
|
||||
|
||||
При запросах SELECT, ZooKeeper не используется. То есть, репликация никак не влияет на производительность SELECT-ов - запросы работают так же быстро, как и для нереплицируемых таблиц. При запросах к распределенным реплицированным таблицам поведение ClickHouse регулируется настройками [max_replica_delay_for_distributed_queries](../../operations/settings/settings.html#settings_settings_max_replica_delay_for_distributed_queries) и [fallback_to_stale_replicas_for_distributed_queries](../../operations/settings/settings.html#settings-settings-fallback_to_stale_replicas_for_distributed_queries).
|
||||
При запросах SELECT, ZooKeeper не используется. То есть, репликация никак не влияет на производительность SELECT-ов - запросы работают так же быстро, как и для нереплицируемых таблиц. При запросах к распределенным реплицированным таблицам поведение ClickHouse регулируется настройками [max_replica_delay_for_distributed_queries](../operations/settings/settings.md#settings_settings_max_replica_delay_for_distributed_queries) и [fallback_to_stale_replicas_for_distributed_queries](../operations/settings/settings.md#settings-settings-fallback_to_stale_replicas_for_distributed_queries).
|
||||
|
||||
При каждом запросе INSERT (точнее, на каждый вставляемый блок данных; запрос INSERT содержит один блок, или по блоку на каждые max_insert_block_size = 1048576 строк), делается около десятка записей в ZooKeeper в рамках нескольких транзакций. Это приводит к некоторому увеличению задержек при INSERT-е, по сравнению с нереплицируемыми таблицами. Но если придерживаться обычных рекомендаций - вставлять данные пачками не более одного INSERT-а в секунду, то это не составляет проблем. На всём кластере ClickHouse, использующим для координации один кластер ZooKeeper, может быть в совокупности несколько сотен INSERT-ов в секунду. Пропускная способность при вставке данных (количество строчек в секунду) такая же высокая, как для нереплицируемых таблиц.
|
||||
|
||||
|
@ -53,7 +53,7 @@ example01-{01..02}-1
|
||||
|
||||
При наличии нескольких пар фигурных скобок, генерируется прямое произведение соответствующих множеств.
|
||||
|
||||
Адреса или их фрагменты в фигурных скобках можно указать через символ |. В этом случае, соответствующие множества адресов понимаются как реплики - запрос будет отправлен на первую живую реплику. При этом, реплики перебираются в порядке, согласно текущей настройке [load_balancing](../../operations/settings/settings.html#settings-load_balancing).
|
||||
Адреса или их фрагменты в фигурных скобках можно указать через символ |. В этом случае, соответствующие множества адресов понимаются как реплики - запрос будет отправлен на первую живую реплику. При этом, реплики перебираются в порядке, согласно текущей настройке [load_balancing](../operations/settings/settings.md#settings-load_balancing).
|
||||
|
||||
Пример:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user