Update extended-roadmap.md

This commit is contained in:
alexey-milovidov 2020-06-18 08:00:55 +03:00 committed by GitHub
parent 5490e126d0
commit cb658d10aa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -707,7 +707,7 @@ Upd. Задача взята в работу.
Сделал [Andrey Bodrov](https://github.com/apbodrov) Сделал [Andrey Bodrov](https://github.com/apbodrov)
### 8.10. Запись в табличную функцию ODBC {#zapis-v-tablichnuiu-funktsiiu-odbc} ### 8.10. + Запись в табличную функцию ODBC {#zapis-v-tablichnuiu-funktsiiu-odbc}
Артемий Бобровский, ВШЭ Артемий Бобровский, ВШЭ
Есть pull request. Есть pull request.
@ -719,15 +719,11 @@ Upd. Задача взята в работу.
### 8.12. Пропуск столбцов в форматах Parquet, ORC {#propusk-stolbtsov-v-formatakh-parquet-orc} ### 8.12. Пропуск столбцов в форматах Parquet, ORC {#propusk-stolbtsov-v-formatakh-parquet-orc}
Артемий Бобровский, ВШЭ или другой человек.
### 8.13. Поддержка массивов в Parquet, ORC {#podderzhka-massivov-v-parquet-orc} ### 8.13. Поддержка массивов в Parquet, ORC {#podderzhka-massivov-v-parquet-orc}
Артемий Бобровский, ВШЭ
### 8.14. Запись данных в ORC {#zapis-dannykh-v-orc} ### 8.14. Запись данных в ORC {#zapis-dannykh-v-orc}
Возможно, Андрей Коняев, ArenaData (зависит от желания). Павел Круглов, ВШЭ. Есть pull request.
### 8.15. Запись данных в CapNProto {#zapis-dannykh-v-capnproto} ### 8.15. Запись данных в CapNProto {#zapis-dannykh-v-capnproto}
@ -857,6 +853,8 @@ Upd. Ура, нашли причину и исправили.
### 10.6. Словари из Cassandra и Couchbase {#slovari-iz-cassandra-i-couchbase} ### 10.6. Словари из Cassandra и Couchbase {#slovari-iz-cassandra-i-couchbase}
Готова Cassandra.
### 10.7. Поддержка Nullable в словарях {#podderzhka-nullable-v-slovariakh} ### 10.7. Поддержка Nullable в словарях {#podderzhka-nullable-v-slovariakh}
Артём Стрельцов, Николай Дегтеринский, Наталия Михненко, ВШЭ. Артём Стрельцов, Николай Дегтеринский, Наталия Михненко, ВШЭ.
@ -877,7 +875,7 @@ Upd. Ура, нашли причину и исправили.
Никита Михайлов. Q1. Нужно для БК и Метрики. Требует 10.10. Никита Михайлов. Q1. Нужно для БК и Метрики. Требует 10.10.
### 10.12. Layout direct для словарей {#layout-direct-dlia-slovarei} ### 10.12. + Layout direct для словарей {#layout-direct-dlia-slovarei}
Артём Стрельцов, Николай Дегтеринский, Наталия Михненко, ВШЭ. Артём Стрельцов, Николай Дегтеринский, Наталия Михненко, ВШЭ.
Приступили к этой задаче. Приступили к этой задаче.
@ -889,7 +887,7 @@ Upd. Ура, нашли причину и исправили.
### 10.14. Поддержка всех типов в функции transform {#podderzhka-vsekh-tipov-v-funktsii-transform} ### 10.14. Поддержка всех типов в функции transform {#podderzhka-vsekh-tipov-v-funktsii-transform}
### 10.15. Использование словарей как специализированного layout для Join {#ispolzovanie-slovarei-kak-spetsializirovannogo-layout-dlia-join} ### 10.15. + Использование словарей как специализированного layout для Join {#ispolzovanie-slovarei-kak-spetsializirovannogo-layout-dlia-join}
### 10.16. Словари на локальном SSD {#slovari-na-lokalnom-ssd} ### 10.16. Словари на локальном SSD {#slovari-na-lokalnom-ssd}
@ -1002,14 +1000,14 @@ Q2.
Вариант реализации выбрал Александр Казаков. Вариант реализации выбрал Александр Казаков.
Upd. Не уследили, и задачу стали обсуждать менеджеры. Upd. Не уследили, и задачу стали обсуждать менеджеры.
Upd. Задачу смотрит Александр Казаков. Upd. Задачу смотрит Александр Казаков.
Upd. Задача взята в работу.
## 14. Диалект SQL {#dialekt-sql} ## 14. Диалект SQL {#dialekt-sql}
### 14.1. Исправление семантики CAST для Nullable {#ispravlenie-semantiki-cast-dlia-nullable} ### 14.1. + Исправление семантики CAST для Nullable {#ispravlenie-semantiki-cast-dlia-nullable}
Нужно для DataLens. А также для внедрения в BI инструмент Looker. Нужно для DataLens. А также для внедрения в BI инструмент Looker.
Павел Потёмкин, ВШЭ.
### 14.2. Поддержка WITH для подзапросов {#podderzhka-with-dlia-podzaprosov} ### 14.2. Поддержка WITH для подзапросов {#podderzhka-with-dlia-podzaprosov}
@ -1026,12 +1024,8 @@ zhang2014
### 14.6. Глобальный scope для WITH {#globalnyi-scope-dlia-with} ### 14.6. Глобальный scope для WITH {#globalnyi-scope-dlia-with}
Павел Потёмкин, ВШЭ.
### 14.7. Nullable для WITH ROLLUP, WITH CUBE, WITH TOTALS {#nullable-dlia-with-rollup-with-cube-with-totals} ### 14.7. Nullable для WITH ROLLUP, WITH CUBE, WITH TOTALS {#nullable-dlia-with-rollup-with-cube-with-totals}
Павел Потёмкин, ВШЭ.
Простая задача. Простая задача.
### 14.8. Модификаторы DISTINCT, ORDER BY для агрегатных функций {#modifikatory-distinct-order-by-dlia-agregatnykh-funktsii} ### 14.8. Модификаторы DISTINCT, ORDER BY для агрегатных функций {#modifikatory-distinct-order-by-dlia-agregatnykh-funktsii}
@ -1040,7 +1034,7 @@ zhang2014
Результат некоторых агрегатных функций зависит от порядка данных. Предлагается реализовать модификатор ORDER BY, задающий порядок явно. Пример: groupArray(x ORDER BY y, z). Результат некоторых агрегатных функций зависит от порядка данных. Предлагается реализовать модификатор ORDER BY, задающий порядок явно. Пример: groupArray(x ORDER BY y, z).
Upd. Есть pull request на DISTINCT. Upd. Есть pull request.
### 14.9. Поддержка запроса EXPLAIN {#podderzhka-zaprosa-explain} ### 14.9. Поддержка запроса EXPLAIN {#podderzhka-zaprosa-explain}
@ -1062,7 +1056,8 @@ Upd. Есть pull request на DISTINCT.
### 14.14. Неявные преобразования типов констант {#neiavnye-preobrazovaniia-tipov-konstant} ### 14.14. Неявные преобразования типов констант {#neiavnye-preobrazovaniia-tipov-konstant}
Требует 2.12. Сделано для операторов сравнения с константами (подавляющее большинство use cases).
В общем виде требует 2.12.
### 14.15. Неявные преобразования типов под настройкой {#neiavnye-preobrazovaniia-tipov-pod-nastroikoi} ### 14.15. Неявные преобразования типов под настройкой {#neiavnye-preobrazovaniia-tipov-pod-nastroikoi}
@ -1078,7 +1073,6 @@ zhang2014.
### 14.18. UNION DISTINCT и возможность включить его по-умолчанию {#union-distinct-i-vozmozhnost-vkliuchit-ego-po-umolchaniiu} ### 14.18. UNION DISTINCT и возможность включить его по-умолчанию {#union-distinct-i-vozmozhnost-vkliuchit-ego-po-umolchaniiu}
Павел Потёмкин, ВШЭ.
Для BI систем. Для BI систем.
### 14.19. Совместимость парсера типов данных с SQL {#sovmestimost-parsera-tipov-dannykh-s-sql} ### 14.19. Совместимость парсера типов данных с SQL {#sovmestimost-parsera-tipov-dannykh-s-sql}
@ -1088,7 +1082,6 @@ zhang2014.
### 14.20. Позиционные аргументы для GROUP BY и ORDER BY {#pozitsionnye-argumenty-dlia-group-by-i-order-by} ### 14.20. Позиционные аргументы для GROUP BY и ORDER BY {#pozitsionnye-argumenty-dlia-group-by-i-order-by}
Павел Потёмкин, ВШЭ.
Тривиально и используется многими системами, но не входит в стандарт SQL. Тривиально и используется многими системами, но не входит в стандарт SQL.
### 14.21. Приведение типов для IN (подзапрос) и для JOIN {#privedenie-tipov-dlia-in-podzapros-i-dlia-join} ### 14.21. Приведение типов для IN (подзапрос) и для JOIN {#privedenie-tipov-dlia-in-podzapros-i-dlia-join}
@ -1105,11 +1098,12 @@ Q1. Сделали адаптивный вариант, но вроде он ч
### 15.1.1. Алгоритм two-level merge JOIN {#algoritm-two-level-merge-join} ### 15.1.1. Алгоритм two-level merge JOIN {#algoritm-two-level-merge-join}
Александр Кузьменков. В очереди. Также известен как grace hash join.
Артём Зуйков. В очереди.
### 15.1.2. Тестирование реализации JOIN в Greenplum {#testirovanie-realizatsii-join-v-greenplum} ### 15.1.2. Тестирование реализации JOIN в Greenplum {#testirovanie-realizatsii-join-v-greenplum}
В очереди. В очереди. Как будто задача самоотменилась.
### 15.2. Прокидывание условий в OUTER JOIN {#prokidyvanie-uslovii-v-outer-join} ### 15.2. Прокидывание условий в OUTER JOIN {#prokidyvanie-uslovii-v-outer-join}
@ -1168,6 +1162,7 @@ ClickHouse не является geospatial СУБД. Тем не менее, в
Upd. Андрей сделал прототип интерфейса и реализацию-заглушку внутри него. Upd. Андрей сделал прототип интерфейса и реализацию-заглушку внутри него.
Upd. Андрей сделал прототип более оптимальной структуры данных. Upd. Андрей сделал прототип более оптимальной структуры данных.
Upd. Есть обнадёживающие результаты. Upd. Есть обнадёживающие результаты.
Upd. В ревью.
### 17.2. GIS типы данных и операции {#gis-tipy-dannykh-i-operatsii} ### 17.2. GIS типы данных и операции {#gis-tipy-dannykh-i-operatsii}
@ -1202,7 +1197,7 @@ Upd. Есть обнадёживающие результаты.
Предлагается реализовать в ClickHouse статистические тесты (Analysis of Variance, тесты нормальности распределения и т. п.) в виде агрегатных функций. Пример: `welchTTest(value, sample_idx)`. Предлагается реализовать в ClickHouse статистические тесты (Analysis of Variance, тесты нормальности распределения и т. п.) в виде агрегатных функций. Пример: `welchTTest(value, sample_idx)`.
Сделали прототип одного теста, есть pull request. Сделали прототип двух тестов, есть pull request.
### 18.3. Инфраструктура для тренировки моделей в ClickHouse {#infrastruktura-dlia-trenirovki-modelei-v-clickhouse} ### 18.3. Инфраструктура для тренировки моделей в ClickHouse {#infrastruktura-dlia-trenirovki-modelei-v-clickhouse}
@ -1213,8 +1208,6 @@ Upd. Есть обнадёживающие результаты.
### 19.1. Параллельные кворумные вставки без линеаризуемости {#parallelnye-kvorumnye-vstavki-bez-linearizuemosti} ### 19.1. Параллельные кворумные вставки без линеаризуемости {#parallelnye-kvorumnye-vstavki-bez-linearizuemosti}
Александра Латышева, ВШЭ и Яндекс.
Репликация данных в ClickHouse по-умолчанию является асинхронной без выделенного мастера. Это значит, что клиент, осуществляющий вставку данных, получает успешный ответ после того, как данные попали на один сервер; репликация данных по остальным серверам осуществляется в другой момент времени. Это ненадёжно, потому что допускает потерю только что вставленных данных при потере лишь одного сервера. Репликация данных в ClickHouse по-умолчанию является асинхронной без выделенного мастера. Это значит, что клиент, осуществляющий вставку данных, получает успешный ответ после того, как данные попали на один сервер; репликация данных по остальным серверам осуществляется в другой момент времени. Это ненадёжно, потому что допускает потерю только что вставленных данных при потере лишь одного сервера.
Для решения этой проблемы, в ClickHouse есть возможность включить «кворумную» вставку. Это значит, что клиент, осуществляющий вставку данных, получает успешный ответ после того, как данные попали на несколько (кворум) серверов. Обеспечивается линеаризуемость: клиент, получает успешный ответ после того, как данные попали на несколько реплик, *которые содержат все предыдущие данные, вставленные с кворумом* (такие реплики можно называть «синхронными»), и при запросе SELECT можно выставить настройку, разрешающую только чтение с синхронных реплик. Для решения этой проблемы, в ClickHouse есть возможность включить «кворумную» вставку. Это значит, что клиент, осуществляющий вставку данных, получает успешный ответ после того, как данные попали на несколько (кворум) серверов. Обеспечивается линеаризуемость: клиент, получает успешный ответ после того, как данные попали на несколько реплик, *которые содержат все предыдущие данные, вставленные с кворумом* (такие реплики можно называть «синхронными»), и при запросе SELECT можно выставить настройку, разрешающую только чтение с синхронных реплик.
@ -1250,9 +1243,9 @@ Hold. Полезно для заказчиков внутри Яндекса, н
Предлагается реализовать «движок баз данных», который осуществляет репликацию метаданных (множество имеющихся таблиц и лог DDL операций над ними: CREATE, DROP, RENAME, ALTER). Пользователь сможет создать реплицируемую базу данных; при её создании или восстановлении на другом сервере, все реплицируемые таблицы будут созданы автоматически. Предлагается реализовать «движок баз данных», который осуществляет репликацию метаданных (множество имеющихся таблиц и лог DDL операций над ними: CREATE, DROP, RENAME, ALTER). Пользователь сможет создать реплицируемую базу данных; при её создании или восстановлении на другом сервере, все реплицируемые таблицы будут созданы автоматически.
### 19.6. Одновременный выбор кусков для слияния многими репликами, отказ от leader election в ZK {#odnovremennyi-vybor-kuskov-dlia-sliianiia-mnogimi-replikami-otkaz-ot-leader-election-v-zk} ### 19.6. + Одновременный выбор кусков для слияния многими репликами, отказ от leader election в ZK {#odnovremennyi-vybor-kuskov-dlia-sliianiia-mnogimi-replikami-otkaz-ot-leader-election-v-zk}
Обсуждается. Возможно, будет делать Александр Сапин. Готово.
### 19.7. Возможность записи данных при недоступности ZK и отказ от линейного порядка кусков в большинстве случаев {#vozmozhnost-zapisi-dannykh-pri-nedostupnosti-zk-i-otkaz-ot-lineinogo-poriadka-kuskov-v-bolshinstve-sluchaev} ### 19.7. Возможность записи данных при недоступности ZK и отказ от линейного порядка кусков в большинстве случаев {#vozmozhnost-zapisi-dannykh-pri-nedostupnosti-zk-i-otkaz-ot-lineinogo-poriadka-kuskov-v-bolshinstve-sluchaev}
@ -1290,6 +1283,7 @@ Hold. Полезно для заказчиков внутри Яндекса, н
### 21.2. Параллельное форматирование форматов {#parallelnoe-formatirovanie-formatov} ### 21.2. Параллельное форматирование форматов {#parallelnoe-formatirovanie-formatov}
После 21.1, предположительно Никита Михайлов. Задача сильно проще чем 21.1. После 21.1, предположительно Никита Михайлов. Задача сильно проще чем 21.1.
В процессе.
### 21.3. + Исправление низкой производительности анализа индекса в случае большого множества в секции IN {#ispravlenie-nizkoi-proizvoditelnosti-analiza-indeksa-v-sluchae-bolshogo-mnozhestva-v-sektsii-in} ### 21.3. + Исправление низкой производительности анализа индекса в случае большого множества в секции IN {#ispravlenie-nizkoi-proizvoditelnosti-analiza-indeksa-v-sluchae-bolshogo-mnozhestva-v-sektsii-in}
@ -1308,6 +1302,7 @@ Upd. Антон делает эту задачу. Большая часть уж
В прошлом году, аналогичное решение сделали для операции ORDER BY. В прошлом году, аналогичное решение сделали для операции ORDER BY.
Upd. Есть pull request для GROUP BY. Приличные результаты. Upd. Есть pull request для GROUP BY. Приличные результаты.
Upd. Для GROUP BY готово, в процессе для DISTINCT.
### 21.5. + Распараллеливание INSERT при INSERT SELECT, если это необходимо {#rasparallelivanie-insert-pri-insert-select-esli-eto-neobkhodimo} ### 21.5. + Распараллеливание INSERT при INSERT SELECT, если это необходимо {#rasparallelivanie-insert-pri-insert-select-esli-eto-neobkhodimo}
@ -1355,6 +1350,7 @@ Amos Bird.
- При GROUP BY по transform или if по строкам, замена строк на Enum. - При GROUP BY по transform или if по строкам, замена строк на Enum.
Сделана замена цепочек if на multiIf, но внезапно оказалось, что это является не оптимизацией, а наоборот. Сделана замена цепочек if на multiIf, но внезапно оказалось, что это является не оптимизацией, а наоборот.
Сделано ещё несколько оптимизаций.
### 21.12. Алгебраические оптимизации запросов {#algebraicheskie-optimizatsii-zaprosov} ### 21.12. Алгебраические оптимизации запросов {#algebraicheskie-optimizatsii-zaprosov}
@ -1604,7 +1600,7 @@ Altinity.
Q1. [Николай Кочетов](https://github.com/KochetovNicolai). Q1. [Николай Кочетов](https://github.com/KochetovNicolai).
### 23.10. Включение mlock бинарника {#vkliuchenie-mlock-binarnika} ### 23.10. + Включение mlock бинарника {#vkliuchenie-mlock-binarnika}
Возможность mlock бинарника сделал Олег Алексеенков [\#3553](https://github.com/ClickHouse/ClickHouse/pull/3553) Возможность mlock бинарника сделал Олег Алексеенков [\#3553](https://github.com/ClickHouse/ClickHouse/pull/3553)
. Поможет, когда на серверах кроме ClickHouse работает много посторонних программ (мы иногда называем их в шутку «треш-программами»). . Поможет, когда на серверах кроме ClickHouse работает много посторонних программ (мы иногда называем их в шутку «треш-программами»).
@ -1670,6 +1666,8 @@ RAID позволяет одновременно увеличить надёжн
Для преодоления этих ограничений, предлагается реализовать в ClickHouse встроенный алгоритм расположения данных на дисках. Для преодоления этих ограничений, предлагается реализовать в ClickHouse встроенный алгоритм расположения данных на дисках.
Есть pull request на начальной стадии.
### 24.7. Вероятностные структуры данных для фильтрации по подзапросам {#veroiatnostnye-struktury-dannykh-dlia-filtratsii-po-podzaprosam} ### 24.7. Вероятностные структуры данных для фильтрации по подзапросам {#veroiatnostnye-struktury-dannykh-dlia-filtratsii-po-podzaprosam}
Рузель Ибрагимов, ВШЭ и Яндекс. Рузель Ибрагимов, ВШЭ и Яндекс.
@ -1680,6 +1678,8 @@ RAID позволяет одновременно увеличить надёжн
Предлагается реализовать это в языке запросов ClickHouse с помощью специального синтаксиса, например `x IN BLOOM FILTER (n, m) (SELECT ...)`. Предлагается реализовать это в языке запросов ClickHouse с помощью специального синтаксиса, например `x IN BLOOM FILTER (n, m) (SELECT ...)`.
Есть pull request на стадии работающего прототипа.
### 24.8. Специализация векторизованного кода для AVX/AVX2/AVX512 и ARM NEON {#spetsializatsiia-vektorizovannogo-koda-dlia-avxavx2avx512-i-arm-neon} ### 24.8. Специализация векторизованного кода для AVX/AVX2/AVX512 и ARM NEON {#spetsializatsiia-vektorizovannogo-koda-dlia-avxavx2avx512-i-arm-neon}
[\#1017](https://github.com/ClickHouse/ClickHouse/issues/1017) [\#1017](https://github.com/ClickHouse/ClickHouse/issues/1017)
@ -1698,7 +1698,7 @@ RAID позволяет одновременно увеличить надёжн
Продолжение 24.8. Продолжение 24.8.
Upd. Есть pull request. Upd. Есть pull request. В стадии ревью.
### 24.10. Поддержка типов half/bfloat16/unum {#podderzhka-tipov-halfbfloat16unum} ### 24.10. Поддержка типов half/bfloat16/unum {#podderzhka-tipov-halfbfloat16unum}
@ -1706,6 +1706,8 @@ Upd. Есть pull request.
Рустам Гусейн-заде, ВШЭ. Рустам Гусейн-заде, ВШЭ.
Есть pull request на промежуточной стадии.
### 24.11. User Defined Functions {#user-defined-functions} ### 24.11. User Defined Functions {#user-defined-functions}
Игорь Минеев, ВШЭ. Игорь Минеев, ВШЭ.
@ -1726,6 +1728,8 @@ ClickHouse предоставляет достаточно богатый наб
Также рассматривается возможность написания UDF на Rust, а также использование Web Assembly. Отдельно можно рассмотреть подключение NumPy и R и других технологий, которые предоставляют операции над целыми массивами. Также рассматривается возможность написания UDF на Rust, а также использование Web Assembly. Отдельно можно рассмотреть подключение NumPy и R и других технологий, которые предоставляют операции над целыми массивами.
Upd. В работе два варианта реализации UDF.
### 24.12. GPU offloading {#gpu-offloading} ### 24.12. GPU offloading {#gpu-offloading}
Риск состоит в том, что даже известные GPU базы, такие как OmniSci, работают медленнее, чем ClickHouse. Риск состоит в том, что даже известные GPU базы, такие как OmniSci, работают медленнее, чем ClickHouse.
@ -1764,6 +1768,7 @@ Upd. Прототип bitonic sort помержен, но целесообраз
Задача в работе. Задача в работе.
Upd. Достигнуты обнадёживающие результаты. Upd. Достигнуты обнадёживающие результаты.
Upd. Есть pull request - в большинстве случаев одновременно и ускорение и снижение потребления памяти, но требуются доработки.
### 24.18. Не TCP протокол передачи файлов при репликации {#ne-tcp-protokol-peredachi-failov-pri-replikatsii} ### 24.18. Не TCP протокол передачи файлов при репликации {#ne-tcp-protokol-peredachi-failov-pri-replikatsii}
@ -1805,7 +1810,7 @@ ClickHouse также может использоваться для быстр
[\#6874](https://github.com/ClickHouse/ClickHouse/issues/6874) [\#6874](https://github.com/ClickHouse/ClickHouse/issues/6874)
Артём Вишняков, ВШЭ. Артём Вишняков, ВШЭ. Есть pull request.
### 24.25. Интеграция в ClickHouse функциональности обработки HTTP User Agent {#integratsiia-v-clickhouse-funktsionalnosti-obrabotki-http-user-agent} ### 24.25. Интеграция в ClickHouse функциональности обработки HTTP User Agent {#integratsiia-v-clickhouse-funktsionalnosti-obrabotki-http-user-agent}
@ -1842,9 +1847,9 @@ ucasFL, ICT.
Жанна Зосимова, ВШЭ. Жанна Зосимова, ВШЭ.
Upd. Пока поддержали Arrow как формат ввода-вывода. Upd. Пока поддержали Arrow как формат ввода-вывода.
### 24.30. ClickHouse как графовая СУБД {#clickhouse-kak-grafovaia-subd} ### - 24.30. ClickHouse как графовая СУБД {#clickhouse-kak-grafovaia-subd}
Amos Bird, но его решение слишком громоздкое и пока не open-source. Amos Bird, но его решение слишком громоздкое и пока не open-source. Отменено.
### 24.31. Кореллированные подзапросы {#korellirovannye-podzaprosy} ### 24.31. Кореллированные подзапросы {#korellirovannye-podzaprosy}