Last active
September 30, 2021 01:21
-
-
Save alexey-milovidov/6ab4df223d4c9a8a2e78b34486864eaa to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| + - сделано хотя бы в master | |
| * - в процессе | |
| Доработки форматов. | |
| + Protobuf | |
| + Parquet | |
| + Avro | |
| + Настраиваемое поведение CSV: separator. | |
| + Настраиваемое поведение CSV: empty_as_null, null_literal_as_null. | |
| + Template формат. | |
| + Regexp/TrashSQL формат. | |
| + Поддержка вычислимых default выражений. | |
| + Ускорение slow-path формата VALUES с помощью автоматического создания шаблонов. | |
| + Парсинг DateTime в виде unix timestamp без кавычек, без переключения на slow path. | |
| + Парсинг и форматирование (под опцией) DateTime в полном ISO-8601 с указанием UTC/Z/+-NNNN. | |
| Возможность указания custom формата для парсинга DateTime и Date. | |
| * Возможность вывода типов по блоку данных - для более простого использования clickhouse-local. | |
| + Возможность параллельного парсинга форматов. | |
| Запретить чтение значений типа AggregateFunction по-умолчанию и добавить настройку. | |
| + Возможность вставки значений типа AggregateFunction в виде кортежа значений аргументов, а не бинарного дампа состояния, под настройкой. | |
| + Cache словари на SSD с созданием key -> offset индекса. | |
| * Возможность ввода/вывода Nested структур данных с сохранением вложенности в JSON, XML, Protobuf. | |
| Доработки словарей. | |
| + Перевести тесты словарей на интеграционные тесты. | |
| + Частичная перезагрузка словарей при их обновлении. | |
| + Создание словарей DDL запросом. | |
| + Поддержка массивов в словарях. | |
| + Поддержка чтения NULL в словарях. | |
| + Возможность (под опцией) строить обратное отображение в памяти и реализовать функции dictGetChildren, dictGetChild для injective случая. | |
| + Возможность зарегистрировать некоторые функции под пользовательскими именами. | |
| * Подключение Redis, Couchbase, Cassandra. | |
| Доработки внешних баз данных. | |
| + Интеграционные тесты. | |
| + Поддержать передачу условий, содержащих constant expressions, а не только констант. | |
| + Поддержать передачу условий с IN, LIKE. | |
| Движок таблиц MongoDB. | |
| - Табличная функция yt. | |
| + Табличная функция url (пример - чтение из S3). | |
| * Refreshable materialized views из внешних баз данных. | |
| + Подписка на репликацию MySQL с помощью libslave. | |
| Доработки интерфейсов. | |
| + Возможность интерактивного ввода пароля для clickhouse-client. | |
| + Возможность отправить запрос POST-ом при наличии внешних данных по HTTP. | |
| + Возможность преобразовывать данные во время INSERT (INSERT SELECT FROM input(...)) | |
| Возможность использовать ALIAS столбцы при INSERT. | |
| + Подсказки на основе edit distance. | |
| + Autocomplete в clickhouse-client. | |
| + Подключение LDAP для справочника пользователей. | |
| Асинхронный протокол работы сервера. | |
| + Поддержка MySQL wire protocol. | |
| Хранение данных. | |
| + O_DIRECT для мержей. | |
| + Оптимизация алгоритма выбора кусков для мержа. | |
| + Встраивание буферизации непосредственно в MergeTree. | |
| + Custom и stackable форматы сжатия для каждого стобца. | |
| + Хранение старых кусков на другом разделе. | |
| + Хранение данных на нескольких разделах (нарезка больших кусков по разделам). | |
| + Пережатие старых данных более сильным алгоритмом в фоне. | |
| + Адаптивный index_granularity (по байтам, а не только по числу строк). | |
| + Индексные структуры данных для пропуска данных. | |
| + Кодирование строк с помощью словаря и частичная обработка запроса без подстановки значений словаря. Скорее всего part-local словари. | |
| + Добавление понятия мутаций в ReplicatedMergeTree: ALTER UPDATE/DELETE. | |
| + ALTER RENAME. | |
| + Возможность изменения первичного ключа если оно не меняет порядок сортировки. | |
| * Версионность состояний агрегатных функций для обратной совместимости. | |
| Идентификация состояний агрегатных функций отдельно от самих агрегатных функций, чтобы понимать, что некоторые агрегатные функции могут использовать состояние друг друга: например, в функцию sumMerge можно передать состояние функции sumIf, а не только sum. | |
| Полноценная поддержка DELETE с помощью записи и репликации дельт в виде rownumber удалённых строк внутри part и множества удалённых первичных ключей. | |
| + DROP PARTITION не должен ходить на реплику под пользователем default. | |
| + Хранение таблицы в нескольких физических представлениях. | |
| + Возможность включить fsync для больших кусков или при удалении составляющих кусков. | |
| + CREATE TABLE ... OR REPLACE; | |
| + TRUNCATE TABLE. | |
| + Атомарный перенос или копирование партиции из другой таблицы с такой же структурой. | |
| + ATTACH PARTITION должен уметь прикреплять на всех репликах, где идентичные данные есть локально. | |
| + TTL для данных, в том числе по отдельным столбцам. | |
| Типы данных. | |
| + Доделать мелочи с UUID. | |
| + Добавить Decimal (Decimal64, Decimal128). | |
| + DateTimeWithMilli(?)seconds, сохраняющий значение в два файла. | |
| Репликация и шардирование. | |
| Включить синхронную вставку в Distributed таблицах по-умолчанию. | |
| Переделать ReplicatedMergeTree. | |
| + Переписать библиотеку libzookeeper. | |
| + Исправить дребезг в сообщениях There are 10000 active watches. | |
| + Возможность указания имени кластера в функции, аналогичной remote: SELECT ... FROM cluster(name, database, table). | |
| Облачные таблицы. | |
| + Возможность включить использование ключа шардирования для исключения шардов при распределённых SELECT-ах. | |
| + Возможность использовать кворумную запись без линеаризуемости. | |
| + Возможность вручную записать один и тот же блок на несколько реплик (не выбрасывать блок, если на реплике его ещё не было). | |
| + Исправить разрастание очереди при длительной недоступности реплики; режим восстановления реплики, если не хватает лога. | |
| + Атомарное удаление таблиц типа ReplicatedMergeTree. | |
| Режим восстановления сервера путём клонирования всех БД и таблиц с другого сервера. | |
| - Правильная утилита копирования данных между разными кластерами ZK или директориями. | |
| Конвейер выполнения и анализ запроса. | |
| + Использование индекса для (tuple) IN ... | |
| + Использование индекса для ... IN (subquery) | |
| + Пробрасывание WHERE во внутрь подзапросов и VIEW. | |
| + Возможность использования подзапросов в VIEW. | |
| + Использование первичного ключа при ORDER BY monotonic(PK) | |
| Использование первичного ключа при GROUP BY injective(subset(PK)). | |
| + WITH ROLLUP, WITH CUBE. | |
| + Возможность использования нескольких потоков для INSERT при INSERT SELECT. | |
| - Триггеры ON INSERT как более очевидная альтернатива MATERIALIZED VIEW. | |
| + Переделать UNION ALL. | |
| + Приведение типов для UNION ALL. | |
| + Приведение типов для промежуточных результатов Distributed запросов. | |
| + Добавить getHeader в каждый stream. | |
| + Агрегация по пустоте должна отдавать одну строчку с результатом. | |
| + Поддержка constexpr в LIMIT, LIMIT BY. | |
| + Модификатор WITH TIES для LIMIT с ORDER BY. | |
| + Модификатор FILL для ORDER BY - заполнить промежуточные значения. | |
| + Синтаксис TOP N как альтернатива LIMIT. Синтаксис LIMIT OFFSET. | |
| Запрос EXPLAIN. | |
| + Перейти с pull/push схемы работы конвейера на управляемую снаружи схему. | |
| + Избавиться от prerequisites для функций; переработка реализации лямбда функций. | |
| * Декларативные сигнатуры функций. | |
| p2p передача данных для GLOBAL подзапросов. | |
| + Кодогенерация для простых выражений с помощью LLVM. | |
| + Merge join. | |
| shuffle данных для выполнения сложных JOIN вместо broadcast. | |
| Кэширование промежуточных данных выполнения запроса. | |
| - Взаимная интеграция аллокатора памяти и кэша. | |
| * Переделать ExpressionAnalyzer. | |
| + Short-curcuit выполнение некоторых функций. | |
| * Разделение блока на несколько в случае больших ARRAY JOIN и ALL JOIN. | |
| + Ускорить FINAL путём распараллеливания. | |
| Многоступенчатый PREWHERE. | |
| Пробрасывание утверждений о данных в блоки данных. Для примера, в блоке данных может быть написано, что данные в таком-то диапазоне - чтобы избежать лишних вычислений при фильтрации. | |
| * Возможность полноценной работы с Nested структурами данных: SELECT nested, nested.*, arrayMap(..., nested)... | |
| Избавиться от проверки типов, когда конвейер запроса уже построен (функции должны предоставлять готовый std::function, внутри которого все типы известны). | |
| Избавиться от поиска имён, когда конвейер запроса уже построен. | |
| + Window функции. | |
| Сборка и инфраструктура. | |
| - Swappable бинарники. | |
| + По-нормальному протестировать jemalloc vs. tcmalloc. | |
| + Попробовать lfalloc из Аркадии с модификациями. | |
| + Использовать libmariadb. | |
| + Использовать libressl. | |
| + Работа над ODBC драйвером. | |
| + Публикация артефактов сборки и логов сборки в S3. | |
| + Контролируемая нами инфраструктура CI. | |
| + Добавить файлы для Uncrustify. | |
| Интроспекция, мониторинг и ограничение ресурсов. | |
| + Отслеживание user/system времени CPU в каждом потоке. | |
| + Отслеживание IO и IOPS в каждом потоке. | |
| + Отслеживание network bytes в каждом потоке. | |
| + ProfileEvents в каждом потоке. | |
| + Писать общий лог в системную таблицу. | |
| + Писать идентификатор запроса в каждой строке лога, которая относится к запросу. | |
| + Возможность отправлять лог выполнения запроса на клиент. | |
| + Добавить query_thread_log в дополнение к query_log. | |
| + Писать системные метрики в системную таблицу. | |
| * Иерархические пулы ресурсов. | |
| + Таблицы system.users, system.quotas. | |
| Метрики типа квантилей времени в дополнение к ProfileEvents и CurrentMetrics. | |
| Отслеживание времени выполнения функций и запись в системную таблицу. | |
| Трейспоинты. | |
| Документация. | |
| + Генератор тестовых данных. | |
| Whitepaper по ClickHouse для того, чтобы другие могли ссылаться. | |
| * Обновить бенчмарки MonetDB и MemSQL. | |
| * Добавить бенчмарки Baidu Palo. | |
| Перенос документации внутрь кода и реализация генератора .md файлов на её основе. | |
| FAQ по ClickHouse. | |
| Функции. | |
| + Агрегатная функция для гистограмм. | |
| + Упрощенный и более эффективный вариант функции sequenceMatch, sequenceCount. | |
| + Функции преобразования base64. | |
| + Функция округления до явно заданного списка границ. | |
| + Функции создания и обновления состояния агрегатной функции по одному кортежу аргументов. | |
| Поддержка NULL в функции transform. | |
| Поддержка массивов в функции transform. | |
| + Функция extract для компонентов Date, DateTime. | |
| Функции makeDate, makeDateTime. | |
| Функции changeYear, changeMonth, ... | |
| + Функция format для вставки значений в строку-шаблон. | |
| + Функция форматирования Date, DateTime с пользовательским форматом. | |
| + Функция парсинга Date, DateTime в неизвестном формате. | |
| * Комбинатор агрегатных функций Distinct. | |
| Прочие оптимизации. | |
| + Per-column radix sort для сортировки. | |
| + Ускорить LZ4_decompress_fast. | |
| Использование статических huge pages. | |
| + Встраивание коротких строк во внутрь хэш-таблиц по их size-class-ам при агрегации. | |
| Попробовать разделить key и mapped в хэш-таблицах на небольшие группы. | |
| - Эксперименты с prefetch при GROUP BY. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment