Skip to content

Sonenka/dblab3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Отчет по лабораторной работе №3

Введение

В данной лабораторной работе будут рассмотрены 4 библиотеки для работы с базами данных (Psycopg2,SQLite, DuckDB, Pandas) на примере создания бенчмарка "4 queries".

Запуск осуществляется через один файл main.py, при этом используемые в запуске библиотеки могут изменяться в файле config.py.

Запуск

1) Установите python с официального сайта https://www.python.org/downloads/, а так же PostgreSQL при необходимости

2) Установите используемые библиотеки (и gdown для скачивания датасета) через терминал, используя следующую команду: pip install duckdb pandas psycopg2 gdown

3) Клонируйте репозиторий в нужную директорию, используя следующую команду:

git clone https://github.com/Sonenka/dblab3.git

4) Измените настройки под себя в файле config.py.

5) Запускайте программу.

Результаты запуска

Вывод программы:

вывод программы

Гистограмма и график, построенные на основе полученных данных (в папке files вы можете найти файл Excel со всеми графиками):

Гистограмма

Линейный график

Отчет

По полученным данным можно сделать выводы о каждой из библиотек:

1) Psycopg2

По моему мнению, это самая неудобная в использовании библеотека из представленных, так как помимо написания самого кода, необходимо было подключаться к PostgreSQL. Что же касается времени выполнения запросов, то эта библиотека является самой долгой, это скорее всего связано с тем, что ей нужно подтверждение каждого запроса, а еще она работает с удаленной базой данных, и скорость операций может зависеть от сетевой задержки и нагрузки на сервере базы данных. Однако, ее функционал очень обширный, что может быть полезно, но не в этой лабораторно, поэтому от меня эта библиотека получает -rep.

2) SQLite

Достаточно удобная библиотека, которая (в отличие от предыдущей) не требует дополнительных приложений. По скороти работы она самую малость отстает от Pandas на 2 и 3 query, но быстрее на 1 и 4. Благодаря своей легковесной и встроенной природе, может стать хорошим выбором для небольших приложений или задач, требующих локальной базы данных. Однако ее не очень быстрая работа (хотя и намного быстрее Psycopg2) объясняется недостаточной оптимизированностью. Вцелом, достаточно приятная библиотека для работы.

3) DuckDB

При работе с этой библиотекой я несколько раз переписывала часть лабораторной заново, думая, что работа далась слишком легко, и таких маленьких данных быть просто не может, однако, это реально. Данная библиотека в десятки (а иногда даже в сотни!) раз быстрее, чем ее конкуренты. В использовании она очень удобна, но я знаю, что у нее достаточно небольшой функционал, которого может не хватит при каких-то сложных задачах, однако в рамках этого курса мы не лезем в особые дебри, поэтому, DuckDB пока что хватает. Ее быстрота объясняется тем, что она способна параллельно обрабатывать строки. Кстати, эта библиотека создана только в середине июня этого года, но уже успела получить гранд на 100млн долларов, что означает дальнейшее ее развитие. Ура!

4) Pandas

Достаточно быстрая (наравне с SQLite) библиотека с широким функционалом. Удобна в использовании, хорошо комбинируется с остальными библиотеками,  может применяться ко множеству сценариев, включая загрузку данных из различных источников и их обработку. Помимо векторизованных операций и параллельной обработки, она использует NumPy, что позволяет ей эффективно работать с массивами данных и выполнять быстрые и оптимизированные операции.

Вывод

Поработав с этими четырьмя библиотеками, могу сказать, что моим любимчиком стала DuckDB. Думаю, ее функционала для "повседневных" задач должно хватить. Но при необходимости я была бы не прочь поработать с Pandas или SQLite, так как они тоже достаточно просто в освоении. Про Psycopg2 просто нет слов, потому что работать с ней было очень не очень. Надеюсь, она никогда мне не понадобится.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages