PostgreSQL vs. MySQL - порівняння, особливості та відгуки

PostgreSQL vs. MySQL - порівняння, особливості та відгуки

Хоча існує багато подібностей і збігів між двома базами даних PostgreSQL vs MySQL, існують також дуже чіткі відмінності між ними. Розробнику потрібно ясно надавати відмінність між ними, щоб визначити, яка БД найбільш підходить для конкретного випадку використання.

PostgreSQL проти MySQL

PostgreSQL vs MySQL - це дві популярні БД з відкритим вихідним кодом. Вони підтримують всі основні операції SQL, які потрібні користувачеві. Коли справа доходить до більш просунутих завдань, необхідно скористатися певними функціями, підтримуваними кожною БД, такими як матеріалізовані подання або часткові індекси. Наприклад, PostgreSQL підтримує матеріалізовані представлення, а MySQL - ні.


Зведення подібностей і відмінностей найбільш часто оцінюваних функцій і здібностей між PostgreSQL vs MySQL виглядає так:

Якщо розробник хоче створити додаток, орієнтований на споживача, метою якого є масштабування з понад мільйоном активних користувачів - MySQL кращий вибір. Інакше PostgreSQL краще.

Крім того, можна розглянути наступні аспекти порівняння PostgreSQL vs MySQL.

З точки зору надійності:

  1. У PostgreSQL 10 додали логічну реплікацію, що робить її еквівалентною MySQL. Історично реплікація була однією з причин вибору другої БД, але тепер за цим критерієм перша з нею зрівнялася.
  2. Обидві бази даних мають параметри, що дозволяють співвідносити продуктивність і довговічність MySQL vs PostgreSQL для веб- програм.

З точки зору швидкості:

  1. Для додатків з тривалим часом виконання SELECT для аналітики, PostgreSQL працює краще завдяки можливості паралельного запиту.
  2. Для невеликих SELECT, що охоплюють простий і кластеризований індекс, відмінно працює MySQL.
  3. Для програм з великою кількістю малих MySQL краще підходить.
  4. Для програм з важкими UPDATE MySQL працює набагато краще.
  5. Для програм з важкими DELETE на ефемерних даних обидві підтримують розділ, обидві працюють добре, якщо користувач ретельно використовує цю функцію.

З точки зору масштабованості і порівняння СУБД Postgres vs MySQL:


  1. Обидві БД масштабуються досить добре (вгору і вниз).
  2. PostgreSQL більш скромна. Якщо у користувача 1000 підключень, їй потрібно більше 10 ГБ додаткової пам 'яті.

Деякі цікаві відмінності PostgreSQL від MySQL:

  1. MySQL 8 тепер підтримує CTE і функції вікна. Тому обидві бази даних практично співставні, за винятком користувальницьких типів на PostgreSQL.
  2. На практиці PostgreSQL "безпечніше" за замовчуванням, особливо для новачків. Наприклад, MySQL має дивні значення за замовчуванням для кодування символів і сортування.
  3. Можна сказати, що MySQL відмінно підходить для масового OLTP, а PostgreSQL - для всього іншого, особливо для аналітики

Відкритий початковий код

Програмне забезпечення з відкритим вихідним кодом володіє унікальними перевагами - вартістю, гнучкістю, свободою, безпекою і підзвітністю, тобто неперевершеними пропріетарними програмними рішеннями. Програмне забезпечення з відкритим вихідним кодом у вільному доступі може бути перерозподілено і змінено ким завгодно.

ПО з відкритим вихідним кодом має довгострокову життєздатність і завжди має місце в передових технологіях. Воно створюється і підтримується світовою спільнотою організацій та окремих розробників.

PostgreSQL розроблена групою з декількох фірм і учасників. Це безкоштовне ПЗ з відкритим вихідним кодом з ліцензією PostgreSQL, аналогічною BSD або MIT.

Проект розробки MySQL зробив вихідний код доступним. Тепер він належить корпорації Oracle і пропонує різні платні видання для приватного користування.

Відповідність вимогам ACID

