Skip to content

Gurikap/Laba3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Сутью данной лабораторной работы является написание Бенчмарка для 5 разных python-библиотек для работ с базами данных. Если точнее то, бенчмарк представляет собой замеры времени выполнения 4 SQL-запросов в библиотеках: Psycopg2, SQLit, DuckDB, Pandas и SQLAlchemy на двух базах данных: nyc_yellow_tiny(200мб) и nyc_yellow_big(2 гб).

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

Запросы:

  1. SELECT VendorID, count(*) FROM trips GROUP BY 1;
  2. SELECT passenger_count, avg(total_amount) FROM trips GROUP BY 1;
  3. SELECT passenger_count, extract(year from tpep_pickup_datetime), count(*) FROM trips GROUP BY 1, 2;
  4. SELECT passenger_count, extract(year from tpep_pickup_datetime), round(trip_distance), count(*) FROM trips GROUP BY 1, 2, 3 ORDER BY 2, 4 desc;

Графики сравнения библиотек:

В малой базе данных:

таблица1

график1

В большой базе данных:

таблица2

график2

  • Анализ графика времени при малых данных:

По графику видно, что самой быстрой библиотекой для всех запросов при малых данных являнется: DuckDB.

С другой стороны, самые долгие библиотеки для данных запросов разделилсь. Для 1 и 2 запросов самой долгой библиотекой является SQLite. Для 3 и 4 же запросов самой долгой является psycopg2.

Библиотека Pandas достаточно быстрая для всех запросов, по сравнению с другими. SQLAlchemy же практически все запросы выполняет за среднее время.

  • Анализ графика времени при больших данных:

По графику видно, что самой быстрой библиотекой по всем запросам также является DuckDB. Самые долгие же для 1 и 2 запросов - SQLite, а 3 и 4 - Pandas.

Psycopg2 и SQLAlchemy выполняют запросы со средней скоростью.

Каждая из этих библиотек различается методами работы и каждая имеет как преимущества, так и недостатки.

  1. Psycopg2 - это библиотека для работы с PostgreSQL в Python. Она предоставляет инструменты для выполнения SQL-запросов, чтения и записи данных, управления транзакциями и загрузки данных из csv-файлов. Однако, стоит отметить, что операции загрузки данных в PostgreSQL могут занимать больше времени по сравнению с SQLite или файлами .db, и скорость работы библиотеки может быть ниже, чем у duckDB. Оптимизация настройки PostgreSQL может значительно улучшить производительность операций. Но лично мне эта библиотека не понравилась. Не могу точно сказать почему, но она далась мне тяжелее всего.
  2. SQLite - это легкая и встроенная реляционная база данных, которая не требует отдельного сервера. Она проста в использовании, поддерживает SQL, надежна, поддерживает различные языки программирования и кроссплатформенна. Часто используется в мобильных приложениях, браузерах и встроенных системах. SQLite показывает себя хуже всех на первых двух запросах их '4queries', но довольно неплохо показывает себя на третьем и четвертых запросах, где присутствует group by. Так что, можно сказать, что в отличие от предыдущих трех библиотек, обговоренных выше, SQLite лучше работает с группировкой данных. Не сказать, что слишком удобная, но и не слишком неудобная. Она достаточно средняя, по моему мнению.
  3. DuckDB - это компактная аналитическая база данных с открытым исходным кодом, разработанная для обработки больших объемов данных. Она оптимизирована для выполнения сложных запросов и аналитических операций на больших наборах данных. DuckDB обеспечивает высокую производительность благодаря инновационным методам обработки запросов и компактному хранению данных. Она поддерживает стандарт SQL и может быть легко интегрирована с различными языками программирования, такими как Python, R, и другими. DuckDB также может использоваться в качестве встроенной базы данных для приложений и аналитических инструментов. В '4queries' данных модуль показал ошеломительно быстрый результат. DuckDB - отличное решение при работе с большими потоками данных. Для меня эта библиотека на втором месте по удобству.
  4. Pandas - это библиотека Python для анализа данных, предоставляющая удобные структуры данных (DataFrame) и инструменты для работы с ними. Она обладает широкими возможностями для фильтрации, сортировки, группировки и агрегации данных, обработки пропущенных значений, работы с временными рядами и чтения/записи данных из/в различных форматов. Pandas популярна среди специалистов по анализу данных и научных исследований. Для меня она является наиболее удобной банально из-за возможности читать csv файлы напрямую.
  5. SQLAlchemy - это библиотека на языке Python, которая предоставляет инструменты для работы с базами данных с использованием языка SQL. Она позволяет создавать объектно-реляционные отображения (ORM), которые позволяют работать с данными в базе, используя объекты и методы Python, вместо явного написания SQL-запросов.SQLAlchemy поддерживает различные базы данных, такие как PostgreSQL, MySQL, SQLite, и другие, что делает ее универсальным инструментом для работы с различными СУБД. SQLAlchemy также предоставляет возможности для создания сложных запросов, транзакций, а также миграции схемы базы данных. Благодаря своей гибкости и мощным возможностям, SQLAlchemy широко используется для разработки веб-приложений, анализа данных и других приложений, где требуется взаимодействие с базами данных. Каких-то особых впечатлений у меня после её использования не осталось.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages