Конфигурация движка выполнения
DataStore может выполнять операции с использованием различных бэкэндов. В этом руководстве рассматривается, как настраивать и оптимизировать выбор движка выполнения.
Доступные движки
| Engine | Описание | Лучше всего подходит для |
|---|---|---|
auto | Автоматически выбирает оптимальный движок для каждой операции | Общее использование (по умолчанию) |
chdb | Выполняет все операции только через ClickHouse SQL | Крупные наборы данных, агрегации |
pandas | Выполняет все операции только через pandas | Тестирование совместимости, функции, специфичные для pandas |
Выбор движка
Глобальная конфигурация
Проверка текущего движка выполнения
Автоматический режим
В режиме auto (значение по умолчанию) DataStore выбирает оптимальный движок выполнения для каждой операции:
Операции, выполняемые в chDB
- SQL-совместимая фильтрация данных (
filter(),where()) - Выбор столбцов (
select()) - Сортировка (
sort(),orderby()) - Группировка и агрегация (
groupby().agg()) - Соединения (
join(),merge()) - Удаление дубликатов (
distinct(),drop_duplicates()) - Ограничение выборки (
limit(),head(),tail())
Операции, выполняемые в pandas
- Пользовательские функции
apply(apply(custom_func)) - Сложные сводные таблицы с пользовательскими агрегациями
- Операции, которые нельзя выразить на SQL
- Когда входные данные уже представлены в виде pandas DataFrame
Пример
Режим chDB
Выполнять все операции только через ClickHouse SQL:
Когда использовать
- Обработка больших наборов данных (миллионы строк)
- Нагрузки с ресурсоёмкими операциями агрегации
- Когда нужна максимальная оптимизация SQL
- Предсказуемое поведение во всех операциях
Характеристики производительности
| Тип операции | Производительность |
|---|---|
| Группировка/агрегация | Отличная (до 20 раз быстрее) |
| Сложная фильтрация | Отличная |
| Сортировка | Очень хорошая |
| Простые одиночные фильтры | Хорошая (незначительные накладные расходы) |
Ограничения
- Пользовательские функции Python могут не поддерживаться
- Некоторые функции, специфичные для pandas, требуют преобразования
Режим pandas
Принудительное выполнение всех операций в pandas:
Когда использовать
- Тестирование совместимости с pandas
- Использование специфичных для pandas функций
- Отладка проблем, связанных с pandas
- Когда данные уже находятся в формате pandas
Характеристики производительности
| Тип операции | Производительность |
|---|---|
| Простые одиночные операции | Хорошая |
| Пользовательские функции | Отличная |
| Сложные агрегации | Медленнее, чем chDB |
| Большие наборы данных | Требовательны к памяти |
Движок Cross-DataStore
Настройте движок для операций по объединению столбцов из разных DataStore:
Пример
Логика выбора движка выполнения
Дерево принятия решений для автоматического режима
Переопределение на уровне функций
Для некоторых функций можно явно задать используемый ими движок выполнения:
Дополнительные сведения см. в разделе Function Config.
Сравнение производительности
Результаты бенчмарка на 10 млн строк:
| Operation | pandas (мс) | chDB (мс) | Ускорение |
|---|---|---|---|
| GroupBy count | 347 | 17 | 19.93x |
| Combined ops | 1,535 | 234 | 6.56x |
| Complex pipeline | 2,047 | 380 | 5.39x |
| Filter+Sort+Head | 1,537 | 350 | 4.40x |
| GroupBy agg | 406 | 141 | 2.88x |
| Single filter | 276 | 526 | 0.52x |
Ключевые выводы:
- chDB отлично справляется с агрегациями и сложными пайплайнами
- pandas немного быстрее для простых одиночных операций
- Используйте режим
auto, чтобы задействовать сильные стороны обоих вариантов
Лучшие практики
1. Сначала используйте автоматический режим
2. Проведите профилирование перед принудительным выбором движка
3. Принудительно используйте движок для определённых типов нагрузок
4. Используйте explain() для анализа выполнения
Устранение неполадок
Проблема: операция выполняется медленнее ожидаемого
Проблема: операция не поддерживается в режиме chdb
Проблема: нехватка памяти при обработке больших объёмов данных
Если вы выполняете ресурсоёмкие задачи агрегации и вам не требуется полная совместимость вывода с pandas (порядок строк, MultiIndex, корректировки dtype), рассмотрите возможность использования режима повышенной производительности. Он автоматически устанавливает движок chdb и убирает все накладные расходы, связанные с обеспечением совместимости с pandas.