diff --git a/docs/ru/extended_roadmap.md b/docs/ru/extended_roadmap.md index 0c5d57c54d8..91e969c10ca 100644 --- a/docs/ru/extended_roadmap.md +++ b/docs/ru/extended_roadmap.md @@ -16,7 +16,7 @@ Задача "normalized z-Order curve" в перспективе может быть полезна для БК и Метрики, так как позволяет смешивать OrderID и PageID и избежать дублирования данных. В задаче также вводится способ индексации путём обращения функции нескольких аргументов на интервале, что имеет смысл для дальнейшего развития. -Изначально делал [Андрей Чулков](https://github.com/achulkov2), ВШЭ, теперь доделывает [Ольга Хвостикова](https://github.com/stavrolia), но сроки немного сдвинуты из-за задачи 25.9. Будем надеятся на реализацию к концу ноября. Впрочем, [Андрей Чулков](https://github.com/achulkov2) скоро сможет помочь её доделать. +Изначально делал [Андрей Чулков](https://github.com/achulkov2), ВШЭ, теперь (не) доделывает [Ольга Хвостикова](https://github.com/stavrolia), но сроки немного сдвинуты из-за задачи 25.9. Будем надеятся на лучшее. Upd. Доделывать будет другой человек. Приоритет не высокий. @@ -32,6 +32,8 @@ Q1. Делает [Александр Токмаков](https://github.com/tavplu Q1. И полностью immutable куски. Делает [Александр Сапин](https://github.com/alesapin). Готов приступить к задаче в конце ноября 2019. Нужно для Яндекс.Метрики. +Upd. Большая часть задачи реализована и добавлена в master. Есть незначительные технические долги. Остаётся реализация неблокирующего изменения метаданных таблицы. + ### 1.4. Нетранзитивные ALTER столбцов. Требует 1.3. Будет делать [Александр Сапин](https://github.com/alesapin). @@ -45,6 +47,8 @@ Q1. И полностью immutable куски. Делает [Александр Компактные куски - Q1, куски в оперативке Q1/Q2. +Компактные куски реализованы, ещё не включены по-умолчанию. Первым шагом включаем по-умолчанию для системных таблиц. + Делает [Антон Попов](https://github.com/CurtizJ), первый рабочий вариант в декабре. Пререквизит чтобы снизить сложность мелких INSERT, что в свою очередь нужно для 1.12, иначе задача 1.12 не сможет нормально работать. Особенно нужно для Яндекс.Облака. Данные в таблицах типа MergeTree в ClickHouse хранятся в виде набора независимых "кусков". Внутри куска, каждый столбец, а также индекс, хранится в отдельных файлах. Это сделано для возможности быстрых манипуляций со столбцами (пример - запрос ALTER DROP COLUMN). При вставке данных (INSERT), создаётся новый кусок. Для таблиц с большим количеством столбцов, запросы INSERT с маленьким количеством строк являются неэффективными, так как требуют создания большого количества файлов в файловой системе. Это является врождённой особенностью ClickHouse - одной из первой проблем, с которыми сталкиваются пользователи. Пользователям приходится буферизовывать данные и собирать их в более крупные пачки перед вставкой в ClickHouse. @@ -57,11 +61,12 @@ Q1. И полностью immutable куски. Делает [Александр Требует 1.6. -### 1.8. Перенос между разделами по TTL. +### 1.8. + Перенос между разделами по TTL. Делает [Владимир Чеботарёв](https://github.com/excitoon), Altinity. Декабрь 2019. Q1. Закоммичено, но есть технический долг, который исправляется сейчас. +Готово. ### 1.9. Использование TTL для прореживания данных. @@ -95,6 +100,8 @@ Q1. Закоммичено, но есть технический долг, ко ### 1.11. Виртуальная файловая система. +В процессе реализации, сейчас на VFS переведены Log, TinyLog, StripeLog, готовится MergeTree. + Q2. Нужно для Яндекс.Облака. Делает Александр, Яндекс.Облако, а также Олег Ершов, ВШЭ и Яндекс. @@ -110,6 +117,8 @@ Q2. Нужно для Яндекс.Облака. Требует 1.11. Желательно 1.6 и 1.18. Делает Александр, Яндекс.Облако (сначала часть для S3), а также Олег Ершов, ВШЭ и Яндекс. +Upd. Олег будет делать только часть про HDFS. + ### 1.13. Ускорение запросов с FINAL. Требует 2.1. Делает [Николай Кочетов](https://github.com/KochetovNicolai). Нужно для Яндекс.Метрики. @@ -174,6 +183,8 @@ Upd. Включили по-умолчанию. Удаление старого В очереди. Нужно для YQL. +Александр Токмаков исправил множество проблем с использованием Context и сейчас переносит каталог БД наружу. + ### 2.8. Декларативный парсер запросов. Средний приоритет. Нужно для YQL. @@ -277,6 +288,8 @@ Upd. Иван Блинков сделал эту задачу путём зам [#9075](https://github.com/ClickHouse/ClickHouse/pull/9075) Q1. Нужно для Метрики, в очереди. Никита Михайлов. +Upd. Задача на финальной стадии разработки. + ### 5.2. Автонастройка лимита на оперативку и размера кэшей. ### 5.3. + Встроенная ручка для Prometheus. @@ -288,20 +301,20 @@ Q1. Нужно для Метрики, в очереди. Никита Михай ### 5.5. + LTS релизы. Требует 7.5. Задачу хочет Метрика, Облако, БК, Маркет и Altinity. Первой LTS версией уже стала версия 19.14. -Метрика, БК, Маркет уже используют более свежие версии чем LTS. +Метрика, БК, Маркет, Altinity уже используют более свежие версии чем LTS. ## 6. Инструментирование. -### 6.1. Исправления сэмплирующего профайлера запросов. +### 6.1. + Исправления сэмплирующего профайлера запросов. Михаил Филимонов, Altinity. Ноябрь 2019. Сделано. -Осталось ещё проверить работоспособность профайлера в первом потоке (что важно для INSERT). Иван Лежанкин. Q1. +Осталось ещё проверить работоспособность профайлера в первом потоке (что важно для INSERT). Иван Лежанкин. Q1. Сделано. -### 6.2. Добавление memory profiler. +### 6.2. + Добавление memory profiler. [#6387](https://github.com/ClickHouse/ClickHouse/issues/6387) -Сравнительно простая задача, но только для опытных разработчиков. Нужна всем. Иван Лежанкин. Q1. +Сравнительно простая задача, но только для опытных разработчиков. Нужна всем. Иван Лежанкин. Q1. Сделано. ### 6.3. Учёт оперативки total расширить не только на запросы. @@ -313,6 +326,8 @@ Q1. Нужно для Метрики, в очереди. Никита Михай В Linux существует возможность получать в программе информацию о счётчиках производительности и событиях, относящихся к CPU и ядру ОС. Подробнее смотрите `man perf_event_open`. Предлагается добавить эти метрики в ClickHouse для инструментирования запросов. +Есть прототип. + ### 6.5. Эксперименты с LLVM X-Ray. Требует 2.2. @@ -357,9 +372,9 @@ Q1. Нужно для Метрики, в очереди. Никита Михай [Александр Сапин](https://github.com/alesapin). -### 7.6. Правильный статистический тест для comparison mode в clickhouse-performance-test. +### 7.6. + Правильный статистический тест для comparison mode в clickhouse-performance-test. -Задачу начал делать Дмитрий Рубашкин (ВШЭ). Сейчас продолжает [Александр Кузьменков](https://github.com/akuzm). +Задачу начал делать Дмитрий Рубашкин (ВШЭ). Сейчас продолжает [Александр Кузьменков](https://github.com/akuzm). Сделано, работает в CI. ### 7.7. Доделать тесты под MSan. @@ -441,15 +456,13 @@ Upd. В рамках данной задачи добавляем подстве [Александр Сапин](https://github.com/alesapin). Может делегировать эту задачу кому угодно. Upd. Сделано всё кроме инструкции на сайте. Для этого требуется создать директории testing/stable/prestable на repo.yandex.ru. Внезапно оказалось, что человек, отвечающий за это, в отпуске, и он не отвечает на вопрос, кто его заместитель. Q1. -### 7.18.1. Доделать бинарники под Mac. +### 7.18. + Доделать бинарники под Mac. Уже есть автосборка бинарников под Mac на каждый коммит и PR, но с недостатками. [Иван Лежанкин](https://github.com/abyss7). Требует 7.1, 7.2. Рекомендуется 7.14. Сейчас не хватает по крайней мере SSL и ICU. Нужно для Яндекс.Облака. Upd. Сделано SSL. Ориентируемся в Q1, но приоритет средний и может потеряться. -Not ready. There is no instruction on the main https://clickhouse.tech/ page neither in documentation. - -### 7.18. Поместить ссылку на собранные бинарники под Mac на сайт. +### 7.18.1. Поместить ссылку на собранные бинарники под Mac на сайт. Сейчас людям приходится делать несколько кликов, чтобы их скачать. [Иван Лежанкин](https://github.com/abyss7) или [Александр Сапин](https://github.com/alesapin). @@ -598,7 +611,9 @@ UPD: Все патчи Максима отправлены в master. Задач ### 8.1. Поддержка ALTER MODIFY SETTING для Kafka. -Altinity. +Также - возможность указать все настройки форматов в Kafka. + +Altinity. Никто не делает эту задачу. ### 8.2. Поддержка Mongo Atlas URI. @@ -618,7 +633,7 @@ Altinity. ### 8.6. Kerberos аутентификация для HDFS и Kafka. -Андрей Коняев, ArenaData. +Андрей Коняев, ArenaData. Он куда-то пропал. ### 8.7. + Исправление мелочи HDFS на очень старых ядрах Linux. @@ -661,7 +676,7 @@ Andrew Onyshchuk. Есть pull request. Q1. Сделано. Формат Apache Avro является компактным структурированным построчным бинарным форматом данных с внешней схемой. Этот формат часто используется совместно с Kafka и поддержка его в качестве одного из форматов ввода-вывода в ClickHouse является востребованной пользователями. -### 8.16.1. Поддержка формата JSONEachRow, засунутого в массив. +### 8.16.1. + Поддержка формата JSONEachRow, засунутого в массив. Павел Круглов, ВШЭ и Яндекс. Есть pull request. @@ -676,6 +691,7 @@ Andrew Onyshchuk. Есть pull request. Q1. Сделано. ### 8.16.4. Формат Regexp. Павел Круглов, ВШЭ и Яндекс. +Есть pull request. ### 8.17. ClickHouse как MySQL реплика. @@ -697,6 +713,8 @@ Maxim Fedotov, Wargaming + Yuri Baranov, Яндекс. Следующей по востребованности является система очередей RabbitMQ. Её поддержка в ClickHouse отсутствует. +Есть pull request в процессе разработки. + ### 8.20. Интеграция с SQS. Низкий приоритет. @@ -705,11 +723,14 @@ Maxim Fedotov, Wargaming + Yuri Baranov, Яндекс. Нужно для БК. Декабрь 2019. В декабре для БК сделан минимальный вариант этой задачи. +Максимальный вариант, вроде, никому не нужен. ### 8.22. Поддержка синтаксиса для переменных в стиле MySQL. При парсинге запроса преобразовывать синтаксис вида `@@version_full` в вызов функции `getGlobalVariable('version_full')`. Поддержать популярные MySQL переменные. Может быть поможет Юрий Баранов, если будет энтузиазм. +Upd. Юрий Баранов работает в Google, там запрещено разрабатывать ClickHouse. + ### 8.23. Подписка для импорта обновляемых и ротируемых логов в ФС. Желательно 2.15. @@ -745,6 +766,8 @@ ClickHouse предоставляет возможность обратитьс Код YT использует SIGILL вместо abort. Это, опять же, происходит при учениях. Нужно для БК и Метрики. Поиск причин - [Александр Сапин](https://github.com/alesapin). Дальшейшее исправление возможно на стороне YT. +Upd. Одну причину устранили, но ещё что-то неизвестное осталось. + ### 10.3. Возможность чтения данных из статических таблиц в YT словарях. Нужно для БК и Метрики. @@ -757,6 +780,8 @@ ClickHouse предоставляет возможность обратитьс Нужно для Метрики. +Для MySQL сделал Clément Rodriguez. + ### 10.6. Словари из Cassandra и Couchbase. ### 10.7. Поддержка Nullable в словарях. @@ -769,13 +794,13 @@ ClickHouse предоставляет возможность обратитьс ### 10.9. Уменьшение блокировок для cache словарей за счёт одновременных запросов одного и того же. -Никита Михайлов. Q1. Нужно для БК, но мотивация задачи находится под вопросом, так как есть рабочее предположение о том, что данная задача не устраняет причину проблемы. +Заменено в пользу 10.10, 10.11. -### 10.10. Возможность использования старых значений из cache словаря пока они перезапрашиваются. +### 10.10. + Возможность использования старых значений из cache словаря пока они перезапрашиваются. Никита Михайлов. Q1. Нужно для БК и Метрики. -### 10.11. Возможность исключительно асинхронных запросов в cache словарях. +### 10.11. + Возможность исключительно асинхронных запросов в cache словарях. Никита Михайлов. Q1. Нужно для БК и Метрики. Требует 10.10. @@ -817,7 +842,7 @@ ClickHouse предоставляет возможность обратитьс ### 11.3. Интеграционные тесты ODBC драйвера путём подключения ClickHouse к самому себе через ODBC. -Денис Глазачев, Altinity. +Михаил Филимонов, Altinity. Есть почти готовый pull request. ### 11.4. Исправление упячек с типами Date и Decimal в clickhouse-cpp. @@ -853,10 +878,10 @@ zhang2014, есть pull request. [Виталий Баранов](https://github.com/vitlibar). Финальная стадия разработки, рабочая версия в начале февраля 2019. Q1. Сейчас сделаны все интерфейсы в коде и запросы, но не сделаны варианты хранения прав кроме прототипа. -### 12.2. Управление пользователями и правами доступа с помощью SQL запросов. +### 12.2. + Управление пользователями и правами доступа с помощью SQL запросов. [Виталий Баранов](https://github.com/vitlibar). Финальная стадия разработки, рабочая версия в декабре 2019. -Q1. +Q1. Сделано управление правами полностью, но не реализовано их хранение, см. 12.1. ### 12.3. Подключение справочника пользователей и прав доступа из LDAP. @@ -890,6 +915,7 @@ Q1/Q2. Требует 13.2 или сможем сделать более неудобную реализацию раньше. Обсуждается вариант неудобной реализации. Пока средний приоритет, целимся на Q1/Q2. +Вариант реализации выбрал Александр Казаков. ## 14. Диалект SQL. @@ -926,8 +952,6 @@ zhang2014 ### 14.8. Модификаторы DISTINCT, ORDER BY для агрегатных функций. -Софья Борзенкова, ВШЭ. - В ClickHouse поддерживается вычисление COUNT(DISTINCT x). Предлагается добавить возможность использования модификатора DISTINCT для всех агрегатных функций. Например, AVG(DISTINCT x) - вычислить среднее значение для всех различных значений x. Под вопросом вариант, в котором фильтрация уникальных значений выполняется по одному выражению, а агрегация по другому. Результат некоторых агрегатных функций зависит от порядка данных. Предлагается реализовать модификатор ORDER BY, задающий порядок явно. Пример: groupArray(x ORDER BY y, z). @@ -992,7 +1016,7 @@ zhang2014. Артём Зуйков. Сейчас merge JOIN включается вручную опцией и всегда замедляет запросы. Хотим, чтобы он замедлял запросы только когда это неизбежно. Кстати, смысл merge JOIN появляется только совместно с 15.2 и 15.3. -Q1. +Q1. Сделали адаптивный вариант, но вроде он что-то всё-ещё замедляет. ### 15.1.1. Алгоритм two-level merge JOIN. @@ -1054,6 +1078,7 @@ ClickHouse не является geospatial СУБД. Тем не менее, в Похожая, но более сложная задача, которую ClickHouse пока не умеет решать - определение полигона среди множества полигонов, в которые попадают точки. Для примера: определение района города по географическим координатам. Для решения этой задачи нужно будет реализовать поддержку словарей с полигонами, в которых данные проиндексированы для быстрого поиска. Upd. Андрей сделал прототип интерфейса и реализацию-заглушку внутри него. +Upd. Андрей сделал прототип более оптимальной структуры данных. ### 17.2. GIS типы данных и операции. @@ -1086,6 +1111,8 @@ Upd. Андрей сделал прототип интерфейса и реал Предлагается реализовать в ClickHouse статистические тесты (Analysis of Variance, тесты нормальности распределения и т. п.) в виде агрегатных функций. Пример: `welchTTest(value, sample_idx)`. +Сделали прототип одного теста, есть pull request. + ### 18.3. Инфраструктура для тренировки моделей в ClickHouse. В очереди. Возможно, Александр Кожихов. У него сначала идёт задача 24.26. @@ -1115,9 +1142,11 @@ Upd. Андрей сделал прототип интерфейса и реал В прошлом году, Алексей добавил модельную реализацию (mock) интерфейса ZooKeeper для тестирования. Сейчас предлагается сделать реализацию поверх Etcd, а также расширить возможности тестовой реализации. +Upd. Алексей сделал какой-то вариант, но борется с тем, что ничего не работает. + ### 19.3. Подключение YT Cypress или YDB как альтернативы ZooKeeper. -Hold. Полезно для заказчиков внутри Яндекса, но есть риски. +Hold. Полезно для заказчиков внутри Яндекса, но есть риски. Эту задачу никто не будет делать. ### 19.4. internal_replication = 'auto'. @@ -1163,7 +1192,7 @@ Hold. Полезно для заказчиков внутри Яндекса, н Начинал Олег Ершов, доделывает Никита Михайлов, помогает [Александр Кузьменков](https://github.com/akuzm). Готово. -### 21.1.1. Избавление от лишнего копирование при параллельном парсинге форматов, если возможен mmap файла целиком. +### 21.1.1. Избавление от лишнего копирования при параллельном парсинге форматов, если возможен mmap файла целиком. ### 21.2. Параллельное форматирование форматов. @@ -1173,6 +1202,8 @@ Hold. Полезно для заказчиков внутри Яндекса, н Нужно всем (Zen, БК, DataLens, TestEnv...). Антон Попов, Q1/Q2. +Upd. Антон делает эту задачу. Большая часть уже реализована. + ### 21.4. Использование ORDER BY ключа для оптимизации GROUP BY и DISTINCT. Дмитрий Рубашкин, ВШЭ. Помогает Антон Попов. @@ -1183,7 +1214,7 @@ Hold. Полезно для заказчиков внутри Яндекса, н В прошлом году, аналогичное решение сделали для операции ORDER BY. -### 21.5. Распараллеливание INSERT при INSERT SELECT, если это необходимо. +### 21.5. + Распараллеливание INSERT при INSERT SELECT, если это необходимо. [Vxider](https://github.com/Vxider), ICT Есть pull request. @@ -1193,7 +1224,7 @@ Hold. Полезно для заказчиков внутри Яндекса, н ### 21.7. Кэш результатов запросов. [Achimbab](https://github.com/achimbab). -Есть pull request. +Есть pull request. Но это не совсем то. ### 21.8. Взаимная интеграция аллокатора и кэша. @@ -1248,8 +1279,6 @@ Amos Bird. ### 21.14. Оптимизация запросов с помощью constraints. -Мария Нефедова, ВШЭ. - Constraints позволяют задать выражение, истинность которого проверяется при вставке данных в таблицу. Предположение о том, что выражение истинно, может использоваться и для оптимизации запросов. Например, встретив в запросе точно такое же выражение, можно заменить его на константу 1. Если выражение содержит равенство, то встретив в запросе одну из частей равенства, её можно заменить на другую часть равенства, если это сделает проще чтение данных или вычисление выражения. Например, задан constraint: `URLDomain = domain(URL)`. Значит, выражение `domain(URL)` можно заменить на `URLDomain`. @@ -1334,9 +1363,11 @@ N.Vartolomei. ### 22.5. + Исправление редких срабатываний TSan в stress тестах в CI. -Александр Казаков. +Александр Казаков сделал эту задачу. -### 22.6. Изменение только DEFAULT в ALTER TABLE может поменять тип столбца. +### 22.6. + Изменение только DEFAULT в ALTER TABLE может поменять тип столбца. + +Александр Сапин сделал эту задачу. ### 22.7. + Row-Level Security не работает в случае наличия в запросе IN подзапросов. @@ -1371,7 +1402,7 @@ N.Vartolomei. Изначально было назначено на [Ивана Лежанкина](https://github.com/abyss7), но в результате сделал Александр Сапин. -### 22.14. Посмотреть, почему не работает StorageSet для MergeTree таблиц при некоторых условиях. +### 22.14. + Посмотреть, почему не работает StorageSet для MergeTree таблиц при некоторых условиях. Вроде бы сделал Никита Михайлов - проверить существующие issues на эту тему. @@ -1502,8 +1533,6 @@ Q1. [Николай Кочетов](https://github.com/KochetovNicolai). ### 24.2. Экспериментальные алгоритмы сжатия. -Анастасия Наумова, ВШЭ. - ClickHouse поддерживает LZ4 и ZSTD для сжатия данных. Эти алгоритмы являются парето-оптимальными по соотношению скорости и коэффициентам сжатия среди достаточно известных. Тем не менее, существуют менее известные алгоритмы сжатия, которые могут превзойти их по какому-либо критерию. Из потенциально более быстрых по сравнимом коэффициенте сжатия: Lizard, LZSSE, density. Из более сильных: bsc и csc. Необходимо изучить эти алгоритмы, добавить их поддержку в ClickHouse и исследовать их работу на тестовых датасетах. ### 24.3. Экспериментальные кодеки. @@ -1514,19 +1543,14 @@ ClickHouse поддерживает LZ4 и ZSTD для сжатия данных Внедрить их в ClickHouse в виде кодеков и изучить их работу на тестовых датасетах. -### 24.4. Шифрование в ClickHouse на уровне кусков данных. - -Yuchen Dong, ICT. +### 24.4. Шифрование в ClickHouse на уровне VFS. Данные в ClickHouse хранятся без шифрования. При наличии доступа к дискам, злоумышленник может прочитать данные. Предлагается реализовать два подхода к шифрованию: -1. Шифрование блоков данных. -Шифрование данных столбцов на диске требуется реализовать в виде кодеков. Это позволит применять шифрование к отдельным столбцам; применять его после сжатия данных (эффективно, но менее безопасно) или без сжатия. Потребуется проработать работу с ключами: получение ключей из отдельного сервиса, правильная работа с ключами в оперативке. Отдельным вопросом стоит шифрование индексов. +1. Шифрование на уровне VFS. ### 24.5. Поддержка функций шифрования для отдельных значений. -Yuchen Dong, ICT. - Смотрите также 24.5. 2. Шифрование отдельных значений. @@ -1608,6 +1632,8 @@ ClickHouse предоставляет достаточно богатый наб В компании nVidia сделали прототип offloading вычисления GROUP BY с некоторыми из агрегатных функций в ClickHouse и обещат предоставить исходники в публичный доступ для дальнейшего развития. Предлагается изучить этот прототип и расширить его применимость для более широкого сценария использования. В качестве альтернативы, предлагается изучить исходные коды системы `OmniSci` или `Alenka` или библиотеку `CUB` https://nvlabs.github.io/cub/ и применить некоторые из алгоритмов в ClickHouse. +Upd. В компании nVidia выложили прототип, теперь нужна интеграция в систему сборки. + ### 24.13. Stream запросы. Пререквизит для ClickHouse как CEP-системы. @@ -1769,7 +1795,7 @@ Amos Bird, но его решение слишком громоздкое и п ### 25.11. Митапы зарубежные: восток США (Нью Йорк, возможно Raleigh), возможно северо-запад (Сиэтл), Китай (Пекин снова, возможно митап для разработчиков или хакатон), Лондон. -[Иван Блинков](https://github.com/blinkov/) - организация. Две штуки в США запланированы. +[Иван Блинков](https://github.com/blinkov/) - организация. Две штуки в США запланированы. Upd. Два митапа в США и один в Европе проведены. ### 25.12. Статья "научная" - про устройство хранения данных и индексов или whitepaper по архитектуре. Есть вариант подать на VLDB. @@ -1800,6 +1826,8 @@ Amos Bird, но его решение слишком громоздкое и п Требуется проработать вопрос безопасности и изоляции инстансов (поднятие в контейнерах с ограничениями по сети), подключение тестовых датасетов с помощью copy-on-write файловой системы; органичения ресурсов. +Есть минимальный прототип. + ### 25.17. Взаимодействие с ВУЗами: ВШЭ, УрФУ, ICT Beijing. Алексей Миловидов и вся группа разработки @@ -1840,4 +1868,4 @@ UPD: не участвуем. ### 25.27. Обновить сайт ClickHouse. -Иван Блинков. Есть риски. +Иван Блинков. Нет рисков. Нужно для Яндекс.Облака.