- Клонирование репозитория
- Установить соответствующие библиотеки:
pip install psycopg2
,pip install pandas
,pip install duckdb
,pip install sqlalchemy
- Ввести адрес вашего .csv файла (данные из базы данных "New York Taxi Cars") и данные для подключения к
PostgreSQL
(psycopg.py) - Запустить программы
Note
В исходных данных (nyc_yellow_tiny.csv, nyc_yellow_big.csv) присутствует ошибка! Последний столбец дублируется => ошибка sql и ошибка заполнения столбцов!
Библиотека psycopg2 - это набор инструментов для работы с базой данных PostgreSQL из языка программирования Python. Она обеспечивает возможность подключения к базе данных, выполнения SQL-запросов, получения результатов и управления транзакциями.
Преимущества библиотеки psycopg2 включают в себя:
- Высокая производительность: библиотека написана на C и предоставляет быстрый доступ к базе данных PostgreSQL.
- Поддержка различных типов данных: psycopg2 позволяет работать с различными типами данных PostgreSQL, такими как JSON, UUID и др.
- Надежность: библиотека имеет множество функций для обработки ошибок и управления транзакциями, что делает ее надежным инструментом для работы с базой данных.
- Поддержка расширений: psycopg2 поддерживает расширения, такие как hstore, которые обеспечивают дополнительные возможности при работе с PostgreSQL
Библиотека sqlite3 - это встроенный модуль языка программирования Python, который обеспечивает доступ к базе данных SQLite. Он позволяет создавать, подключаться к базе данных, выполнять SQL-запросы и управлять данными.
Преимущества библиотеки sqlite3 включают в себя:
- Простота использования: sqlite3 предоставляет простой и удобный интерфейс для работы с базой данных SQLite, что делает его идеальным выбором для небольших проектов.
- Поддержка различных типов данных: sqlite3 поддерживает различные типы данных SQLite, такие как INTEGER, TEXT, REAL и др.
- Надежность: библиотека имеет встроенные механизмы обработки ошибок и предоставляет возможность работы с базой данных без необходимости установки дополнительных компонентов.
DuckDB - это компактная, высокопроизводительная база данных с открытым исходным кодом, которая предназначена для аналитики данных. Она спроектирована для работы с большими объемами данных и обеспечивает эффективное выполнение сложных запросов.
Преимущества библиотеки DuckDB включают в себя:
- Высокая производительность: DuckDB обеспечивает быстрое выполнение запросов и поддерживает параллельную обработку запросов, что делает ее идеальным выбором для аналитики данных.
- Эффективное использование памяти: база данных использует минимальное количество памяти, что позволяет обрабатывать большие объемы данных даже на устройствах с ограниченными ресурсами.
- Поддержка SQL: DuckDB поддерживает стандартный SQL, что упрощает разработку и оптимизацию запросов.
- Поддержка различных форматов данных: библиотека позволяет работать с различными форматами данных, включая CSV, Parquet, JSON и др., что обеспечивает удобство работы с разнообразными источниками данных.
Pandas - это библиотека для языка программирования Python, предназначенная для работы с данными и базами данных. Она предоставляет удобные инструменты для анализа, манипулирования и обработки данных, что делает ее популярным выбором среди специалистов по анализу данных и науке о данных.
Преимущества библиотеки pandas включают в себя:
- Удобство использования: pandas предоставляет простой и интуитивно понятный интерфейс для работы с данными, что упрощает разработку и выполнение запросов.
- Мощные инструменты анализа: библиотека предоставляет широкий спектр функций и методов для анализа данных, включая фильтрацию, сортировку, группировку, объединение и многое другое.
- Поддержка различных форматов данных: pandas позволяет работать с различными форматами данных, включая CSV, Excel, SQL, JSON и др., что обеспечивает удобство работы с разнообразными источниками данных.
SQLAlchemy - это библиотека для работы с базами данных в языке программирования Python. Она предоставляет удобные инструменты для создания, выполнения и управления запросами к базам данных, а также для работы с объектно-реляционным отображением (ORM).
Преимущества библиотеки SQLAlchemy включают в себя:
- ORM: SQLAlchemy позволяет работать с базами данных, используя объектно-ориентированный подход, что упрощает взаимодействие с данными и уменьшает необходимость написания SQL-запросов вручную.
- Поддержка различных СУБД: библиотека поддерживает работу с различными системами управления базами данных, такими как PostgreSQL, MySQL, SQLite, что делает ее универсальным инструментом для работы с данными.
- Гибкость и мощные инструменты: SQLAlchemy предоставляет широкий спектр функций для работы с данными, включая возможность создания сложных запросов, транзакций, миграций и многое другое.
Результат работы на данных размером 2ГБ:
Данные выбранные для графика(медиана):
Гистограмма:
В данном бенчмарке использовались 5 библиотек для работы с базами данных.
- Duckdb. Данная библиотека обаладает наибольшей производительностью, что не удивительно, ведь она спроектирована для анализа больших объёмов данных, а также поддерживает параллельную обработку запросов. Является одной из самых лёгких для изучения библиотек, наравне с SQLite3.
- Psycopg2. Данная библиотека также обладает отличной производительностью, хоть и меньшей чем Duckdb. Данный факт также не удивителен, так как Psycopg2 предоставляет нативную поддержку для работы с PostgreSQL, что позволяет эффективно взаимодействовать с базой данных и написан на С.
- SQLite3. Обладает средней производительностью, что понятно, потому что данная библиотека не предназначена для большого объёма данных и не может подключаться к серверу, что означает, что все операции выполняются локально на устройстве.
- Pandas. Обладает практически наихудшей производительностью, что связано с отсутствием оптимизации запросов.
- SQLAlchemy. Обладает наихудшей производительностью из-за накладных расходов: использование ORM в SQLAlchemy может привести к некоторым накладным расходам, особенно при работе с большими объемами данных. Также данная библитека является самой сложной для изучения.