- О бенчмарке
- Сырые данные
- Использованные библиотеки: Psycopg2, SQLite, DuckDB, Pandas, SQLAlchemy
- Склонировать проект
- Установить Python 3.11.6
- Установить Разработка классических приложений на C++ с помощью Visual Studio Installer (для DuckDB)
- Установить библиотеки из requirements.txt с помощью
pip install -r requirements.txt - Установить PostgreSQL 16.1
- Скопировать в папку data csv-файл с данными
- Изменить файл под нужный формат для работы с ними. Если данные взяты отсюда:
- Скомпилировать файл fix.cpp (подойдет почти любой компилятор для C++)
- Запустить программу, передав в нее в качестве аргумента название csv-файла (без расширения)
- Изменить файл config.json:
- dataset: название csv-файла (без расширения)
- libraries: библиотеки для бенчмарка (можно указывать только те, что записаны изначально)
- queries: запросы для бенчмарка (1, 2, 3, 4)
- postgres: параметры для входа в базу данных PostgreSQL
- tests: количество тестов
- Запустить файл main.py
Результаты и графики в results.xlsx По результатам бенчмарка на csv-файле размером 2 ГБ:
- Быстрее всех работает DuckDB: написана на C++, обрабатывает данные параллельно
- На втором месте Pandas: использует векторизацию, менее оптимизирована под SQL
- Psycopg2 и SQLAlchemy работают примерно одинаковое время: схожая реализация, оба загружают данные из PostgreSQL
- Медленнее всех работает SQLite: легкая библиотека, нет оптимизаций