Дослідження швидкодії виконання запиту в субд MySQL та mariaDB засобами Pythonта PHP

Вивчення швидкодії виконання запитів для баз даних MySQL та MariaDB з виконанням базових операцій у середовищах Python та РНР. Теоретичний огляд основних характеристик баз даних, особливості підключення та взаємодії з ними в мовах підтримки Python та PHP.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык украинский
Дата добавления 23.10.2020
Размер файла 479,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Дослідження швидкодії виконання запиту в субд MySQL та mariaDB засобами Pythonта PHP

В.М. Мельник, А.І. Нагорнюк, К.Я Бортник

В даній роботі проведено дослідження швидкодії виконання запитів для баз даних MySQLта MariaDBз виконанням базових операцій у середовищах Pythonта РНР. Проведено теоретичний огляд основних характеристик вищезгаданих баз даних, а також здійснено огляд особливостей підключення та взаємодії з ними в мовах підтримки Pythonта PHP, а саме, організація роботи з об'єктами підключення та курсорами. Встановлено залежність між кількістю виконання запитів та їх швидкодією виконання. mysql mariadb python підключення

Ключові слова: СУБД, MySQL, MariaDB, Python, PHP, швидкодія виконання, запит.

В данной работе проведено исследование быстродействия выполнения запросов для баз данных MySQLи MariaDBс выполнением базовых операций в средах Pythonи РНР. Проведен теоретический обзор основных характеристик вышеуказанных баз данных, а также осуществлен обзор особенностей подключения и взаимодействия с ними в языках поддержки Pythonи PHP, а именно, организация работы с объектами подключения и курсорами. Установлена зависимость между количеством выполнения запросов и их быстродействием выполнения.

Ключевые слова: СУБД, MySQL, MariaDB, Python, PHP, быстродействие выполнения, запрос.

In this paper, we investigate the performance of requests for MySQL and MariaDB databases with basic operations made in Python and PHP environments. A theoretical overview of the main characteristics for the databases described above was made, as well as an overview of connection features and interaction with them in Python and PHP support languages, namely, the organization of work with connection objects and cursors. The relationship between the number of requests and their speed of execution is established.

Keywords: DBMS, MySQL, MariaDB, Python, PHP, runtime speed, request.

1. Постановка проблеми. Вибір системи управління баз даних (СУБД) являє собою складне багатопараметричне завдання і є одним із важливих етапів в ході розробки додатків з базами даних. Обраний програмний продукт повинен задовольняти як поточним, так і майбутнім потребам підприємства. При цьому слід враховувати фінансові витрати на придбання необхідного обладнання, самої системи, розробку необхідного програмного забезпечення на її основі, а також навчання персоналу.

MySQLє однією з найбільш поширених СУБД у світі. Це програмне забезпечення безкоштовне і розповсюджується з відкритим вихідним кодом. Вона розроблена на C/C++ і є однією з найбільш популярних варіантів баз даних. СУБД була розроблена шведською компанією «MySQLAB» в 1995 році. У 2008 році MySQLABбула придбана компанією SunMicrosystems, а в 2010 році Oracleпридбала SunMicrosystems. З тих пір MySQLпідтримується і управляється навіть і Oracle[1, 2].