ACID (Atomicity, Consistency, Isolation, Durability) - це комплекс властивостей транзакцій БД. Відповідність ACID гарантує, що жодні дані не будуть втрачені або усунені в системі в разі збою, якщо навіть під час однієї транзакції відбулися численні зміни.

PostgreSQL сумісна з ACID і забезпечує виконання всіх вимог. MySQL працює тільки з ACID при використанні рушіїв InnoDB та NDB Cluster Storage.


Відповідність SQL - це стандарт, в якому база даних повинна виконувати всі структуровані рекомендації і стандарти мови запитів. Це дуже важливо, коли компанії хочуть працювати з гетерогенними базами даних для програми.

Наявність відповідності SQL дозволяє дуже легко переміщувати потрібні значення з однієї бази даних, сумісної з SQL, в іншу, наприклад, Oracle на PostgreSQL або SQL Server. У цьому випадку потрібно враховувати перед прийняттям рішення, яку базу даних вибрати, MySQL vs PostgreSQL l.

PostgreSQL підтримує більшість основних функцій SQL. З майже 180 функцій, необхідних для відповідності Core, PostgreSQL виконує не менше 160. В даний час жодна з існуючих версій системи управління БД не претендує на їх повну відповідність.

MySQL частково сумісна з деякими версіями, наприклад, не підтримує обмеження CHECK.

Реплікація швидкої обробки WAL

Це означає проведення оперативного копіювання даних з БД на одному ПК або використання навантажених систем MySQL vs PostgreSQL vs SQLite сервера, щоб користувачі володіли свіжою інформацією, отримуючи доступ до даних для виконання завдань.


PostgreSQL підтримує реплікацію Master-Standby і вносить значні поліпшення, створюючи надзвичайно швидку обробку WAL, що призводить практично до реплікації в реальному часі і можливості "гарячого резерву".

Реплікації, запропоновані PostgreSQL:

  1. Одиночний майстер в один режим очікування.
  2. Один майстер для декількох резервних копій.
  3. Гарячий режим очікування/потокова реплікація.
  4. Двонаправлена реплікація.
  5. Реплікація потоку логічних журналів.
  6. Каскадна реплікація.

Реплікації MySQL:

  1. Одиночний майстер в один режим очікування.
  2. Один майстер для декількох резервних копій.
  3. Одиночний майстер в один режим очікування для одного або декількох резервних номерів.
  4. Циклічна реплікація від A до B до C і назад до A.
  5. Майстер освоєння.

Програми для збільшення швидкості

Продуктивність - це область, яку можна оцінити тільки шляхом порівняння показників потенційних сценаріїв, оскільки вона залежить від чистих вимог конкретного користувача і характеру програми для збільшення швидкості читання PostgreSQL vs MySQL.

PostgreSQL широко використовується у великих системах, де швидкість має визначальне значення, а дані повинні бути коректні. Вона підтримує різні варіанти оптимізації продуктивності, наприклад, Oracle, SQL Server і пристойно працює в OLTP/OLAP, коли необхідна швидкість і детальний аналіз даних. Вона також добре працює з додатками Business Intelligence, але краще підходить для програм Data Warehousing і аналізу даних, що потребують швидкої швидкості читання/запису Performance PostgreSQL vs MySQL.


MySQL є широко використовуваною в веб-проектах, яким потрібна база даних для простих транзакцій. MySQL, коли перевантажена важкими навантаженнями або при спробі виконати складні запити, добре працює в OLAP/OLTP-системах, які потребують швидкості читання. В цілому, MySQL є досить надійною, добре працює з високими сценаріями паралелізму і з додатками Business Intelligence.

Безпека і хмарний хостинг

Безпека бази даних відноситься до колективних заходів, що використовуються для захисту її від шкідливих загроз і атак. Це широкий термін, який включає в себе безліч процесів, інструментів і методологій, що забезпечують безпеку в середовищі БД. Проведемо коротке порівняння SQLite MySQL і PostgreSQL з безпеки.

PostgreSQL має ROLES і успадковані ролі для встановлення та підтримки дозволів. Вона також має вбудовану підтримку SSL для з 'єднань і шифрування повідомлень клієнт/сервер і безпеку рівня рядка. PostgreSQL має розширення SE-PostgreSQL, що надає додаткові елементи управління доступом на основі політики безпеки SELinux.

