Перейти к основному содержанию
DataStore может выполнять операции с помощью разных движков. В этом руководстве показано, как настроить и оптимизировать выбор движка.

Доступные движки

Настройка движка

Глобальная конфигурация

Проверка текущего движка


Режим Auto

В режиме 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-оптимизация
  • Единообразное поведение во всех операциях

Характеристики производительности

Ограничения

  • Пользовательские функции Python могут не поддерживаться
  • Для некоторых возможностей, специфичных для pandas, требуется преобразование

Режим pandas

Принудительно выполняйте все операции через pandas:

Когда использовать pandas

  • Тестирование совместимости с pandas
  • Использование возможностей pandas
  • Отладка проблем, связанных с pandas
  • Когда данные уже представлены в формате pandas

Характеристики производительности


Движок для операций между DataStore

Настройте движок для операций, объединяющих столбцы из разных DataStore:

Пример


Логика выбора движка

Дерево решений для режима Auto

Переопределение на уровне функции

Для некоторых функций можно явно задать движок:
См. Конфигурация функции для получения подробной информации.

Сравнение производительности

Результаты бенчмарка на 10 млн строк: Ключевые выводы:
  • chDB особенно хорошо показывает себя в агрегациях и сложных конвейерах
  • pandas немного быстрее при простых одиночных операциях
  • Используйте режим auto, чтобы получить лучшее из обоих вариантов

Лучшие практики

1. Начните с режима Auto

2. Сначала профилируйте, потом применяйте принудительно

3. Явно задавайте движок для конкретных рабочих нагрузок

4. Используйте explain(), чтобы понять выполнение


Устранение неполадок

Проблема: операция выполняется медленнее, чем ожидалось

Проблема: операция не поддерживается в режиме chDB

Проблема: нехватка памяти при больших объёмах данных

Режим производительностиЕсли вы работаете с ресурсоёмкими агрегациями и вам не нужна полная совместимость вывода с pandas (порядок строк, MultiIndex, корректировка dtype), рассмотрите возможность использования режима производительности. Он автоматически переключает движок на chdb и устраняет все накладные расходы, связанные с совместимостью с pandas.