Під час придбання SunMicrosystemsкомпанією Oracleдеякі з старших інженерів, які працювали над розробкою MySQL, відчули, що існує конфлікт інтересів між MySQLі комерційної базою даних Oracle, тобто OracleDatabaseServer. В результаті, ці інженери створили форк бази коду MySQLі заснували власну організацію. Так народилася MariaDB. На сьогоднішній день обидві бази даних користуються великою популярністю і широко використовуються різними компаніями розробників [3,.

2. Аналіз існуючих способів взаємодії з базою даних. Для роботи з базами даних у Pythonможна використовувати різноманітні бібліотеки, специфічні та спеціалізовані для кожної конкретної БД. Наприклад, для MySQL- MySQLdb, pymysql, mysql, для Postgres - Psycopg2, pg8000, py-postgresql, PyGreSQL, ocpgdb, bpgsql [5]. Для з'єднання з СУБД MariaDBрозробнику необхідно використовувати коннектор з MySQL. Оскільки підтримка SQLiteє в стандартній бібліотеці Python, то встановлювати додаткові модулі не потрібно.

Усі модулі для взаємодії з базами банних у Python повинні відповідати стандарту PEP249, у якому описані основні принципи створення API. Завдяки специфікації DB-APIіснує спільний інтерфейс для її вивчення. Перенесення коду для використання іншого продукту баз даних є набагато простішим і часто вимагає зміни лише декількох рядків. Цей APIбув визначений для заохочення подібності між модулями Python, які використовуються для доступу до баз даних. Поточна версія DB-API2.0 (PEP249) замінена старішою версією DB-API1.0 (PEP248) [6, 7].

Для підключення до бази даних перш за все необхідно виконати метод connect(), в який передати параметри підключення, такі як ім'я хоста, порту, назву (логін) користувача та його пароль. Після успішного отримання об'єкту Connectionз нього необхідно отримати об'єкт Cursor. Цей об'єкт представляє курсор бази даних, який використовується для управління контекстом операцій. Курсори, створені з одного і того ж з'єднання, не є ізольованими, тобто будь -які зміни, зроблені курсором бази даних, негайно помітні іншими курсорами. Курсори, створені з різних з'єднань, можуть бути або не можуть бути ізольовані. Це залежить від того, як реалізована підтримка транзакцій (див. також методи .rollbackQі .commit() з'єднання). Після отримання курсору можна проводити необхідні маніпуляції: виконання запитів, вибірку даних, і інше [6].

Для полегшення взаємодії з даними можна використовувати ORM. Об'єктно-реляційне відображення (ORM) - це метод, який дозволяє запитувати і маніпулювати даними з бази даних з використанням об'єктно-орієнтованої парадигми. Бібліотека ORM- це абсолютно звичайна бібліотека, написана на певній мові, яка інкапсулює код, необхідний для маніпулювання даними, завдяки чому немає необхідності використовувати SQL, а можна взаємодіяти з даними як з об'єктом. ПрикладиORM - цеPython: Django ORM, SQLAlchemy; PHP: Propel, Doctrine.

У PHP для взаємодії з БД також можуть використовуватись спеціалізовані бібліотеки для кожної конкретної бази даних. Наприклад, для MySQL, і, відповідно, для MariaDB- це бібліотеки mysql, mysqliта PDO. Бібліотека mysqlзаборонена для використання у PHP5.5 і новіших його версій. Натомість слід використовувати mysqliта PDO[9].

PDO- це PHPDataObjects, або рівень абстракції доступу до бази даних.PDOпропонує уніфікований інтерфейс для доступу до багатьох різних баз даних, а також резюмує не тільки APIбази даних, але й основні операції, які в іншому випадку доводиться повторювати сотні разів у кожному додатку. На відміну від mysqlта mysqli, які є низькорівневими API, не призначеними для прямого використання, а лише як будівельний матеріал для вищого рівня абстракції), PDOвже є абстракцією. Справжніми перевагами PDOє: безпека (використання попередньо підготовлених запитів), зручність використання (багато допоміжних функцій для автоматизації рутинних операцій), повторне використання (уніфікований APIдля доступу до безлічі баз даних, від SQLiteдо Oracle).

Щоб отримати доступ досерверу баз даних через PDO, необхідно створити об'єкт. Для цього необхідно передати дані про сервер у вигляді DSN, а також ім'я користувача, пароль, і інші дані за необхідності. Після цього є можливість виконувати запити. Робити це можна різними способами - якщо запит не містить у своїй структурі змінних, можна використовувати метод PDO::query(). Якщо ж у запиті використовуються змінні, то необхідно використовувати метод prepare(), а опісля - використовувати метод execute(). Підстановка змінних у запити може здійснюватися за допомогою позиційних або іменованих псевдозмінних. Для встановлення відповідності між псевдозмінною і її значенням під час підстановки в запит можуть використовуватись масиви, асоціативні (іменовані) масиви, або методи bindValue() чи bindParam() [10].

3. Результати проведених досліджень. Під час проведення дослідження використовувались СУБД MySQLверсії 8.0.16 та MariaDBверсії 10.4.7, а також інструменти підтримки: Python3.7.4 та PHP7.2.10. Загальнаструктуразапитуствореннятаблицінаступна:

CREATE TABLE IF NOT EXISTS research ( id INT(7) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, vv TINYINT);

Після створення таблиці виконувались операції вставки, вибірки, оновлення та видалення (CRUD) для 100, 500, 1 000, 5 000, 10 000, 50 000 та 10 000 записів. Вимірювання відбувалося за допомогоювизначення різниці між часовими мітками з використанням методу time.time() в Pythonта функції microtime() у PHP.

Нижче подано графік залежності часу виконання запитів для CRUDоперацій від кількості записів для СУБД MySQLзасобами Python(рис. 1).

Рис. 1 - Графік залежності часу виконання запитів для CRUDоперацій від кількості записів для СУБД MySQLзасобами Python

Як видно з графіка, залежність є рівномірно зростаючою прямою лінійною. Зі зростанням кількості записів час їх виконання зростає лінійно. Операції вставки, оновлення та видалення виконуються майже однакову кількість часу. Однак операція вибірки є значно швидшою, майже в п'ять разів.

Python, MySQL, середній час виконання, с

Вставка

Вибірка

Оновлення

Видалення

Кількість записів

100

0.1118

0.027801

0.099199

0.097

500

0.559

0.1294

0.5786

0.5712

1 000

1.171199

0.266201

1.2036

1.2444

5 000

5.9728

1.461001

6.280401

5.970599

10 000

12.006601

2.428001

12.112601

12.353397

Таблиця 1. Результати проведеного дослідження виконання запитів в базі даних MySQLз підтримки Python

PHP, MySQL, середній час виконання, с

Вставка

Вибірка

Оновлення

Видалення

Кількість записів

100

0.120259

0.023962

0.108073

0.123157

500

0.443965

0.090917

0.482407

0.483698

1 000

1.016007

0.186314

1.016624

1.072325

5 000

5.796535

1.206885

6.191491

6.160956

10 000

12.169063

2.157948

12.281779

12.234494

Таблиця 2. Результати проведеного дослідження виконання запитів в базі даних MySQLз підтримки PHP

Python, MariaDB, середній час виконання, с

Вставка

Вибірка

Оновлення

Видалення

Кількість записів

100

0.055

0.021

0.048339

0.050925

500

0.232986

0.100601

0.248224

0.249581

1 000

0.460396

0.198199

0.501002

0.497153

5 000

2.629197

1.201602

2.742204

2.744992

10 000

5.158813

2.2126

5.218996

5.2186

Таблиця 3. Результати проведеного дослідження виконання запитів в базі даних MariaDBз підтримки Python

PHP, MariaDB, середній час виконання, с

Вставка

Вибірка

Оновлення

Видалення

Кількість записів

100

0.057982

0.023017

0.056827

0.05867

500

0.257298

0.103248

0.263533

0.260386

1 000

0.550662

0.221751

0.537945

0.546798

5 000

2.825545

1.048985

2.740266

2.665675

10 000

5.176147

1.942884

5.04902

4.888232

Результати дослідження, наведені у таблицях 1-4, демонструють залежність часу виконання запитів від типу бази даних та мови реалізації підключення. Підключення у Pythonбуло здійснене за допомогою бібліотеки pyodbc, а для PHP- стандартними засобами PDO.

Для наочності аналізу даних побудовано графік (рис. 2), який демонструє наведені значення в таблицях

Рис. 2 - Результати досліджень для різних операцій виконання в середовищах Pythonта PHP

Як видно з графіка, швидкість виконання запитів вибірки фактично не залежить ні від типу бази даних, ні від способу підключення до неї. Також немає суттєвої різниці між способами підключення в межах однієї бази даних. Запити в середовищах Python та PHP виконуються майже однакову кількість часу.

Варто зауважити також подібну швидкодію операцій вставки, оновлення та видалення. Особливо помітне прискорення, майже в шість раз, спостерігається для операції вибірки. Що ж до порівняльної характеристики швидкодії СУБД, у даному випадку з графіка можемо спостерігати значне скорочення затрачуваного часу на виконання запитів бази даних MariaDB у порівнянні з MySQL- приблизно у 2,5 рази.

Висновки

У даній роботі було розглянуто основні особливості підключення та взаємодії з поширеними СУБД MySQLта MariaDBі визначено основні принципи побудови з'єднань з базою даних у середовищах Pythonта PHP. Було проведено дослідження, метою якого було визначити залежність часу виконання CRUDоперацій у різних середовищах від кількості запитів до бази даних відповідного типу. Виявлено прямолінійну залежність між кількістю операцій з базою даних та часом їх виконання. Здійснено порівняння результатів швидкодії виконання базових операцій у різних базах даних за наявності різноманітних умов.

Reference

1. Jesper Wisborg Krogh. MySQL Connector/Python Revealed / Jesper Wisborg Krogh // MySQL Connector/Python Revealed: SQL and NoSQL Data Storage Using MySQL for Python Programmers. 1st ed. Edition 2018 Apress 540 c

2. Russell J. T. Dyer. Learning MySQL and MariaDB: Heading in the Right Direction with MySQL and MariaDB / Russell J. T. Dyer // Learning MySQL and MariaDB: Heading in the Right Direction with MySQL and MariaDB 1 edition 2015 O'Reilly Media 408 c

3. Charles Bell. Expert MySQL / Charles Bell // Expert MySQL. 2nd ed. edition 2012 Apress 640 c

4. Federico Razzoli. MariaDB Essentials / Federico Razzoli, Emilien Kenler // MariaDB Essentials: Quickly get up to speed with MariaDB-the leading, drop-in replacement for MySQL, through this practical tutorial. 1 edition 2015 Packt Publishing 208 c

5. Adrian W. West. Practical PHP 7, MySQL 8, and MariaDB Website Databases / Adrian W. West, Steve Prettyman // Practical PHP 7, MySQL 8, and MariaDB Website Databases: A Simplified Approach to Developing Database-Driven Websites . 2nd ed. edition 2018 Apress 568 c

6. MySQL official site. URL:https://www.mvsal.com/

7. MySQL - Wikipedia. URL:https://en.wikipedia.org/wiki/MySQL

8. MariaDB official site. URL:https://mariadb.org/

9. MariaDB - Wikipedia. URL:https://en.wikipedia.org/wiki/MariaDB

10. Python PostgreSQL Tutorial Using Psycopg2 URL:https://pvnative.com/pvthon-postgresal-tutorial/

11. PEP 249 -- Python Database API Specification v2.0 URL:https://www.python.org/dev/peps/pep-0249/

12. Use cases of the DB API for a PostgreSQL database // Python wiki. URL:https://wiki.pvthon.org/moin/UsingDbApiWithPostgres#pvthon-db-api

13. Object-relational mapping - Wikipedia. URL:https://en.wikipedia.org/wiki/Obiect-relational mapping

14. PHP official documentation. URL:https://www.php.net/manual/en/mysal.php

15. (The only proper) PDO tutorial. URL:https://phpdelusions.net/pdo

Размещено на Allbest.ru

...

Подобные документы

  • Розробка автоматизованої бази даних реєстратури в поліклініці для ведення обліку лікарів та пацієнтів, а також зберігання та отримання якісної структурованої, та доступної інформації про них за допомогою виконання певних запитів в середовищі MySQL.

    курсовая работа [1,5 M], добавлен 03.11.2011

  • Основні відомості про реляційні бази даних, система управління ними. Основні директиви для роботи в середовищі MySQ. Визначення та опис предметної області. Створення таблиць та запитів бази даних автоматизованої бази даних реєстратури в поліклініці.

    курсовая работа [2,9 M], добавлен 06.11.2011

  • Об'єктно-орієнтована мова Python - сучасна мова програмування, проста у вивченні та використанні. Наявність повної стандартної бібліотеки. Середовища програмування на Python. Механізм функціонування інтерпретатора. Колекції даних, комбіновані оператори.

    презентация [753,2 K], добавлен 06.02.2014

  • Аналіз об'єктів дослідження, проектування баз даних. Розробка програмного забезпечення для роботи зі спроектованою базою даних. Реалізація індексів, опис метаданих в середовищі MySQL. Специфікація DDL для MySQL, протокол тестування DDL-сценарії.

    контрольная работа [389,9 K], добавлен 05.01.2014

  • Система управления базами данных (СУБД) MySQL. Установка, настройка и запуск MySQL. Окончательная настройка нового MySQL сервера. Основные утилиты и журнальные файлы. Работа с виртуальными хостами. Синтаксис для создания таблиц и управление данными.

    реферат [3,5 M], добавлен 24.06.2019

  • Архітектура Web-баз даних. Загальні відомості про мову SQL. Створення таблиць баз даних. Використання бібліотеки для пошуку інформації. Аутентифікація за допомогою РНР й MySQL. Зберігання паролів в окремому файлі на сервері, використання бази даних.

    курсовая работа [913,8 K], добавлен 12.01.2010

  • Проектування інформаційної системи для супроводу баз даних. Моделі запиту даних співробітником автоінспекції та обробки запиту про машини та їх власників. База даних за допомогою SQL-сервер. Реалізація запитів, процедур, тригерів і представлення.

    курсовая работа [1,7 M], добавлен 18.06.2012

  • Застосування PuTTY та основні команди SSH. Підключення до сервера з командного рядка. Структура бази даних. Поля: SQL, пошук, запит по шаблону, експорт та імпорт, операції та переваги. Виконання операцій у базі даних. Видалення непотрібних статтей.

    отчет по практике [3,0 M], добавлен 08.07.2015

  • Серверна мова програмування PHP. База даних MySQL. Мова та стандарти XML. Рівні та способи взаємодії засобів розробки. Засоби трансформації XML. Розробка інтернет-додатку з використанням PHP, MYSQL, XML. Розрахунок трудомісткості створення системи.

    дипломная работа [1,8 M], добавлен 19.08.2012

  • Методологія застосування можливостей середовища MySQL для роботи з базами даних. Реляційна основа та інтерактивні запити. Динамічне визначення даних. Вигляд таблиць після заповнення. Встановлення зв’язків, проектування схеми. Створення запитів та форм.

    курсовая работа [2,0 M], добавлен 10.04.2015

  • Створення баз даних з використанням платформи Microsoft Access 2010 та структурованих запитів SQL. ER-діаграма бази даних з описом кожної сутності та її атрибутів. Розробка інтерфейсу, елементів навігації та макросів для автоматичного виконання запитів.

    курсовая работа [3,1 M], добавлен 21.08.2014

  • Программное обеспечение Python и ее основные характеристики, как программной среды. Общие сведения о языке программирования Python. Особенности применения ППП Python (x,y) с использованием его различных вычислительных модулей в учебном процессе.

    дипломная работа [2,9 M], добавлен 07.04.2019

  • Інтернет як система об'єднаних комп'ютерних мереж для зберігання і передачі інформації. Літературні джерела щодо сутності баз даних та їх функціонування. Порівняльний аналіз MySQL, Oracle та Microsoft Access. Створення бази даних за допомогою MySQL.

    курсовая работа [1,5 M], добавлен 05.02.2014

  • Функції інформаційної системи. Аналіз функцій системи управління базами даних: управління транзакціями і паралельним доступом, підтримка цілісності даних. Аналіз системи MySQL. Елементи персонального комп’ютера: монітор, клавіатура, материнська плата.

    дипломная работа [1,2 M], добавлен 15.05.2012

  • Понятие и характеристики облачных технологий, модели их развертывания, технологические процессы, аспекты экономики и критика. Язык программирования Python, оценка функциональности, сравнение с аналогами. Управление облаком в Python на примере libcloud.

    курсовая работа [43,0 K], добавлен 08.06.2014

  • Общая характеристика СУБД MySQL. Отличительные черты физической организации хранения и обработки данных, имеющимся в СУБД MySQL. Характер связи между таблицами. Реализация ограничений семантической и ссылочной целостности на примере "Салон магии".

    курсовая работа [965,5 K], добавлен 13.01.2013

  • Общая характеристика системы управления базами данных MySQL, ее основные особенности и возможности, касающиеся обеспечения целостности данных. Реализация ограничений семантической и ссылочной целостности в СУБД MySQL на примере фрагмента ИС "Салон магии".

    курсовая работа [981,0 K], добавлен 14.10.2012

  • Можливості застосування середовища MySQL для роботи з базами даних. Завдання системи SQL Server. Розробка концептуальної моделі бази даних "Сервісний центр". Створення таблиць phpmyadmin, заповнення їх даними. Створення запитів і зв’язків у phpmyadmin.

    курсовая работа [2,3 M], добавлен 27.05.2015

  • Архітектура багатопроцесорних систем. Особливості розподілу та обробки даних. Розмежування між паралельними і розподіленими СУБД. Створення таблиць та запитів SQL у програмі MS Access. Побудова форм та макросів для зручного управління базою даних.

    курсовая работа [3,0 M], добавлен 11.09.2014

  • Отличительные особенности языка программирования Python: низкий порог вхождения, минималистичный язык, краткий код, поддержка математических вычислений, большое количество развитых web-фреймворков. Традиционная модель выполнения программ на языке Python.

    реферат [51,9 K], добавлен 18.01.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.