Skip to content

Karkulevskiy/Benchmark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Привет!

Это бенчмарк 5 библиотек:

  • PostgresSQL
  • SQLite
  • ВuckDB
  • Pandas
  • SQLAlchemy

Для запуска нужно установить следующие пакеты:

  • duckdb
  • pandas
  • psycopg2
  • sqlalchemy

Есть файл config.json, который отвечает за параметры запуска:

  • "databases" -> какие БД нужно тестировать
  • "number_of_starts" -> количество запусков
  • "path_to_file_sqlite" -> абсолютный путь к sqlite.db файлу, если такой файл есть
  • "path_to_file_csv" -> путь к csv файлу с БД
  • "create_db_postgres" -> нужно ли создавать заново postgres БД
  • "create_db_sqlite" -> нужно ли создавать заново sqlite БД
  • "postgress_conf" -> параметры для подключения к postgress В процессе тестирования создастся файл results.txt с временем выполнения каждого запроса

BENCHMARK


PostgreSQL

  • Самая медленная БД из тестируемых, особенно мучительно её заполнять данными.
  • Проигрывает абсолютно всем, печаль.
  • Подключение через URL строку -> "сомнительно, ну ОКЭЙ."
  • Классный клиент pgAdmin4
  • Есть классная штука у метода to_sql() 'multi' 'chunks', которая позволяет настроить sql запросы и количество считывание строк. Классно экономит RAM)
  • Серверная, старенькая бд, вот и причина медлительности.

SQLite

  • Вот это класс, она уже есть в питоне!
  • Просто обожаю её за простоту и минималистичность, а также удобство работы с ней.
  • Максимально user-friendly БД. sqlite3 мал да удал, но также медленная БД.
  • Быстрее postgres'а, но postgres 1, 2 queries обработал быстрее sqlite, но проиграл в 3 и 4.
  • Все действия происходят на стороне клиента, а не на сервере. Просто во! Что не понравилось:
  • Боже, тут нету extract
  • А также она не смогла разрешить проблему со столбцами airport_fee и Airport_fee, кидая ошибку :(
  • Чтобы заполнить бд большим дата сетом потребовалось около 2ч

SQLAlchemy

  • Прикольная и простая библеотека, все понравилось.
  • По работе очень похожа на DuckDB
  • На 3 месте по скорости работы
  • Не знаю, что еще сказать про нее.
  • Тут есть ORM, OMG! Можно забыть про SQL)

Для работы с этими библеотеками я закидывал data set'ы в RAM

Pandas

"Это было не просто смело, это было ___ как смело"

  • 1 по скорости выполнения запросов, круто! Плюсы:
    • Через данную библеотеку работал с csv файлами, чтобы заполнить postgres, sqlite
    • Движки, которые поддерживает pandas
    • Классный метод to_sql, который умеет считывать чанками Что не понравилось:
    • А тут есть SQL expressions? Хочется просто так .extract("...") "Я скорость" - Numpy, который используется в Pandas, эффективно реализующий операции с массивами

DuckDB

Сначала долго не мог понять в чем прикол, когда делал 10+ запросов на большом дата сете и ср. скорость выполнения запросов была 5с

"Неужели это демон скорости?" - Подумал я, но все оказалось в разы интересней...

Потом начал делать по 1 запросу при каждом запуске модуля с DuckDB и осознал
"Она умеет кешировать?!" - Наверное да.

Скорость работы сильно улучшается при повторяющихся запросах, круто! (Примерно в 5 раз)
P.S. Это относится и к Pandas.
Мне показалось, что по DuckDB всех меньше гайдов, по сравнению с другими библеотеками.

Используется OLAP технология + гарантия транзакций

Графики

alt text alt text

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages