Cсылка на github: https://github.com/future-genius16/lab_3
Время выполнения каждого из запросов на каждом из языков представлено в таблице ниже. Отмечу, что каждое получившееся значение это медиана от результатов 20 запусков программы.
Эти же данные можно представить в формате сравнительного графика:
Данных по библиотеке DuckDB на графике практически не видно, так как значения крайне малы(см. таблицу).
В процессе оценки "впечатлений" от каждой библиотеки я выявила, что самой сложной в использовании оказалась библиотека Postgres. Я думаю, что это связано с тем, что для ее использования требуется наличие сервера базы данных Postgres в docker-контейнере, что может потребовать дополнительных усилий и времени для настройки и запуска(мне это не понравилось). Мне кажется, что пользователям может быть сложно разобраться с этим процессом, особенно если они не имеют опыта работы с докером.
Остальные три библиотеки - SQLite, DuckDB и Pandas - по моим ощущениям оказались примерно одинаково просты в использовании. Библиотека SQLite известна своей простотой и легкостью в использовании, так как она не требует установки отдельного сервера базы данных и хранит данные в обычном файле на жестком диске. DuckDB также представляет собой легкую в использовании библиотеку, поскольку она хранит данные в оперативной памяти ноутбука, что ускоряет доступ к данным и упрощает процесс работы с ними. Библиотека Pandas, хотя и использует SQLite в качестве базы данных, также оказалась простой в использовании благодаря своей интуитивно понятной структуре и множеству доступных функций.
Относительно скорости работы, DuckDB оказалась самой быстрой, так как хранила данные в оперативной памяти ноутбука, что существенно ускоряет доступ к данным.
Библиотеки SQLite и Pandas, хранящие данные на жестком диске, стали средними по скорости выполнения запросов.
Postgres обращалась к базе данных через сеть, что и привело к ее медленной работе по сравнению с остальными библиотеками.
Таким образом, при выборе библиотеки для работы с данными необходимо учитывать как ее удобство использования, так и скорость выполнения запросов, чтобы выбрать наиболее подходящий вариант для конкретной задачи. Я бы для подобной задачи в следующий раз обратилась к DuckDB!
Потребуются python библиотеки: sqlite3 pandas sqlalchemy psycopg2 duckdb
Загрузка данных в базу данных (если необходимо) производится с помощью раскомментирования кода после # имя_библиотеки import.
Запуск производится с помощью раскомментиования кода после # имя_библиотеки queries и раскомментирования конкретного запроса.
В датасете имя последнего столбца вручную изменено, так как sqlite не чувствителен к регистру имён столбцов.





