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