MySQL реалізує безпеку на основі контролю доступу (ACL) для будь-яких операцій, які користувач може спробувати виконати.

Хмарний хостинг забезпечує еластичність серверів, дозволяючи швидко розширювати або скорочувати свої можливості. Це також дає можливість скоротити час простою при одночасному управлінні піковими робочими навантаженнями і підтримується всіма основними постачальниками хмарних сервісів, включаючи Amazon, Google і Microsoft.


Підтримка спільноти паралелізму

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

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

Підтримка паралелізму означає, що кілька користувачів можуть мати доступ до даних одночасно. Це одна з основних функцій для порівняння MySQL і PostgreSQL, які розглядаються щодо подібного критерію. Така система підвищує здатність багатьох людей одночасно отримувати доступ до бази даних і використовувати її в декількох місцях.

Можливості NoSQL і JSON

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

PostgreSQL підтримує JSON та інші функції NoSQL, такі як вбудована підтримка XML та пари ключ-значення з HSTORE. Він також підтримує індексування даних JSON для більш швидкого доступу.

У MySQL є підтримка типу даних JSON, але немає ніякої іншої функції NoSQL. Він не підтримує індексацію для JSON.

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

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

PostgreSQL підтримує матеріалізовані відображення та тимчасові таблиці. MySQL підтримує тимчасові таблиці, але не підтримує матеріалізовані перегляди

Геопросторові дані

Це все географічні дані, які зберігаються в БД і можуть забезпечити аналіз. Це інформація про фізичний об 'єкт, який може бути представлений чисельними значеннями в географічній системі координат.

PostgreSQL підтримує геопросторові дані через розширення PostGIS.

MySQL має вбудовану підтримку геопросторових даних і пропонує тільки близько 80 функцій, пов 'язаних з просторовими значеннями, з яких тільки близько 30 функцій виконують будь-який реальний аналіз. До них належать такі операції, як Buffer, Intersection і Union.

MSSQL і SQL Anywhere можуть запропонувати понад 80 і 100 просторових операцій, відповідно. Обидва включають в себе аналітичні функції, такі як Union, Difference, обчислення довжин, відстаней і площ.

Що стосується тривимірного аспекту геоданих, MSSQL і SQL Anywhere пропонують одну або дві функції для перевірки того, чи є геометрія 3D. Якщо необхідно, вони рекомендують додати координату Z.

З PostgreSQL і Oracle, що пропонують близько 300 функцій, включаючи 2D, 3D, MSSQL і SQL Anywhere, не має значних проблем геоданих, а MySQL тільки наближається до конкурентів в цій області.

Використання мов програмування

Ця можливість допомагає широкому колу розробників виконувати кілька завдань рідною мовою.

PostgreSQL підтримує широкий спектр мов програмування, включаючи C/C + +, Java, JavaScript, Net, R, Perl, Python і Ruby. Є можливість навіть запустити власний код в окремих процесах, тобто працювати як фонові програми.

MySQL має підтримку програмування на стороні сервера однією мовою, яка не є розширюваною.

PostgreSQL має декілька функцій, призначених для розширюваності. Можна додавати нові функції та типи індексів. MySQL не має підтримки розширюваності.

Засоби адміністрування та моніторингу

Оскільки бази даних є важливими програмними компонентами, існують десятки інструментів, доступних для адміністрування, моніторингу та усунення неполадок, починаючи з програм командного рядка:

  • mysql (MySQL, MariaDB).
  • psql (PostgreSQL).

Вони відмінно підходять для основних завдань адміністрування, тому що вбудовані зі своїми серверами і завжди доступні. Не потрібно нічого додаткового для встановлення. Обидва вони мають доступну історію команд, тому можна повторно запускати раніше виконані запити і команди. У них є набір команд bult-in, які можуть полегшити взаємодію з базою даних.

Наприклад, psql має d команду перераховувати всі бази даних і mysql має status команду для отримання інформації, такі як версія сервера і час безвідмовної роботи. Також доступні офіційні графічні інструменти MySQL 8 vs PostgreSQL:

  • MySQL Workbench (MySQL, MariaDB).
  • pgAdmin4 (PostgreSQL).
  • Для MySQL Workbench.

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

