Порівняння mysql і postgresql

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

MySQL існує досить давно і зарекомендувала себе як відмінне рішення, Postgresql прийшла на ринок приблизно в той же самий час, але надає достатньо багато цікавих функцій і можливостей, завдяки чому стрімко набирає популярність. У цій статті ми спробуємо виконати порівняння MySQL vs Postgresql, порівняємо основні відмінності цих систем, з`ясуємо як вони працюють і спробуємо зрозуміти яка система буде краще для вашого проекту.

Системи управління базами даних

Бази даних призначені для структурованого зберігання і швидкого доступу до різних даних. Кожна база даних, крім самих даних, повинна мати певну модель роботи, по якій буде виконуватися обробка даних. Для управління базами даних використовуються СУБД або системи управління базами даних, саме до таких програм відносяться MySQL і Postgresql.

Реляційні системи управління базами даних дозволяють розміщувати дані в таблицях, пов`язуючи рядки з різних таблиць і, таким чином, пов`язуючи різні, об`єднані логічно дані. Перед тим, як ви зможете зберігати дані, необхідно створити таблиці певного розміру і вказати тип даних для кожного стовпця. Стовпи представляють поля даних, а самі дані розміщені в рядках. Обидві системи управління базами даних, і MySQL vs Postgresql належать до реляційних. Далі ми розглянемо докладніше чим відрізняються обидві програми. А тепер перейдемо до більш детального розгляду.

коротка історія

MySQL

Розробка MySQL почалася ще в 90-х роках. Перший внутрішній випуск бази даних відбувся в 1995 році. За цей час розробкою програми займалися кілька компаній. Розробка була розпочата шведською компанією MySQL AB, яку придбала Sun Microsystems, яка, власне перейшла у власність Oracle. На даний момент, починаючи з 2010 року, розробкою займається Oracle.

Postgresql

Розробка Postrgresql почалася в далекому 1986 році в стінах Каліфорнійського університету Берклі. Розробка тривала майже вісім років, потім проект розділився на дві частини комерційну базу даних IIlustra і повністю вільний проект Postrgesql, який розробляється ентузіастами.

Збереження даних

MySQL

MySQL - це реляційна база даних, для зберігання даних в таблицях використовуються різні движки, але робота з двигунами захована в самій системі. На синтаксис запитів і їх виконання движок не впливає. Підтримуються такі основні движки MyISAM, InnoDB, MEMORY, Berkeley DB. Вони відрізняються між собою способом запису даних на диск, а також методами зчитування.

Postgresql

Postgresql вдає із себе об`єктно реляційну базу даних, яка працює тільки на одному двигуні - storage engine. Всі таблиці представлені у вигляді об`єктів, вони можуть успадковуватися, а всі дії з таблицями виконуються за допомогою об`єктивно орієнтованих функцій. Як і в MySQL всі дані зберігаються на диску, в спеціально відсортованих файлах, але структура цих файлів і записів в них дуже сильно відрізняється.

стандарт SQL

Незалежно від використовуваної системи управління базами даних, SQL - це стандартизований мову виконання запитів. І він підтримується всіма рішеннями, навіть MySQL або Postgresql. Стандарт SQL був розроблений в 1986 році і за цей час уже вийшло кількох версій.

MySQL

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

Postgresql




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

можливості обробки

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

MySQL

При виконанні запиту MySQL завантажує весь відповідь сервера в пам`ять клієнта, при великих обсягах даних це може бути не зовсім зручно. В основному за функціями Postgresql перевершує Mysql, далі розглянемо в яких саме.

Postgresql

Postgresql підтримує використання курсорів для переміщення по отриманим даним. Ви отримуєте тільки покажчик, весь відповідь зберігається в пам`яті сервера баз даних. Цей покажчик можна зберігати між сеансами. Тут підтримується побудова індексів відразу для декількох стовпців таблиці. Крім того, індекси можуть бути різних типів, крім hash і b-tree доступні GiST і SP-GiST для роботи з містами, GIN для пошуку по тексту, BRIN і Bloom.

Postgresql підтримує регулярні вирази в запитах, рекурсивних запитів і успадкування таблиць. Але тут є кілька обмежень, наприклад, ви можете додати нове поле тільки в кінець таблиці.

 продуктивність




Бази даних повинні обов`язково бути оптимізовані для оточення, в якому ви будете працювати. Історично так склалося що MySQL орієнтувалася на максимальну продуктивність, а Postgresql розроблялася як база даних з великою кількістю налаштувань і максимально відповідну стандарту. Але з часом Postgresql отримав багато поліпшень і оптимізацій.

MySQL

У більшості випадків для організації роботи з базою даних в MySQL використовується таблиця InnoDB, ця таблиця представляє з себе B-дерево з індексами. Індекси дозволяють дуже швидко отримати дані з диска, і для цього буде потрібно менше дискових операцій. Але сканування дерева вимагає знаходження двох індексів, а це вже повільно. Все це означає що MySQL буде швидше Postgresql тільки при використанні первинного ключа.

Postgresql

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

В цілому PostgreSQL працює швидше, за виключенням використання первинних ключів. Давайте розглянемо декілька тестів з різними операціями:

