Skip to content

TypicalCode0/benchmark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Benchmark 4 queries

Оглавление


1 Запуск программы

  1. Клонирование репозитория
  2. Установить соответствующие библиотеки: pip install psycopg2, pip install pandas, pip install duckdb, pip install sqlalchemy
  3. Ввести адрес вашего .csv файла (данные из базы данных "New York Taxi Cars") и данные для подключения к PostgreSQL(psycopg.py)
  4. Запустить программы

Note

В исходных данных (nyc_yellow_tiny.csv, nyc_yellow_big.csv) присутствует ошибка! Последний столбец дублируется => ошибка sql и ошибка заполнения столбцов!

2 Используемые библиотеки

2.1 Psycopg2

Библиотека psycopg2 - это набор инструментов для работы с базой данных PostgreSQL из языка программирования Python. Она обеспечивает возможность подключения к базе данных, выполнения SQL-запросов, получения результатов и управления транзакциями.

Преимущества библиотеки psycopg2 включают в себя:

  1. Высокая производительность: библиотека написана на C и предоставляет быстрый доступ к базе данных PostgreSQL.
  2. Поддержка различных типов данных: psycopg2 позволяет работать с различными типами данных PostgreSQL, такими как JSON, UUID и др.
  3. Надежность: библиотека имеет множество функций для обработки ошибок и управления транзакциями, что делает ее надежным инструментом для работы с базой данных.
  4. Поддержка расширений: psycopg2 поддерживает расширения, такие как hstore, которые обеспечивают дополнительные возможности при работе с PostgreSQL

2.2 SQLite3

Библиотека sqlite3 - это встроенный модуль языка программирования Python, который обеспечивает доступ к базе данных SQLite. Он позволяет создавать, подключаться к базе данных, выполнять SQL-запросы и управлять данными.

Преимущества библиотеки sqlite3 включают в себя:

  1. Простота использования: sqlite3 предоставляет простой и удобный интерфейс для работы с базой данных SQLite, что делает его идеальным выбором для небольших проектов.
  2. Поддержка различных типов данных: sqlite3 поддерживает различные типы данных SQLite, такие как INTEGER, TEXT, REAL и др.
  3. Надежность: библиотека имеет встроенные механизмы обработки ошибок и предоставляет возможность работы с базой данных без необходимости установки дополнительных компонентов.

2.3 duckdb

DuckDB - это компактная, высокопроизводительная база данных с открытым исходным кодом, которая предназначена для аналитики данных. Она спроектирована для работы с большими объемами данных и обеспечивает эффективное выполнение сложных запросов.

Преимущества библиотеки DuckDB включают в себя:

  1. Высокая производительность: DuckDB обеспечивает быстрое выполнение запросов и поддерживает параллельную обработку запросов, что делает ее идеальным выбором для аналитики данных.
  2. Эффективное использование памяти: база данных использует минимальное количество памяти, что позволяет обрабатывать большие объемы данных даже на устройствах с ограниченными ресурсами.
  3. Поддержка SQL: DuckDB поддерживает стандартный SQL, что упрощает разработку и оптимизацию запросов.
  4. Поддержка различных форматов данных: библиотека позволяет работать с различными форматами данных, включая CSV, Parquet, JSON и др., что обеспечивает удобство работы с разнообразными источниками данных.

2.4 Pandas

Pandas - это библиотека для языка программирования Python, предназначенная для работы с данными и базами данных. Она предоставляет удобные инструменты для анализа, манипулирования и обработки данных, что делает ее популярным выбором среди специалистов по анализу данных и науке о данных.

Преимущества библиотеки pandas включают в себя:

  1. Удобство использования: pandas предоставляет простой и интуитивно понятный интерфейс для работы с данными, что упрощает разработку и выполнение запросов.
  2. Мощные инструменты анализа: библиотека предоставляет широкий спектр функций и методов для анализа данных, включая фильтрацию, сортировку, группировку, объединение и многое другое.
  3. Поддержка различных форматов данных: pandas позволяет работать с различными форматами данных, включая CSV, Excel, SQL, JSON и др., что обеспечивает удобство работы с разнообразными источниками данных.

2.5 SQLAlchemy

SQLAlchemy - это библиотека для работы с базами данных в языке программирования Python. Она предоставляет удобные инструменты для создания, выполнения и управления запросами к базам данных, а также для работы с объектно-реляционным отображением (ORM).

Преимущества библиотеки SQLAlchemy включают в себя:

  1. ORM: SQLAlchemy позволяет работать с базами данных, используя объектно-ориентированный подход, что упрощает взаимодействие с данными и уменьшает необходимость написания SQL-запросов вручную.
  2. Поддержка различных СУБД: библиотека поддерживает работу с различными системами управления базами данных, такими как PostgreSQL, MySQL, SQLite, что делает ее универсальным инструментом для работы с данными.
  3. Гибкость и мощные инструменты: SQLAlchemy предоставляет широкий спектр функций для работы с данными, включая возможность создания сложных запросов, транзакций, миграций и многое другое.

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

Результат работы на данных размером 2ГБ: image Данные выбранные для графика(медиана): image Гистограмма: image

4 Вывод

В данном бенчмарке использовались 5 библиотек для работы с базами данных.

  1. Duckdb. Данная библиотека обаладает наибольшей производительностью, что не удивительно, ведь она спроектирована для анализа больших объёмов данных, а также поддерживает параллельную обработку запросов. Является одной из самых лёгких для изучения библиотек, наравне с SQLite3.
  2. Psycopg2. Данная библиотека также обладает отличной производительностью, хоть и меньшей чем Duckdb. Данный факт также не удивителен, так как Psycopg2 предоставляет нативную поддержку для работы с PostgreSQL, что позволяет эффективно взаимодействовать с базой данных и написан на С.
  3. SQLite3. Обладает средней производительностью, что понятно, потому что данная библиотека не предназначена для большого объёма данных и не может подключаться к серверу, что означает, что все операции выполняются локально на устройстве.
  4. Pandas. Обладает практически наихудшей производительностью, что связано с отсутствием оптимизации запросов.
  5. SQLAlchemy. Обладает наихудшей производительностью из-за накладных расходов: использование ORM в SQLAlchemy может привести к некоторым накладным расходам, особенно при работе с большими объемами данных. Также данная библитека является самой сложной для изучения.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages