提交 da3e2a6d 编写于 作者: B BayoNet 提交者: alexey-milovidov

Added changes from english version of documentation to the russian one.

上级 dc5249d0
# DateTime
<a name="data_type-datetime"></a>
# DateTime
Дата-с-временем. Хранится в 4 байтах, в виде (беззнакового) unix timestamp. Позволяет хранить значения в том же интервале, что и для типа Date. Минимальное значение выводится как 0000-00-00 00:00:00.
Время хранится с точностью до одной секунды (без учёта секунд координации).
......
<a name="data_type-int"></a>
# UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64
Целые числа фиксированной длины, без знака или со знаком.
......@@ -9,8 +11,8 @@
- Int32 - [ -2147483648 : 2147483647 ]
- Int64 - [ -9223372036854775808 : 9223372036854775807 ]
## Диапазоны Uint
- UInt8 - [ 0 : 255 ]
......
# JDBC-драйвер
Для ClickHouse существует официальный JDBC драйвер. Смотрите [здесь](https://github.com/yandex/clickhouse-jdbc) .
- [Официальный драйвер](https://github.com/yandex/clickhouse-jdbc).
- Драйвер от сторонней огранизации [ClickHouse-Native-JDBC](https://github.com/housepower/ClickHouse-Native-JDBC).
......@@ -20,13 +20,18 @@
Основные возможности:
- Создание запросов.
- Построение запросов с подсветкой синтаксиса. Просмотр ответа в табличном или JSON представлении.
- Экспортирование результатов запроса в формате CSV или JSON.
- Список процессов с описанием. Режим записи. Возможность остановки (`KILL`) процесса.
- Граф базы данных. Показывает все таблицы и их столбцы с дополнительной информацией.
- Быстрый просмотр размера стоблбца.
- Конфигурирование сервера.
Планируется разработка следующих возможностей:
- Управление базами.
- Управление пользователями.
- Управление кластером.
- Анализ данных в режиме реального времени.
- Мониторинг кластера.
- Управление кластером.
- Мониторинг реплицированных и Kafka таблиц.
......@@ -5,18 +5,19 @@
Все настройки, описанные ниже, могут быть заданы несколькими способами.
Настройки задаются послойно, т.е. каждый следующий слой перезаписывает предыдущие настройки.
Способы задания настроек, упорядоченные по их приоритету:
Способы задания настроек, упорядоченные по приоритету:
- Настройки в конфигурационных файлах сервера.
- Настройки в конфигурационном файле сервера `users.xml`.
Задаются через профили пользователей.
Устанавливаются в элементе `<profiles>`.
- Для сессии.
- Настройки для сессии.
Из консольного клиента ClickHouse в интерактивном режиме отправьте запрос `SET setting=value`.
Аналогично можно использовать ClickHouse-сессии в HTTP-протоколе, для этого необходимо указывать HTTP-праметр `session_id`.
- Для запроса.
- Настройки для запроса.
- При запуске консольного клиента ClickHouse в неинтерактивном режиме установите параметр запуска `--setting=value`.
- При использовании HTTP API передавайте cgi-параметры (`URL?setting_1=value&setting_2=value...`).
......
......@@ -7,13 +7,14 @@
Системные таблицы расположены в базе данных system.
<a name="system_tables-system.asynchronous_metrics"></a>
# system.asynchronous_metrics
## system.asynchronous_metrics
Содержат метрики, используемые для профилирования и мониторинга.
Обычно отражают количество событий, происходящих в данный момент в системе, или ресурсов, суммарно потребляемых системой.
Пример: количество запросов типа SELECT, исполняемых в текущий момент; количество потребляемой памяти.
`system.asynchronous_metrics` и `system.metrics` отличаются набором и способом вычисления метрик.
# system.clusters
## system.clusters
Содержит информацию о доступных в конфигурационном файле кластерах и серверах, которые в них входят.
Столбцы:
......@@ -28,7 +29,7 @@ host_address String - IP-адрес хоста, полученный из DNS
port UInt16 - порт, на который обращаться для соединения с сервером
user String - имя пользователя, которого использовать для соединения с сервером
```
# system.columns
## system.columns
Содержит информацию о столбцах всех таблиц.
С помощью этой таблицы можно получить информацию аналогично запросу `DESCRIBE TABLE`, но для многих таблиц сразу.
......@@ -41,12 +42,12 @@ type String - тип столбца
default_type String - тип (DEFAULT, MATERIALIZED, ALIAS) выражения для значения по умолчанию, или пустая строка, если оно не описано
default_expression String - выражение для значения по умолчанию, или пустая строка, если оно не описано
```
# system.databases
## system.databases
Таблица содержит один столбец name типа String - имя базы данных.
Для каждой базы данных, о которой знает сервер, будет присутствовать соответствующая запись в таблице.
Эта системная таблица используется для реализации запроса `SHOW DATABASES`.
# system.dictionaries
## system.dictionaries
Содержит информацию о внешних словарях.
......@@ -70,12 +71,12 @@ default_expression String - выражение для значения по ум
Заметим, что количество оперативной памяти, которое использует словарь, не является пропорциональным количеству элементов, хранящихся в словаре. Так, для flat и cached словарей, все ячейки памяти выделяются заранее, независимо от реальной заполненности словаря.
<a name="system_tables-system.events"></a>
# system.events
## system.events
Содержит информацию о количестве произошедших в системе событий, для профилирования и мониторинга.
Пример: количество обработанных запросов типа SELECT.
Столбцы: event String - имя события, value UInt64 - количество.
# system.functions
## system.functions
Содержит информацию об обычных и агрегатных функциях.
......@@ -83,7 +84,7 @@ default_expression String - выражение для значения по ум
- `name` (`String`) – Имя функции.
- `is_aggregate` (`UInt8`) – Признак, является ли функция агрегатной.
# system.merges
## system.merges
Содержит информацию о производящихся прямо сейчас слияниях для таблиц семейства MergeTree.
......@@ -103,22 +104,23 @@ default_expression String - выражение для значения по ум
- `rows_written UInt64` — Количество записанных строк.
<a name="system_tables-system.metrics"></a>
# system.metrics
# system.numbers
## system.metrics
## system.numbers
Таблица содержит один столбец с именем number типа UInt64, содержащим почти все натуральные числа, начиная с нуля.
Эту таблицу можно использовать для тестов, а также если вам нужно сделать перебор.
Чтения из этой таблицы не распараллеливаются.
# system.numbers_mt
## system.numbers_mt
То же самое, что и system.numbers, но чтение распараллеливается. Числа могут возвращаться в произвольном порядке.
Используется для тестов.
# system.one
## system.one
Таблица содержит одну строку с одним столбцом dummy типа UInt8, содержащим значение 0.
Эта таблица используется, если в SELECT запросе не указана секция FROM.
То есть, это - аналог таблицы DUAL, которую можно найти в других СУБД.
# system.parts
## system.parts
Содержит информацию о кусках таблиц семейства [MergeTree](../operations/table_engines/mergetree.md#table_engines-mergetree).
......@@ -126,7 +128,13 @@ default_expression String - выражение для значения по ум
Столбцы:
- partition (String) - Имя партиции. Формат YYYYMM. Что такое партиция можно узнать из описания запроса [ALTER](../query_language/alter.md#query_language_queries_alter).
- partition (String) - Имя партиции. Что такое партиция можно узнать из описания запроса [ALTER](../query_language/alter.md#query_language_queries_alter).
Форматы:
- `YYYYMM` для автоматической схемы партиционирования по месяцам.
- `any_string` при партиционировании вручную.
- name (String) - Имя куска.
- active (UInt8) - Признак активности. Если кусок активен, то он используется таблице, в противном случает он будет удален. Неактивные куски остаются после слияний.
- marks (UInt64) - Количество засечек. Чтобы получить примерное количество строк в куске, умножьте ``marks`` на гранулированность индекса (обычно 8192).
......@@ -146,7 +154,7 @@ default_expression String - выражение для значения по ум
- database (String) - Имя базы данных.
- table (String) - Имя таблицы.
- engine (String) - Имя движка таблицы, без параметров.
# system.processes
## system.processes
Эта системная таблица используется для реализации запроса `SHOW PROCESSLIST`.
Столбцы:
......@@ -170,7 +178,7 @@ query String - текст запроса. В случае INSERT -
query_id String - идентификатор запроса, если был задан.
```
# system.replicas
## system.replicas
Содержит информацию и статус для реплицируемых таблиц, расположенных на локальном сервере.
Эту таблицу можно использовать для мониторинга. Таблица содержит по строчке для каждой Replicated\*-таблицы.
......@@ -294,7 +302,7 @@ WHERE
```
Если этот запрос ничего не возвращает - значит всё хорошо.
# system.settings
## system.settings
Содержит информацию о настройках, используемых в данный момент.
То есть, используемых для выполнения запроса, с помощью которого вы читаете из таблицы system.settings.
......@@ -323,15 +331,17 @@ WHERE changed
│ max_memory_usage │ 10000000000 │ 1 │
└────────────────────────┴─────────────┴─────────┘
```
# system.tables
## system.tables
Таблица содержит столбцы database, name, engine типа String.
Также таблица содержит три виртуальных столбца: metadata_modification_time типа DateTime, create_table_query и engine_full типа String.
Для каждой таблицы, о которой знает сервер, будет присутствовать соответствующая запись в таблице system.tables.
Эта системная таблица используется для реализации запросов SHOW TABLES.
# system.zookeeper
Позволяет читать данные из ZooKeeper кластера, описанного в конфигурации.
## system.zookeeper
Таблицы не существует, если ZooKeeper не сконфигурирован. Позволяет читать данные из ZooKeeper кластера, описанного в конфигурации.
В запросе обязательно в секции WHERE должно присутствовать условие на равенство path - путь в ZooKeeper, для детей которого вы хотите получить данные.
Запрос `SELECT * FROM system.zookeeper WHERE path = '/clickhouse'` выведет данные по всем детям узла `/clickhouse`.
......
......@@ -28,8 +28,8 @@ CREATE TABLE t
Значение типа `AggregateFunction` нельзя вывести в Pretty-форматах. В других форматах, значения такого типа выводятся в виде implementation-specific бинарных данных. То есть, значения типа `AggregateFunction` не предназначены для вывода, сохранения в дамп.
Единственную полезную вещь, которую можно сделать со значениями типа `AggregateFunction` - это объединить состояния и получить результат, по сути - доагрегировать до конца. Для этого используются агрегатные функции с суффиксом Merge.
Пример: `uniqMerge(UserIDState), где UserIDState имеет тип AggregateFunction`.
Единственную полезную вещь, которую можно сделать со значениями типа `AggregateFunction` — это объединить состояния и получить результат, по сути — доагрегировать до конца. Для этого используются агрегатные функции с суффиксом Merge.
Пример: `uniqMerge(UserIDState)`, где `UserIDState` имеет тип `AggregateFunction`.
То есть, агрегатная функция с суффиксом Merge берёт множество состояний, объединяет их, и возвращает готовый результат.
Для примера, эти два запроса возвращают один и тот же результат:
......
......@@ -7,11 +7,21 @@
Формат вызова:
```
MySQL('host:port', 'database', 'table', 'user', 'password');
MySQL('host:port', 'database', 'table', 'user', 'password'[, replace_query, 'on_duplicate_clause']);
```
**Параметры вызова**
- `host:port` — Адрес сервера MySQL.
- `database` — Имя базы данных на сервере MySQL.
- `table` — Имя таблицы.
- `user` — Пользователь MySQL.
- `password` — Пароль пользователя.
- `replace_query` — Флаг, устанавливающий замену запроса `INSERT INTO` на `REPLACE INTO`. Если `replace_query=1`, то запрос заменяется.
- `'on_duplicate_clause'` — Добавляет выражение `ON DUPLICATE KEY UPDATE 'on_duplicate_clause'` в запрос `INSERT`. Например, `impression = VALUES(impression) + impression`. Чтобы указать `'on_duplicate_clause'` необходимо передать `0` в параметр `replace_query`. Если одновременно передать `replace_query = 1` и `'on_duplicate_clause'`, то ClickHouse сгенерирует исключение.
На данный момент простые условия `WHERE`, такие как `=, !=, >, >=, <, <=` будут выполняться на стороне сервера MySQL.
Остальные условия и ограничение выборки `LIMIT` будут выполнены в ClickHouse только после выполнения запроса к MySQL.
Движок `MySQL` не поддерживает тип данных [Nullable](../../data_types/nullable.md#data_type-nullable), поэтому при чтении данных из таблиц MySQL `NULL` преобразуются в значения по умолчанию для заданного типа столбца, обычно это `0` или пустая строка.
Движок `MySQL` не поддерживает тип данных [Nullable](../../data_types/nullable.md#data_type-nullable), поэтому при чтении данных из таблиц MySQL `NULL` преобразуются в значения по умолчанию для заданного типа столбца, обычно это 0 или пустая строка.
......@@ -50,6 +50,64 @@ minIf(EventTime, URL LIKE '%company%') < maxIf(EventTime, URL LIKE '%cart%').
Аналогично функции sequenceMatch, но возвращает не факт наличия цепочки событий, а UInt64 - количество найденных цепочек.
Цепочки ищутся без перекрытия. То есть, следующая цепочка может начаться только после окончания предыдущей.
## windowFunnel(window)(timestamp, cond1, cond2, cond3, ...)
Отыскивает цепочки событий в скользящем окне по времени и вычисляет максимальное количество произошедших событий из цепочки.
```
windowFunnel(window)(timestamp, cond1, cond2, cond3, ...)
```
**Параметры**
- `window` — ширина скользящего окна по времени в секундах.
- `timestamp` — имя столбца, содержащего отметки времени. Тип данных [DateTime](../../data_types/datetime.md#data_type-datetime) или [UInt32](../../data_types/int_uint.md#data_type-int).
- `cond1`, `cond2`... — условия или данные, описывающие цепочку событий. Тип данных — `UInt8`. Значения могут быть 0 или 1.
**Алгоритм**
- Функция отыскивает данные, на которых срабатывает первое условие из цепочки, и присваивает счетчику событий значение 1. С этого же момента начинается отсчет времени скользящего окна.
- Если в пределах окна последовательно попадаются события из цепочки, то счетчик увеличивается. Если последовательность событий нарушается, то счетчик не растёт.
- На каждое первое событие из цепочки отсчет начинается заново.
- Если в данных оказалось несколько цепочек разной степени завершенности, то функция выдаст только размер самой длинной цепочки.
**Возвращаемое значение**
- Целое число. Максимальное количество последовательно сработавших условий из цепочки в пределах скользящего окна по времени. Исследуются все цепочки в выборке.
**Пример**
Определим, успевает ли пользователь за час выбрать телефон в интернет-магазине и купить его.
Зададим следующую цепочку событий:
1. Пользователь вошел в личный кабинет магазина (`eventID=1001`).
2. Пользователь ищет телефон (`eventID = 1003, product = 'phone'`).
3. Пользователь сделал заказ (`eventID = 1009`).
Чтобы узнать, как далеко пользователь `user_id` смог пройти по цепочке за час в январе 2017-го года, составим запрос:
```
SELECT
level,
count() AS c
FROM
(
SELECT
user_id,
windowFunnel(3600)(timestamp, eventID = 1001, eventID = 1003 AND product = 'phone', eventID = 1009) AS level
FROM trend_event
WHERE (event_date >= '2017-01-01') AND (event_date <= '2017-01-31')
GROUP BY user_id
)
GROUP BY level
ORDER BY level
```
В результате мы можем получить 0, 1, 2 или 3 в зависимости от действий пользователя.
## uniqUpTo(N)(x)
Вычисляет количество различных значений аргумента, если оно меньше или равно N.
......
......@@ -225,7 +225,7 @@ ALTER TABLE [db.]table FETCH PARTITION 'name' FROM 'path-in-zookeeper'
Мутации - разновидность запроса ALTER, позволяющая изменять или удалять данные в таблице. В отличие от стандартных запросов `DELETE` и `UPDATE`, рассчитанных на точечное изменение данных, область применения мутаций - достаточно тяжёлые изменения, затрагивающие много строк в таблице.
Функциональность находится в состоянии beta и доступна начиная с версии 1.1.54388. Реализована поддержка *MergeTree таблиц (с репликацией и без).
Функциональность находится в состоянии beta и доступна начиная с версии 1.1.54388. Реализована поддержка \*MergeTree таблиц (с репликацией и без).
Конвертировать существующие таблицы для работы с мутациями не нужно. Но после применения первой мутации формат данных таблицы становится несовместимым с предыдущими версиями и откатиться на предыдущую версию уже не получится.
......@@ -239,7 +239,7 @@ ALTER TABLE [db.]table DELETE WHERE expr
В одном запросе можно указать несколько команд через запятую.
Для *MergeTree-таблиц мутации выполняются, перезаписывая данные по кускам (parts). При этом атомарности нет - куски заменяются на помутированные по мере выполнения и запрос `SELECT`, заданный во время выполнения мутации, увидит данные как из измененных кусков, так и из кусков, которые еще не были изменены.
Для \*MergeTree-таблиц мутации выполняются, перезаписывая данные по кускам (parts). При этом атомарности нет — куски заменяются на помутированные по мере выполнения и запрос `SELECT`, заданный во время выполнения мутации, увидит данные как из измененных кусков, так и из кусков, которые еще не были изменены.
Мутации линейно упорядочены между собой и накладываются на каждый кусок в порядке добавления. Мутации также упорядочены со вставками - гарантируется, что данные, вставленные в таблицу до начала выполнения запроса мутации, будут изменены, а данные, вставленные после окончания запроса мутации, изменены не будут. При этом мутации никак не блокируют вставки.
......@@ -262,4 +262,3 @@ ALTER TABLE [db.]table DELETE WHERE expr
**parts_to_do** - Количество кусков таблицы, которые ещё предстоит изменить.
**is_done** - Завершена ли мутация. Замечание: даже если `parts_to_do = 0`, для реплицированной таблицы возможна ситуация, когда мутация ещё не завершена из-за долго выполняющейся вставки, которая добавляет данные, которые нужно будет мутировать.
# numbers
`numbers(N)` - возвращает таблицу с единственным столбцом number (тип UInt64), содержащим натуральные числа от 0 до N-1.
`numbers(N)` - возвращает таблицу с единственным столбцом `number` (UInt64), содержащим натуральные числа от `0` до `N-1`.
`numbers(N, M)` - возвращает таблицу с единственным столбцом `number` (UInt64), содержащим натуральные числа от `N` to `(N + M - 1)`.
Так же как и таблица `system.numbers` может использоваться для тестов и генерации последовательных значений.
Так же как и таблица `system.numbers` может использоваться для тестов и генерации последовательных значений. Функция `numbers(N, M)` работает более эффективно, чем выборка из `system.numbers`.
Следующие запросы эквивалентны:
Следующие 2 запроса эквивалентны:
```sql
SELECT * FROM numbers(10);
SELECT * FROM numbers(0,10);
SELECT * FROM system.numbers LIMIT 10;
```
Примеры:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册