Відгуки користувачів

Досвідчені програмісти вважають, що MySQL і PostgreSQL - це дві з найпопулярніших програм RDMS з відкритим вихідним кодом на ринку. Протягом багатьох років вони успішно конкурували з комерційними програмами баз даних із закритим вихідним кодом. Кожна з них отримала певну репутацію, маючи свої сильні і слабкі сторони. Тому новачкам складно зробити самостійний вибір, в цьому випадку краще скористатися порадами досвідчених розробників. Фахівці пишуть, що обидві БД можна використовувати з успіхом, але потрібно знати, для яких випадків вибрати одну або іншу.

Ось деякі рекомендації, якими діляться у своїх відгуках розробники:

  • MySQL сприймається набагато швидше, але пропонує менше можливостей. Вважається, що PostgreSQL має глибший набір функцій.
  • Деякі програмісти вважають PostgreSQL схожим на Oracle.
  • Поточні випуски обох продуктів (MySQL 5.6 і PostgreSQL 9.2) мають велику кількість швидкісних, потужних і динамічних функцій.
  • PostgreSQL розробив сильні функції для підвищення продуктивності. В останніх випусках було додано понад 70 нових поліпшень.
  • PostgreSQL дуже суворий у кодуванні.
  • MySQL широко використовується як частина LAMP стека програм з відкритим вихідним кодом, які складають основу багатьох веб-сайтів в Інтернеті.
  • У головній програмі MySQL немає інструментів графічного інтерфейсу користувача для керування програмним забезпеченням або створення та обслуговування баз даних.
  • MySQL працює на багатьох платформах Windows, Linux і Mac.
  • MySQL менш надійний. Оскільки він широко використовується на невеликих сайтах, існує безліч надбудов, плагінів і додатків для оптимізації MySQL з популярних програм, таких як Wordpress, Drupal і Joomla.

Висновки

Дивно, але виявляється, що MySQL найкраще підходить для онлайн-транзакцій, а PostgreSQL - для додавання тільки аналітичних процесів, таких як сховище даних.

Нижче наведено зведену таблицю порівняння MySQL і PostgreSQL:

Особливість

PostgreSQL

MySQL

Відкритий початковий код

Повністю відкрите джерело

Відкритий вихідний код, але належить Oracle, пропонує комерційні версії

Відповідність вимогам ACID

Повна відповідність вимогам ACID

Деякі версії сумісні

Відповідність SQL

Майже повністю сумісний

Деякі версії сумісні

Підтримка паралелізму

Реалізація MVCC підтримує декілька запитів без блокування читання

Підтримка в деяких версіях

Безпека

Безпечне використання SSL

Підтримка SSL у деяких версіях

Підтримка NoSQL/JSON

Декілька підтримуваних функцій

Лише підтримка даних JSON

Методи доступу

Підтримує всі стандарти

Підтримує всі стандарти

Копіювання

Доступні кілька технологій реплікації:

1.    Одиночний майстер в один режим очікування

2.    Поодинокий майстер для декількох резервних копій

3.    Гарячий режим очікування/потокова реплікація

4.    Двонаправлена реплікація

5.    Реплікація потоку логічних журналів

Стандартна реплікація master-standby:

1.    Одиночний майстер в один режим очікування

2.    Поодинокий майстер для декількох резервних копій

3.    Один майстер в один режим очікування для одного або декількох резервних номерів

4.    Циклічна реплікація (від A до B до C і назад до A)

5.    Майстер освоєння

Матеріалізовані види

Підтримується

Не підтримується

Тимчасові таблиці

Підтримується

Підтримується

Геоданні

Підтримується

Підтримується

Мови програмування

Підтримується

Підтримується

Система розширюваного типу

Підтримується

Підтримується

Як бачимо, переважна більшість ускладнень з Postgres випливають з її надлишкової архітектури. Майбутні версії Postgres, ймовірно, вимагатимуть серйозної модернізації механізму зберігання. Фахівці кажуть, що MySQL "" грає в доганялки "" з Postgres, але на теперішню годину розстановка сил змінилася.