типи даних

Один з основних моментів обох баз даних це підтримувані типи даних, які ви можете використовувати. Оскільки обидва рішення намагаються відповідати синтаксису SQL, то вони мають схожі набори, але все ж дещо різняться.

MySQL

MySQL підтримує такі типи даних:

  • TINYINTДуже маленьке ціле .;
  • SMALLINT: маленьке ціле;
  • MEDIUMINT: ціле середнього розміру;
  • INT: ціле нормального розміру;
  • BIGINT: велике ціле;
  • FLOAT: знакове число з плаваючою комою одинарної точності;
  • DOUBLE, DOUBLE PRECISION, REAL: знакове число з плаваючою комою подвійної точності
  • DECIMAL, NUMERIC: знакове число з плаваючою комою;
  • DATE: дата;
    DATETIME: комбінація дати і часу;
  • TIMESTAMP: відмітка часу;
  • TIME: час;
    YEAR: рік в форматі YY або YYYY;
  • CHAR: Рядок фіксованого розміру, що доповнюється справа пробілами до максимальної довжини;
  • VARCHAR: рядок змінної довжини;
  • TINYBLOB, TINYTEXT: виконавчі або текстові дані максимальною довжиною 255 символів;
  • BLOB, TEXT: Виконавчі або текстові дані максимальною довжиною 65535 символів;
  • MEDIUMBLOB, MEDIUMTEXT: текст або двійкові дані;
  • LONGBLOB, LONGTEXT: текст або виконавчі максимальної дані довжиною 4294967295 символів;
  • ENUM: перерахування;
  • SET: безлічі.

Postgresql

Підтримувані типи полів в Postgresql досить сильно відрізняються, але дозволяють записувати точно ті ж дані:

  • bigint: знакова 8-байтове ціле;
  • bigserial: Автоматично що збільшується 8-байтове ціле;
  • bit: двоичная рядок фіксованої довжини;
  • bit varying: двоичная рядок змінної довжини;
  • boolean: прапор;
  • box: прямокутник на площині;
  • byte: Бінарні дані;
  • character varying: рядок символів фіксованої довжини;
  • character: рядок символів змінної довжини;
  • cidr: мережеву адресу IPv4 або IPv6;
  • circle: коло на площині;
  • date: Дата в календарі;
  • double precision: число з плаваючою комою подвійної точності;
  • inet: адреса інтернет IPv4 або IPv6;
  • integer: Знакова 4-байтное ціле число;
  • interval: проміжок часу;
  • line: нескінченна пряма на площині;
  • lseg: відрізок на площині;
  • macaddr: MAC-адресу;
  • money: грошова величина;
  • path: геометричний шлях на площині;
  • point: геометрична точка на площині;
  • polygon: багатокутник на площині;
  • real: число з плаваючою точкою одинарної точності;
  • smallint: двухбайтовое ціле число;
  • serial: автоматично що збільшується четирехбітних ціле число;
  • text: рядок символів змінної довжини;
  • time: час доби;
  • timestamp: дата та час;
  • tsquery: Запит текстового пошуку;
  • tsvector: документ текстового пошуку;
  • uuid: Унікальний ідентифікатор;
  • xml: XML-дані.

Як бачите, типів даних в Postgresql більше і вони більш різноманітні, є свої типи полів для певних видів даних, яких немає MySQL. Відмінність MySQL від Postgresql очевидно.

Розробка

Обидва проекти мають відкритий вихідний код, але розвиваються по-різному. Розвиток MySQL подобається далеко не всім. І в цьому порівняння mysql і postgresql дає багато відмінностей.

MySQL

База даних MySQL розробляється компанією Oracle і ходять чутки, що компанія має намір гальмує розвиток движка. Було створено дуже багато ФОРКОМ проекту, в тому числі форк MariaDB від розробника оригінальної MySQL. Але все ж розвиток залишається повільним.

Postgresql

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

висновки

У цій статті ми виконали порівняння mysql і postgresql, розглянули основні відмінності обох систем управління базами даних і спробували зрозуміти що краще postgresql або mysql. Загалом результаті кращим за можливості виходить Postgresql, але він складний і не скрізь його можна застосовувати. MySQL простіше, але не підтримує деяких цікавих функцій. А яку базу даних ви оберете для свого проекту? Чому саме її? Напишіть в коментарях!

На завершення відео з описом можливостей і перспектив Postgresql:

Поділися в соціальних мережах:

Схожі
Імпорт бази даних в phpmyadminІмпорт бази даних в phpmyadmin
Структура бази данихСтруктура бази даних
Що таке реплікація в mysql?Що таке реплікація в mysql?
Права (привілеї) користувачів в mysqlПрава (привілеї) користувачів в mysql
Установка postgresql centos 7Установка postgresql centos 7
Управління базами даних в phpmyadminУправління базами даних в phpmyadmin
Pdo. Частина 1.Pdo. Частина 1.
MysqlMysql
Помилка max user connections в mysqlПомилка max user connections в mysql
Connect2sqlConnect2sql
» » Порівняння mysql і postgresql