YouTube трансляция: https://www.youtube.com/c/ClickHouseDB
Telegram chat: https://telegram.me/clickhouse_ru, clickhouse_en
Футболки за вопросы!
Если вы задали вопрос через Zoom
— напишите после мероприятия мне в Telegram в личку:
свой вопрос, размер футболки и адрес для доставки курьером.
— Компактные куски данных (с версии 20.3).
— Куски данных в оперативной памяти (с версии 20.6).
— Write-Ahead Log (с версии 20.6).
— Настройки durability (с версии 20.10).
Разработчик — Антон Попов.
1. Wide — классический формат.
2. Compact — все столбцы в одном файле.
3. Memory — данные в оперативке.
Регулируется настройками:
— min_bytes_for_wide_part,
min_rows_for_wide_part:
если размер больше — использовать wide формат.
— min_bytes_for_compact_part,
min_rows_for_compact_part:
если размер больше — использовать compact формат,
если меньше — использовать memory формат.
Wide > Compact > Memory
Классический формат.
Каждый столбец и индекс в отдельном файле.
Оптимален для чтения данных с дисков, в том числе медленных.
Дешёвый ALTER добавления или удаления столбца.
Все столбцы в одном файле.
Оптимален для вставки новых данных.
Особенно на медленных файловых системах.
Менее оптимален для чтения.
Рекомендуется для кусков данных небольшого размера.
Не рекомендуется использовать для всех кусков.
Доступен с версии 20.3, но выключен по-умолчанию.
С версии 20.10 будет использоваться для кусков до 10 МБ.
Данные в оперативной памяти.
+ Write-Ahead Log, отключаемый.
— in_memory_parts_enable_wal;
— write_ahead_log_max_bytes.
Ещё более оптимален для вставки новых данных...
... если выключить write-ahead log.
Более эффективен для чтения...
... но данные в оперативной памяти несжатые.
Все куски реплицируются так же, как обычно.
Экспериментальная возможность.
Если все ваши данные расположены на одном сервере...
Если вы не используете репликацию...
Если репликация есть, но в пределах одного региона...
— надо просто вызывать fsync до ответа на INSERT?
Eat My Data (2007):
https://www.youtube.com/watch?v=LMe7hf2G1po
Files Are Hard (2015):
https://danluu.com/file-consistency/
PostgreSQL "Fsyncgate" (2018):
https://lwn.net/Articles/752063/
Если все ваши данные расположены на одном сервере...
Если вы не используете репликацию...
Если репликация есть, но в пределах одного региона...
Тогда вот:
— min_rows_to_fsync_after_merge;
— min_compressed_bytes_to_fsync_after_merge;
— min_compressed_bytes_to_fsync_after_fetch;
— fsync_after_insert;
— fsync_part_directory;
— write_ahead_log_bytes_to_fsync;
— write_ahead_log_interval_ms_to_fsync;
— in_memory_parts_insert_sync.
Функции normalizeQuery, normalizedQueryHash.
SELECT normalizeQuery(query) FROM system.query_log
— замена литералов на ?
— замена списков литералов на ?..
— замена сложных алиасов на `?`
Доступно с версии 20.8.
У одного моего друга тормозил запрос...
... но он не хотел его показывать.
Решение:
clickhouse-format --obfuscate < query.sql
Доступно с версии 20.10.
Обфускация данных: https://www.youtube.com/watch?v=2iR7i4akL44
CREATE TABLE hits
(
event_time DateTime,
...
) ENGINE MergeTree ORDER BY ...
TTL event_time + INTERVAL 1 MONTH
RECOMPRESS CODEC(ZSTD(1)),
event_time + INTERVAL 1 YEAR
RECOMPRESS CODEC(ZSTD(6))
Разработчик — Александр Сапин. Доступно с версии 20.10.
CREATE TABLE hits
(
event_time DateTime CODEC(Delta, Default),
...
) ENGINE MergeTree ORDER BY ...
ALTER TABLE hits MODIFY COLUMN c
REMOVE COMMENT|CODEC|TTL
|DEFAULT|MATERIALIZED|ALIAS
Разработчик — Александр Сапин. Доступно с версии 20.10.
SELECT * EXCEPT(secret_column) FROM table;
SELECT table.* REPLACE(
(URL LIKE '%yandex%' ? '' : URL) AS URL) FROM table;
SELECT COLUMNS('^packet_') FROM table;
SELECT t.* APPLY(sum) FROM table AS t;
SELECT COLUMNS(x, y, z) APPLY(sum) FROM table;
Разработчик — Amos Bird, mfridental. Доступно с версии 20.10.
COLUMNS('regexp'): разработчик — mfridental. Доступно с версии 19.12.
20.10 — testing.
20.9 — stable.
20.8 — LTS until 2021-09-30.
20.7 — stable.
20.6 ... 20.4 — obsolete.
20.3 — LTS until 2021-03-12.
...
19.14 — obsolete.
Импорт данных из RabbitMQ.
Kerberos аутентификация для Kafka.
Бета unlimited storage в Яндекс.Облаке.
WITH для подзапросов и с глобальным scope.
Форматы Regexp, RawBLOB, JSONAsString, LinesAsString.
Запуск clickhouse без пакетов и конфигурации.
Таблица system.crash_log, Sentry.
Вычисление корелляции рангов.
256bit Decimal.
Бэкапы.
Проекции.
Отказ от ZooKeeper.
Поддержка OpenTracing.
Хеджирование запросов.
Чтение срезов столбцов.
Функции анализа геоданных.
Анализ полудубликатов текстов.
https://clickhouse.tech/docs/ru/whats-new/extended-roadmap/
~ 500 задач с подробным описанием — зависимости, исполнители...