Multiple formatting and links fixes.

This commit is contained in:
BayoNet 2018-04-28 10:58:16 +03:00
parent 99b1cbb3c4
commit 7558684e33
11 changed files with 41 additions and 34 deletions

View File

@ -14,7 +14,7 @@
**1.** Most of the formatting will be done automatically by `clang-format`.
**2.** Offsets are 4 spaces. Configure your development environment so that a tab adds four spaces.
**2.** Indents are 4 spaces. Configure your development environment so that a tab adds four spaces.
**3.** A left curly bracket must be separated on a new line. (And the right one, as well.)

View File

@ -193,7 +193,7 @@ The dictionary is stored in a cache that has a fixed number of cells. These cell
When searching for a dictionary, the cache is searched first. For each block of data, all keys that are not found in the cache or are outdated are requested from the source using ` SELECT attrs... FROM db.table WHERE id IN (k1, k2, ...)`. The received data is then written to the cache.
For cache dictionaries, the expiration [lifetime](dicts-external_dicts_dict_lifetime.md#dicts-external_dicts_dict_lifetime) of data in the cache can be set. If more time than `lifetime` has passed since loading the data in a cell, the cell's value is not used, and it is re-requested the next time it needs to be used.
For cache dictionaries, the expiration [lifetime](external_dicts_dict_lifetime.md#dicts-external_dicts_dict_lifetime) of data in the cache can be set. If more time than `lifetime` has passed since loading the data in a cell, the cell's value is not used, and it is re-requested the next time it needs to be used.
This is the least effective of all the ways to store dictionaries. The speed of the cache depends strongly on correct settings and the usage scenario. A cache type dictionary performs well only when the hit rates are high enough (recommended 99% and higher). You can view the average hit rate in the `system.dictionaries` table.

View File

@ -4,8 +4,5 @@ Contains information about normal and aggregate functions.
Columns:
```text
name String Function name.
is_aggregate UInt8 Whether it is an aggregate function.
```
- `name` (`String`) Function name.
- `is_aggregate` (`UInt8`) Whether it is an aggregate function.

View File

@ -213,7 +213,7 @@ pages:
- 'Dictionaries':
- 'Introduction': 'dicts/index.md'
- 'External dictionaries':
- 'External dictionaries': 'dicts/external_dicts.md'
- 'General desription': 'dicts/external_dicts.md'
- 'Configuring an external dictionary': 'dicts/external_dicts_dict.md'
- 'Storing dictionaries in memory': 'dicts/external_dicts_dict_layout.md'
- 'Dictionary updates': 'dicts/external_dicts_dict_lifetime.md'

View File

@ -213,7 +213,7 @@ pages:
- 'Словари':
- 'Введение': 'dicts/index.md'
- 'Внешние словари':
- 'Внешние словари': 'dicts/external_dicts.md'
- 'Общее описание': 'dicts/external_dicts.md'
- 'Настройка внешнего словаря': 'dicts/external_dicts_dict.md'
- 'Хранение словарей в памяти': 'dicts/external_dicts_dict_layout.md'
- 'Обновление словарей': 'dicts/external_dicts_dict_lifetime.md'

View File

@ -6,8 +6,8 @@
ClickHouse:
> - Полностью или частично хранит словари в оперативной памяти.
> - Периодически обновляет их и динамически подгружает отсутствующие значения. Т.е. словари можно подгружать динамически.
- Полностью или частично хранит словари в оперативной памяти.
- Периодически обновляет их и динамически подгружает отсутствующие значения. Т.е. словари можно подгружать динамически.
Конфигурация внешних словарей находится в одном или нескольких файлах. Путь к конфигурации указывается в параметре [dictionaries_config](../operations/server_settings/settings.md#server_settings-dictionaries_config).
@ -37,10 +37,14 @@ ClickHouse:
В одном файле можно [сконфигурировать](external_dicts_dict.md#dicts-external_dicts_dict) произвольное количество словарей. Формат файла сохраняется даже если словарь один (т.е. `<yandex><dictionary> <!--configuration--> </dictionary></yandex>`).
Смотрите также "[Функции для работы с внешними словарями](../functions/ext_dict_functions.md#ext_dict_functions)" .
>Вы можете преобразовывать значения по небольшому словарю, описав его в запросе `SELECT` (см. функцию [transform](../functions/other_functions.md#other_functions-transform)). Эта функциональность не связана с внешними словарями.
<div class="admonition attention">
Вы можете преобразовывать значения по небольшому словарю, описав его в запросе `SELECT` (см. функцию [transform](../functions/other_functions.md#other_functions-transform)). Эта функциональность не связана с внешними словарями.
Смотрите также:
</div>
- [Настройка внешнего словаря](external_dicts_dict.md#dicts-external_dicts_dict)
- [Хранение словарей в памяти](external_dicts_dict_layout.md#dicts-external_dicts_dict_layout)
- [Обновление словарей](external_dicts_dict_lifetime#dicts-external_dicts_dict_lifetime)
- [Источники внешних словарей](external_dicts_dict_sources.md#dicts-external_dicts_dict_sources)
- [Ключ и поля словаря](external_dicts_dict_structure.md#dicts-external_dicts_dict_structure)
- [Функции для работы с внешними словарями](../functions/ext_dict_functions.md#ext_dict_functions)

View File

@ -191,7 +191,7 @@
При поиске в словаре сначала просматривается кэш. На каждый блок данных, все не найденные в кэше или устаревшие ключи запрашиваются у источника с помощью `SELECT attrs... FROM db.table WHERE id IN (k1, k2, ...)`. Затем, полученные данные записываются в кэш.
Для cache-словарей может быть задано время устаревания [lifetime](dicts-external_dicts_dict_lifetime.md#dicts-external_dicts_dict_lifetime) данных в кэше. Если от загрузки данных в ячейке прошло больше времени, чем `lifetime`, то значение не используется, и будет запрошено заново при следующей необходимости его использовать.
Для cache-словарей может быть задано время устаревания [lifetime](external_dicts_dict_lifetime.md#dicts-external_dicts_dict_lifetime) данных в кэше. Если от загрузки данных в ячейке прошло больше времени, чем `lifetime`, то значение не используется, и будет запрошено заново при следующей необходимости его использовать.
Это наименее эффективный из всех способов размещения словарей. Скорость работы кэша очень сильно зависит от правильности настройки и сценария использования. Словарь типа cache показывает высокую производительность лишь при достаточно больших hit rate-ах (рекомендуется 99% и выше). Посмотреть средний hit rate можно в таблице `system.dictionaries`.

View File

@ -1,6 +1,11 @@
# Словари
`Словарь` - это отображение (ключ `->` атрибуты), которое можно использовать в запросе в виде функций.
Это можно рассматривать как более удобный и максимально эффективный вариант JOIN-а с таблицами-справочниками (dimension tables).
Словарь — это отображение (`ключ -> атрибуты`), которое удобно использовать для различного вида справочников.
Существуют встроенные и подключаемые (внешние) словари.
ClickHouse поддерживает специальные функции для работы со словарями, которые можно использовать в запросах. Проще и эффективнее использовать словари с помощью функций, чем `JOIN` с таблицами-справочниками.
ClickHouse поддерживает:
- [Встроенные словари](internal_dicts.md#internal_dicts) со специфическим [набором функций](../functions/ym_dict_functions.md#ym_dict_functions).
- [Подключаемые (внешние) словари](external_dicts.md#dicts-external_dicts) с [набором функций](../functions/ext_dict_functions.md#ext_dict_functions).

View File

@ -1,3 +1,5 @@
<a name="internal_dicts"></a>
# Встроенные словари
ClickHouse содержит встроенную возможность работы с геобазой.
@ -15,32 +17,31 @@ ClickHouse содержит встроенную возможность рабо
Для включения, раскомментируйте параметры `path_to_regions_hierarchy_file` и `path_to_regions_names_files` в конфигурационном файле сервера.
Геобаза загружается из текстовых файлов.
Если вы работаете в Яндексе, то для их создания вы можете воспользоваться инструкцией:
<https://github.yandex-team.ru/raw/Metrika/ClickHouse_private/master/doc/create_embedded_geobase_dictionaries.txt>
Если вы работаете в Яндексе, то для их создания вы можете воспользоваться [соответствующей инструкцией](https://github.yandex-team.ru/raw/Metrika/ClickHouse_private/master/doc/create_embedded_geobase_dictionaries.txt).
Положите файлы regions_hierarchy\*.txt в директорию path_to_regions_hierarchy_file. Этот конфигурационный параметр должен содержать путь к файлу regions_hierarchy.txt (иерархия регионов по умолчанию), а другие файлы (regions_hierarchy_ua.txt) должны находиться рядом в той же директории.
Положите файлы `regions_hierarchy*.txt` в директорию `path_to_regions_hierarchy_file`. Этот конфигурационный параметр должен содержать путь к файлу `regions_hierarchy.txt` (иерархия регионов по умолчанию), а другие файлы (`regions_hierarchy_ua.txt`) должны находиться рядом в той же директории.
Положите файлы `regions_names_*.txt` в директорию path_to_regions_names_files.
Положите файлы `regions_names_*.txt` в директорию `path_to_regions_names_files`.
Также вы можете создать эти файлы самостоятельно. Формат файлов такой:
`regions_hierarchy*.txt`: TabSeparated (без заголовка), столбцы:
- идентификатор региона (UInt32);
- идентификатор родительского региона (UInt32);
- тип региона (UInt8): 1 - континент, 3 - страна, 4 - федеральный округ, 5 - область, 6 - город; остальные типы не имеют значения;
- население (UInt32) - не обязательный столбец.
- идентификатор региона (`UInt32`);
- идентификатор родительского региона (`UInt32`);
- тип региона (`UInt8`): 1 - континент, 3 - страна, 4 - федеральный округ, 5 - область, 6 - город; остальные типы не имеют значения;
- население (`UInt32`) - не обязательный столбец.
`regions_names_*.txt`: TabSeparated (без заголовка), столбцы:
- идентификатор региона (UInt32);
- имя региона (String) - не может содержать табы или переводы строк, даже экранированные.
- идентификатор региона (`UInt32`);
- имя региона (`String`) - не может содержать табы или переводы строк, даже экранированные.
Для хранения в оперативке используется плоский массив. Поэтому, идентификаторы не должны быть больше миллиона.
Словари могут обновляться без перезапуска сервера. Но набор доступных словарей не обновляется.
Для обновления проверяется время модификации файлов; если файл изменился, то словарь будет обновлён.
Периодичность проверки настраивается конфигурационным параметром builtin_dictionaries_reload_interval.
Периодичность проверки настраивается конфигурационным параметром `builtin_dictionaries_reload_interval`.
Обновление словарей (кроме загрузки при первом использовании) не блокирует запросы - во время обновления запросы используют старую версию словарей. Если при обновлении возникнет ошибка, то ошибка пишется в лог сервера, а запросы продолжат использовать старую версию словарей.
Рекомендуется периодически обновлять словари с геобазой. При обновлении, генерируйте новые файлы, записывая их в отдельное место, а только когда всё готово - переименовывайте в файлы, которые использует сервер.

View File

@ -1,3 +1,5 @@
<a name="ym_dict_functions"></a>
# Функции для работы со словарями Яндекс.Метрики
Чтобы указанные ниже функции работали, в конфиге сервера должны быть указаны пути и адреса для получения всех словарей Яндекс.Метрики. Словари загружаются при первом вызове любой из этих функций. Если справочники не удаётся загрузить - будет выкинуто исключение.

View File

@ -4,7 +4,5 @@
Столбцы:
```text
name String - имя функции
is_aggregate UInt8 - является ли функция агрегатной
```
- `name` (`String`) Имя функции.
- `is_aggregate` (`UInt8`) Признак, является ли функция агрегатной.