Update roadmap

This commit is contained in:
Alexey Milovidov 2020-01-18 19:54:56 +03:00
parent 0ceed79d4e
commit 52f81ce3a5

View File

@ -16,9 +16,11 @@
Изначально делал [Андрей Чулков](https://github.com/achulkov2), ВШЭ, теперь доделывает [Ольга Хвостикова](https://github.com/stavrolia), но сроки немного сдвинуты из-за задачи 25.9. Будем надеятся на реализацию к концу ноября. Впрочем, [Андрей Чулков](https://github.com/achulkov2) скоро сможет помочь её доделать.
Upd. Доделывать будет другой человек. Хотелось бы в Q1, но приоритет не высокий.
### 1.2. Wait-free каталог баз данных.
Делает [Александр Токмаков](https://github.com/tavplubix), первый рабочий вариант в декабре 2019. Нужно для DataLens и Яндекс.Метрики.
Q1. Делает [Александр Токмаков](https://github.com/tavplubix), первый рабочий вариант в декабре 2019. Нужно для DataLens и Яндекс.Метрики.
Манипуляции с каталогом баз данных: запросы CREATE TABLE, DROP TABLE, RENAME TABLE и DATABASE, требуют синхронизации с помощью блокировок. Эта синхронизация становится весьма сложной, так как на неё полагается много внутренних структур данных.
@ -26,7 +28,7 @@
### 1.3. Неблокирующие ALTER.
И полностью immutable куски. Делает [Александр Сапин](https://github.com/alesapin). Готов приступить к задаче в конце ноября 2019. Нужно для Яндекс.Метрики.
Q1. И полностью immutable куски. Делает [Александр Сапин](https://github.com/alesapin). Готов приступить к задаче в конце ноября 2019. Нужно для Яндекс.Метрики.
### 1.4. Нетранзитивные ALTER столбцов.
@ -38,6 +40,8 @@
### 1.6. Полиморфные куски данных.
Компактные куски - Q1, куски в оперативке Q1/Q2.
Делает [Антон Попов](https://github.com/CurtizJ), первый рабочий вариант в декабре. Пререквизит чтобы снизить сложность мелких INSERT, что в свою очередь нужно для 1.12, иначе задача 1.12 не сможет нормально работать. Особенно нужно для Яндекс.Облака.
Данные в таблицах типа MergeTree в ClickHouse хранятся в виде набора независимых "кусков". Внутри куска, каждый столбец, а также индекс, хранится в отдельных файлах. Это сделано для возможности быстрых манипуляций со столбцами (пример - запрос ALTER DROP COLUMN). При вставке данных (INSERT), создаётся новый кусок. Для таблиц с большим количеством столбцов, запросы INSERT с маленьким количеством строк являются неэффективными, так как требуют создания большого количества файлов в файловой системе. Это является врождённой особенностью ClickHouse - одной из первой проблем, с которыми сталкиваются пользователи. Пользователям приходится буферизовывать данные и собирать их в более крупные пачки перед вставкой в ClickHouse.
@ -54,6 +58,8 @@
Делает [Владимир Чеботарёв](https://github.com/excitoon), Altinity. Декабрь 2019.
Q1. Закоммичено, но есть технический долг, который исправляется сейчас.
### 1.9. Использование TTL для прореживания данных.
Будет делать Сорокин Николай, ВШЭ и Яндекс.
@ -86,6 +92,8 @@
### 1.11. Виртуальная файловая система.
Q2.
Нужно для Яндекс.Облака. Делает Александр, Яндекс.Облако, а также Олег Ершов, ВШЭ и Яндекс.
ClickHouse использует для хранения данных локальную файловую систему. Существует сценарий работы, в котором размещение старых (архивных) данных было бы выгодно на удалённой файловой системе. Если файловая система POSIX совместимая, то это не составляет проблем: ClickHouse успешно работает с Ceph, GlusterFS, MooseFS. Также востребованным является сценарий использования S3 (из-за доступности в облаке) или HDFS (для интеграции с Hadoop). Но эти файловые системы не являются POSIX совместимыми. Хотя для них существуют FUSE драйверы, но скорость работы сильно страдает и поддержка неполная.
@ -94,6 +102,8 @@ ClickHouse использует небольшое подмножество фу
### 1.12. Экспериментальная реализация VFS поверх S3 и HDFS.
Q2.
Нужно для Яндекс.Облака. Требует 1.11. Желательно 1.6 и 1.18.
Делает Александр, Яндекс.Облако (сначала часть для S3), а также Олег Ершов, ВШЭ и Яндекс.
@ -103,8 +113,10 @@ ClickHouse использует небольшое подмножество фу
### 1.14. Не писать столбцы, полностью состоящие из нулей.
Антон Попов. Q1/Q2.
В очереди. Простая задача, является небольшим пререквизитом для потенциальной поддержки полуструктурированных данных.
### 1.15. Возможность иметь разный первичный ключ в разных кусках.
Сложная задача, только после 1.3.
@ -130,6 +142,9 @@ ClickHouse использует небольшое подмножество фу
Делает [Николай Кочетов](https://github.com/KochetovNicolai). Финальная стадия разработки. Включение по-умолчанию в конце декабря 2019. Удаление старого кода в начале 2020.
Upd. На данный момент исправляются проблемы с регрессиями производительности в отдельных случаях. Кажется, что все проблемы исправлены.
Включение по-умолчанию в Q1, но остаётся вторая часть задачи по корректному выделению async части.
### 2.2. Инфраструктура событий/метрик/ограничений/квот/трассировки.
В очереди. https://gist.github.com/alexey-milovidov/d62d73222d83b9319dc519cbb13aeff6
@ -152,11 +167,11 @@ ClickHouse использует небольшое подмножество фу
### 2.7. Нормализация Context.
В очереди.
В очереди. Нужно для YQL.
### 2.8. Декларативный парсер запросов.
Низкий приоритет. Задачу хочет сделать [Иван Лежанкин](https://github.com/abyss7) в свободное время, но пока ничего нет.
Средний приоритет. Нужно для YQL.
### 2.9. Логгировние в format-стиле.
@ -193,7 +208,7 @@ ClickHouse использует небольшое подмножество фу
### 3.1. Перенос документации по функциям в код.
Требует 2.12 и 2.13.
Требует 2.12 и 2.13. Хотим в Q1/Q2, средний приоритет.
### 3.2. Перенос однородных частей документации в код.
@ -201,7 +216,7 @@ ClickHouse использует небольшое подмножество фу
### 3.3. Исправить катастрофически отвратительно неприемлемый поиск по документации.
[Иван Блинков](https://github.com/blinkov/) - очень хороший человек. Сам сайт документации основан на технологиях, не удовлетворяющих требованиям задачи, и эти технологии трудно исправить.
[Иван Блинков](https://github.com/blinkov/) - очень хороший человек. Сам сайт документации основан на технологиях, не удовлетворяющих требованиям задачи, и эти технологии трудно исправить. Задачу будет делать первый встретившийся нам frontend разработчик, которого мы сможем заставить это сделать.
### 3.4. + Добавить японский язык в документацию.
@ -212,7 +227,7 @@ ClickHouse использует небольшое подмножество фу
### 4.1. Уменьшение числа потоков при распределённых запросах.
[Никита Лапков](https://github.com/laplab), весна 2020.
[Никита Лапков](https://github.com/laplab), весна 2020. Upd. Есть прототип.
### 4.2. Спекулятивное выполнение запросов на нескольких репликах.
@ -231,7 +246,7 @@ ClickHouse использует небольшое подмножество фу
### 4.4. Ограничение сетевой полосы при репликации.
Дмитрий Григорьев, ВШЭ.
Дмитрий Григорьев, ВШЭ. Нужно для Метрики.
### 4.5. Возможность продолжить передачу куска данных при репликации после сбоя.
@ -251,19 +266,20 @@ ClickHouse использует небольшое подмножество фу
### 5.1. Разделение задач на более мелкие куски в clickhouse-copier.
Нужно для Метрики, в очереди, но исполнитель не назначен, есть шанс успеть в 2019.
Q1. Нужно для Метрики, в очереди. Никита Михайлов.
### 5.2. Автонастройка лимита на оперативку и размера кэшей.
### 5.3. Встроенная ручка для Prometheus и, возможно, Solomon.
### 5.3. + Встроенная ручка для Prometheus.
Простая задача. https://github.com/Vdimir
Сделано. https://github.com/Vdimir
### 5.4. Opt-in сообщать в клиенте, если вышла новая версия.
### 5.5. LTS релизы.
### 5.5. + LTS релизы.
Требует 7.5. Задачу хочет Метрика, Облако, БК, Маркет и Altinity. Первой LTS версией уже стала версия 19.14.
Метрика, БК, Маркет уже используют более свежие версии чем LTS.
## 6. Инструментирование.
@ -271,15 +287,15 @@ ClickHouse использует небольшое подмножество фу
### 6.1. Исправления сэмплирующего профайлера запросов.
Михаил Филимонов, Altinity. Ноябрь 2019. Сделано.
Осталось ещё проверить работоспособность профайлера в первом потоке (что важно для INSERT).
Осталось ещё проверить работоспособность профайлера в первом потоке (что важно для INSERT). Иван Лежанкин. Q1.
### 6.2. Добавление memory profiler.
Сравнительно простая задача, но только для опытных разработчиков. Нужна всем.
Сравнительно простая задача, но только для опытных разработчиков. Нужна всем. Иван Лежанкин. Q1.
### 6.3. Учёт оперативки total расширить не только на запросы.
Исправление долгоживущей проблемы с дрифтом учёта оперативки. Нужна для Метрики и БК.
Исправление долгоживущей проблемы с дрифтом учёта оперативки. Нужна для Метрики и БК. Иван Лежанкин. Q1.
### 6.4. Поддержка perf events как метрик запроса.
@ -291,11 +307,11 @@ ClickHouse использует небольшое подмножество фу
Требует 2.2.
### 6.6. Стек трейс для любых исключений.
### 6.6. + Стек трейс для любых исключений.
Сейчас есть стек трейс для почти всех, но не всех исключений. Требует 7.4.
### 6.7. Таблица system.stack_trace.
### 6.7. + Таблица system.stack_trace.
Сравнительно простая задача, но только для опытных разработчиков.
@ -327,7 +343,7 @@ ClickHouse использует небольшое подмножество фу
Сейчас включено только при сборке с clang, но продакшен сборка использует gcc.
Требует 7.2 и, возможно, 7.1 (только в случае новой версии ICU).
### 7.5. Начать публиковать LTS релизы.
### 7.5. + Начать публиковать LTS релизы.
[Александр Сапин](https://github.com/alesapin).
@ -364,11 +380,17 @@ UBSan включен в функциональных тестах, но не в
При сборке с clang, -Weverything уже включено. Но в gcc есть уникальные warning-и, отсутствующие в clang.
Сделал Wolf Kreuzerkrieg.
### 7.14. Альтернатива для readline и libedit.
### 7.14. + Альтернатива для readline и libedit.
Тагир Кускаров, ВШЭ. Посмотрим на https://github.com/AmokHuginnsson/replxx
Подключение replxx вместо readline сделал Иван Лежанкин.
Для ввода запросов в интерактивном режиме в клиенте командной строки clickhouse-client используется библиотека readline или libedit.
### 7.14.1. Улучшение возможностей интерактивного режима clickhouse-client.
Тагир Кускаров, ВШЭ.
Upd. В рамках данной задачи добавляем подстветку синтаксиса и исправление проблем со вставкой больших запросов.
Для ввода запросов в интерактивном режиме в клиенте командной строки clickhouse-client использовалась библиотека readline или libedit.
Библиотеки readline и libedit обладает следующими недостатками:
- (исправлено в новых версиях readline) Очень низкая производительность вставки больших кусков текста. Вставка каждого следующего символа имеет сложность O(n = количество предыдущих символов) и при вставке 1 МБ текста, скорость падает до десятков байт в секунду.
@ -407,11 +429,13 @@ UBSan включен в функциональных тестах, но не в
Уже давно собираются универсальные tgz пакеты, но по нелепой случайности из них исчез install скрипт.
[Александр Сапин](https://github.com/alesapin). Может делегировать эту задачу кому угодно.
Upd. Сделано всё кроме инструкции на сайте. Для этого требуется создать директории testing/stable/prestable на repo.yandex.ru. Внезапно оказалось, что человек, отвечающий за это, в отпуске, и он не отвечает на вопрос, кто его заместитель. Q1.
### 7.18.1. Доделать бинарники под Mac.
Уже есть автосборка бинарников под Mac на каждый коммит и PR, но с недостатками.
[Иван Лежанкин](https://github.com/abyss7). Требует 7.1, 7.2. Рекомендуется 7.14. Сейчас не хватает по крайней мере SSL и ICU. Нужно для Яндекс.Облака.
Upd. Сделано SSL. Ориентируемся в Q1, но приоритет средний и может потеряться.
### 7.18. Поместить ссылку на собранные бинарники под Mac на сайт.
@ -480,6 +504,8 @@ Fuzzing тестирование - это тестирование случай
Также можно сделать функции с детерминированным генератором случайных чисел (аргументом передаётся seed) для воспроизводимости тестовых кейсов.
Upd. Сергей Штыков сделал функцию `randomPrintableASCII`.
### 7.24. Fuzzing лексера и парсера запросов; кодеков и форматов.
Андрей Некрашевич, ВШЭ.
@ -496,6 +522,9 @@ Fuzzing тестирование - это тестирование случай
Затем, возможно, [Иван Лежанкин](https://github.com/abyss7). Но сейчас приостановлено, так как Максим из YT должен исправить регрессию производительности в анализе индекса.
Максим из YT сказал, что сделает это после нового года.
Максим из YT сказал, что "мы планируем в январе добиться".
Нужно для CHYT и YQL.
### 7.26. Побайтовая идентичность репозитория с Аркадией.
@ -529,11 +558,11 @@ Fuzzing тестирование - это тестирование случай
### 7.33. Выкладывать патч релизы в репозиторий автоматически.
[Александр Сапин](https://github.com/alesapin). Может делегировать эту задачу кому угодно.
В очереди. Иван Лежанкин.
### 7.34. Бэкпортировать bugfix автоматически.
[Александр Сапин](https://github.com/alesapin). Может делегировать эту задачу кому угодно.
В очереди. Иван Лежанкин.
### 7.35. Начальные правила для авто-merge.
@ -564,6 +593,8 @@ Altinity.
[Ольга Хвостикова](https://github.com/stavrolia).
Уменьшение числа stream-ов сделано, а вот правильная поддержка диапазонов - нет. Будем надеяться на Q1/Q2.
### 8.4. Унификация File, HDFS, S3 под URL.
### 8.5. + Аутентификация в S3.
@ -579,7 +610,7 @@ Altinity.
В ядрах 2.6 отсутствует один системный вызов, который библиотека hdfs3 использует без необходимости.
Сделал Amos Bird.
### 8.8. Поддержка виртуальных столбцов с именем файла и путём.
### 8.8. + Поддержка виртуальных столбцов с именем файла и путём.
[Ольга Хвостикова](https://github.com/stavrolia).
@ -611,10 +642,26 @@ Altinity.
### 8.16. Поддержка формата Avro.
Павел Круглов, ВШЭ и Яндекс.
Andrew Onyshchuk. Есть pull request. Q1.
Формат Apache Avro является компактным структурированным построчным бинарным форматом данных с внешней схемой. Этот формат часто используется совместно с Kafka и поддержка его в качестве одного из форматов ввода-вывода в ClickHouse является востребованной пользователями.
### 8.16.1. Поддержка формата JSONEachRow, засунутого в массив.
Павел Круглов, ВШЭ и Яндекс.
### 8.16.2. Поддержка формата Thrift.
Павел Круглов, ВШЭ и Яндекс.
### 8.16.3. Поддержка формата MsgPack.
Павел Круглов, ВШЭ и Яндекс.
### 8.16.4. Формат Regexp.
Павел Круглов, ВШЭ и Яндекс.
### 8.17. ClickHouse как MySQL реплика.
Ильяс Адюгамов, ВШЭ.
@ -642,6 +689,7 @@ Maxim Fedotov, Wargaming + Yuri Baranov, Яндекс.
### 8.21. Поддержка произвольного количества языков для имён регионов.
Нужно для БК. Декабрь 2019.
В декабре для БК сделан минимальный вариант этой задачи.
### 8.22. Поддержка синтаксиса для переменных в стиле MySQL.
@ -689,7 +737,7 @@ ClickHouse предоставляет возможность обратитьс
### 10.4. Словарь из YDB (KikiMR).
Нужно для Метрики, а делать будет таинственный незнакомец из команды KikiMR (под вопросом).
Нужно для Метрики, а делать будет таинственный незнакомец из команды KikiMR (под вопросом). Таинственный незнакомец не подтверждает, что он будет делать эту задачу.
### 10.5. Закрытие соединений и уменьшение числа соединений для MySQL и ODBC.
@ -707,15 +755,15 @@ ClickHouse предоставляет возможность обратитьс
### 10.9. Уменьшение блокировок для cache словарей за счёт одновременных запросов одного и того же.
Нужно для БК, но мотивация задачи находится под вопросом, так как есть рабочее предположение о том, что данная задача не устраняет причину проблемы.
Никита Михайлов. Q1. Нужно для БК, но мотивация задачи находится под вопросом, так как есть рабочее предположение о том, что данная задача не устраняет причину проблемы.
### 10.10. Возможность использования старых значений из cache словаря пока они перезапрашиваются.
Нужно для БК и Метрики.
Никита Михайлов. Q1. Нужно для БК и Метрики.
### 10.11. Возможность исключительно асинхронных запросов в cache словарях.
Нужно для БК и Метрики. Требует 10.10.
Никита Михайлов. Q1. Нужно для БК и Метрики. Требует 10.10.
### 10.12. Layout direct для словарей.
@ -731,7 +779,7 @@ ClickHouse предоставляет возможность обратитьс
### 10.16. Словари на локальном SSD.
Никита Васильев, ВШЭ и Яндекс.
Никита Васильев, ВШЭ и Яндекс. Есть pull request.
Реализовать в ClickHouse специализированный движок таблиц, подходящий для быстрых key-value запросов и оптимизированный для расположения данных на SSD. Это может быть: реализация на основе RocksDB; сериализованные RowBinary данные с индексом в оперативке; секретная очень эффективная структура данных, о которой я расскажу.
@ -778,7 +826,7 @@ ClickHouse предоставляет возможность обратитьс
### 11.10. Преднастроенные HTTP handlers для запросов.
zhang2014
zhang2014, есть pull request.
Возможность описать в конфигурационном файле handler (путь в URL) для HTTP запросов к серверу, которому соответствует некоторый параметризованный запрос. Пользователь может вызвать этот обработчик и не должен передавать SQL запрос.
@ -787,15 +835,18 @@ zhang2014
### 12.1. Role Based Access Control.
[Виталий Баранов](https://github.com/vitlibar). Финальная стадия разработки, рабочая версия в декабре 2019.
[Виталий Баранов](https://github.com/vitlibar). Финальная стадия разработки, рабочая версия в начале февраля 2019.
Q1. Сейчас сделаны все интерфейсы в коде и запросы, но не сделаны варианты хранения прав кроме прототипа.
### 12.2. Управление пользователями и правами доступа с помощью SQL запросов.
[Виталий Баранов](https://github.com/vitlibar). Финальная стадия разработки, рабочая версия в декабре 2019.
Q1.
### 12.3. Подключение справочника пользователей и прав доступа из LDAP.
[Виталий Баранов](https://github.com/vitlibar). Требует 12.1.
Q1/Q2.
### 12.4. Подключение IDM системы Яндекса как справочника пользователей и прав доступа.
@ -823,6 +874,7 @@ zhang2014
### 13.3. Пулы ресурсов.
Требует 13.2 или сможем сделать более неудобную реализацию раньше.
Обсуждается вариант неудобной реализации. Пока средний приоритет, целимся на Q1/Q2.
## 14. Диалект SQL.
@ -830,9 +882,12 @@ zhang2014
### 14.1. Исправление семантики CAST для Nullable.
Нужно для DataLens. А также для внедрения в BI инструмент Looker.
Павел Потёмкин, ВШЭ.
### 14.2. Поддержка WITH для подзапросов.
Павел Потёмкин, ВШЭ.
### 14.3. Поддержка подстановок для множеств в правой части IN.
### 14.4. Поддержка подстановок для идентификаторов (имён) в SQL запросе.
@ -845,8 +900,12 @@ zhang2014
### 14.6. Глобальный scope для WITH.
Павел Потёмкин, ВШЭ.
### 14.7. Nullable для WITH ROLLUP, WITH CUBE, WITH TOTALS.
Павел Потёмкин, ВШЭ.
Простая задача.
### 14.8. Модификаторы DISTINCT, ORDER BY для агрегатных функций.
@ -893,18 +952,23 @@ zhang2014.
### 14.18. UNION DISTINCT и возможность включить его по-умолчанию.
Павел Потёмкин, ВШЭ.
Для BI систем.
### 14.19. Совместимость парсера типов данных с SQL.
Павел Потёмкин, ВШЭ.
Для BI систем.
### 14.20. Позиционные аргументы для GROUP BY и ORDER BY.
Павел Потёмкин, ВШЭ.
Тривиально и используется многими системами, но не входит в стандарт SQL.
### 14.21. Приведение типов для IN (подзапрос) и для JOIN.
Павел Потёмкин, ВШЭ.
## 15. Улучшение поддержки JOIN.
@ -912,6 +976,15 @@ zhang2014.
Артём Зуйков. Сейчас merge JOIN включается вручную опцией и всегда замедляет запросы. Хотим, чтобы он замедлял запросы только когда это неизбежно.
Кстати, смысл merge JOIN появляется только совместно с 15.2 и 15.3.
Q1.
### 15.1.1. Алгоритм two-level merge JOIN.
Александр Кузьменков. В очереди.
### 15.1.2. Тестирование реализации JOIN в Greenplum.
В очереди.
### 15.2. Прокидывание условий в OUTER JOIN.
@ -934,7 +1007,7 @@ zhang2014.
## 16. Типы данных и функции.
### 16.1. DateTime64.
### 16.1. + DateTime64.
Василий Немков, Altinity, декабрь 2019.
@ -964,6 +1037,8 @@ ClickHouse не является geospatial СУБД. Тем не менее, в
Похожая, но более сложная задача, которую ClickHouse пока не умеет решать - определение полигона среди множества полигонов, в которые попадают точки. Для примера: определение района города по географическим координатам. Для решения этой задачи нужно будет реализовать поддержку словарей с полигонами, в которых данные проиндексированы для быстрого поиска.
Upd. Андрей сделал прототип интерфейса и реализацию-заглушку внутри него.
### 17.2. GIS типы данных и операции.
Алексей Коряков, Алексей Илюхов, ВШЭ, Яндекс.Карты.
@ -1070,13 +1145,15 @@ Hold. Полезно для заказчиков внутри Яндекса, н
Начинал Олег Ершов, доделывает Никита Михайлов, помогает [Александр Кузьменков](https://github.com/akuzm). Готово.
### 21.1.1. Избавление от лишнего копирование при параллельном парсинге форматов, если возможен mmap файла целиком.
### 21.2. Параллельное форматирование форматов.
После 21.1, предположительно Никита Михайлов. Задача сильно проще чем 21.1.
### 21.3. Исправление низкой производительности анализа индекса в случае большого множества в секции IN.
Нужно всем (Zen, БК, DataLens...) Пока ещё не выбран исполнитель.
Нужно всем (Zen, БК, DataLens, TestEnv...). Антон Попов, Q1/Q2.
### 21.4. Использование ORDER BY ключа для оптимизации GROUP BY и DISTINCT.
@ -1091,12 +1168,14 @@ Hold. Полезно для заказчиков внутри Яндекса, н
### 21.5. Распараллеливание INSERT при INSERT SELECT, если это необходимо.
[Vxider](https://github.com/Vxider), ICT
Есть pull request.
### 21.6. Уменьшение числа потоков для SELECT в случае тривиального INSERT SELECT.
### 21.7. Кэш результатов запросов.
[Achimbab](https://github.com/achimbab).
Есть pull request.
### 21.8. Взаимная интеграция аллокатора и кэша.
@ -1131,6 +1210,8 @@ Amos Bird.
- Вынесение любых функций наружу any, anyLast.
- При GROUP BY по transform или if по строкам, замена строк на Enum.
Сделана замена цепочек if на multiIf, но внезапно оказалось, что это является не оптимизацией, а наоборот.
### 21.12. Алгебраические оптимизации запросов.
Руслан Камалов, Михаил Малафеев, Виктор Гришанин, ВШЭ
@ -1200,9 +1281,9 @@ Constraints позволяют задать выражение, истиннос
В ByteDance есть готовая реализация, но они её боятся из-за, возможно, низкого качества кода.
### 21.21. Чтение больших файлов с помощью mmap.
### 21.21. + Чтение больших файлов с помощью mmap.
Тривиально, почти всё готово.
Сделан вариант, но достаточно топорный. Без тестирования в продакшене включать по-умолчанию нельзя.
### 21.22. Userspace page cache.
@ -1211,6 +1292,7 @@ Constraints позволяют задать выражение, истиннос
### 21.23. Ускорение работы с вторичными индексами.
zhang2014.
Есть pull request.
## 22. Долги и недоделанные возможности.
@ -1219,9 +1301,9 @@ zhang2014.
Нужно для Яндекс.Облака. Сделал Алексей Миловидов.
### 22.2. Убрать возможность изменить настройки в native протоколе в случае readonly.
### 22.2. + Убрать возможность изменить настройки в native протоколе в случае readonly.
Алексей Миловидов или [Виталий Баранов](https://github.com/vitlibar).
N.Vartolomei.
### 22.3. Защита от абсурдно заданных пользователем кодеков.
@ -1229,25 +1311,27 @@ zhang2014.
### 22.4. Исправление оставшихся deadlocks в табличных RWLock-ах.
Александр Казаков. Нужно для Яндекс.Метрики и Datalens.
Александр Казаков. Нужно для Яндекс.Метрики и Datalens. Задача постепенно тащится и исправлениями в соседних местах стала менее актуальна.
В Q1 будет сделана или отменена с учётом 1.2. и 1.3.
### 22.5. Исправление редких срабатываний TSan в stress тестах в CI.
### 22.5. + Исправление редких срабатываний TSan в stress тестах в CI.
Александр Казаков.
### 22.6. Изменение только DEFAULT в ALTER TABLE может поменять тип столбца.
### 22.7. Row-Level Security не работает в случае наличия в запросе IN подзапросов.
### 22.7. + Row-Level Security не работает в случае наличия в запросе IN подзапросов.
[Виталий Баранов](https://github.com/vitlibar). Нужно для Метрики.
Нужно для Метрики. Иван Лежанкин.
### 22.8. Исправить десериализацию параметров для параметризованных запросов.
### 22.8. + Исправить десериализацию параметров для параметризованных запросов.
Хотел исправить Василий Немков, Altinity, но есть маленькие затруднения, наверное переделает Алексей Миловидов.
### 22.9. Разобраться с десериализацией массивов со значениями по-умолчанию в Protobuf формате в случае protobuf 3.
[Виталий Баранов](https://github.com/vitlibar). Возможно, это - фундаментальная проблема и следует её только документировать.
Кажется, отменяем, но пока ещё не всё ясно.
### 22.10. Исправление дрифта при отслеживании потребления памяти запросами.
@ -1278,11 +1362,10 @@ zhang2014.
Altinity.
### 22.16. Исправление низкой производительности кодека DoubleDelta.
### 22.16. + Исправление низкой производительности кодека DoubleDelta.
Василий Немков, Altinity - в процессе.
Мы считаем важным, что код в ClickHouse содержит разумные оптимизации, основанные на анализе производительности. Но иногда бывают досадные исключения.
Можно считать, что сделано, хотя отсутствие SIMD оптимизаций для variable length кодеков - это ужасно.
### 22.17. Консистентно работающий POPULATE для MaterializedView.
@ -1331,14 +1414,14 @@ https://github.com/ClickHouse/ClickHouse/issues/2655
Altinity.
### 22.29. Уязвимость DDL для словарей executable.
### 22.29. + Уязвимость DDL для словарей executable.
[Александр Сапин](https://github.com/alesapin)
## 23. Default Festival.
### 23.1. Включение minimalistic_part_header в ZooKeeper.
### 23.1. + Включение minimalistic_part_header в ZooKeeper.
Сильно уменьшает объём данных в ZooKeeper. Уже год в продакшене в Яндекс.Метрике.
Алексей Миловидов, ноябрь 2019.
@ -1367,13 +1450,13 @@ Altinity.
Просто аккуратно включить.
### 23.8. Включение оптимизации VALUES.
### 23.8. + Включение оптимизации VALUES.
Просто аккуратно включить.
### 23.9. Включение Processors.
[Николай Кочетов](https://github.com/KochetovNicolai).
Q1. [Николай Кочетов](https://github.com/KochetovNicolai).
### 23.10. Включение mlock бинарника.
@ -1578,12 +1661,16 @@ ucasFL, ICT.
Алгоритмы min-hash и sim-hash позволяют вычислить для текста несколько хэш-значений таких, что при небольшом изменении текста, по крайней мере один из хэшей не меняется. Вычисления можно реализовать на n-грамах и словарных шинглах. Предлагается добавить поддержку этих алгоритмов в виде функций в ClickHouse и изучить их применимость для задачи нечёткого поиска полудубликатов.
Есть pull request, есть что доделывать.
### 24.28. Другой sketch для квантилей.
Похоже на quantileTiming, но с логарифмическими корзинами.
Похоже на quantileTiming, но с логарифмическими корзинами. См. DDSketch.
### 24.29. Поддержка Arrow Flight.
Жанна Зосимова, ВШЭ.
### 24.30. ClickHouse как графовая СУБД.
Amos Bird, но его решение слишком громоздкое и пока не open-source.
@ -1640,9 +1727,9 @@ Amos Bird, но его решение слишком громоздкое и п
### 25.9. Подготовка докладчиков: khvostikao, ilezhankin, nikitamikhailov, akuzm и другие.
[Ольга Хвостикова](https://github.com/stavrolia), [Иван Лежанкин](https://github.com/abyss7), Никита Михайлов, [Александр Кузьменков](https://github.com/akuzm).
[Ольга Хвостикова](https://github.com/stavrolia), [Иван Лежанкин](https://github.com/abyss7), Никита Михайлов, [Александр Кузьменков](https://github.com/akuzm), Артём Зуйков.
Уже готовые докладчики: Алексей Миловидов, [Николай Кочетов](https://github.com/KochetovNicolai), [Александр Сапин](https://github.com/alesapin).
Получаем минимум 7 докладчиков в 2020 году.
Получаем минимум 8 докладчиков в 2020 году.
### 25.10. Митапы в России и Беларуси: Москва x2 + митап для разработчиков или хакатон, Санкт-Петербург, Минск, Нижний Новгород, Екатеринбург, Новосибирск и/или Академгородок, Иннополис или Казань.
@ -1650,7 +1737,7 @@ Amos Bird, но его решение слишком громоздкое и п
### 25.11. Митапы зарубежные: восток США (Нью Йорк, возможно Raleigh), возможно северо-запад (Сиэтл), Китай (Пекин снова, возможно митап для разработчиков или хакатон), Лондон.
[Иван Блинков](https://github.com/blinkov/) - организация
[Иван Блинков](https://github.com/blinkov/) - организация. Две штуки в США запланированы.
### 25.12. Статья "научная" - про устройство хранения данных и индексов или whitepaper по архитектуре. Есть вариант подать на VLDB.