“акие большие, логически структурированные массивы, как базы данных, совершенно бессмысленны без систем управлени€ рел€ционными данными (–—”Ѕƒ). –—”Ѕƒ Ц это программное решение, позвол€ющее взаимодействовать с базой данных (Ѕƒ). ¬ы можете получать, добавл€ть или удал€ть данные, а также управл€ть доступом к хранимой информации.

Ќа рынке существует множество программных вариантов, и большинство из них распростран€етс€ с открытым исходным кодом, то есть бесплатно. —амыми известными решени€ми дл€ веб-серверов €вл€ютс€ MySQL и PostgreSQL. ¬ыбор одного из вариантов зависит от ваших требований к рабочей нагрузке и назначению Ѕƒ.

¬ данной статье рассматриваютс€ основные различи€ MySQL и PostgreSQL и приводитс€ их подробное сравнение.


 раткий обзор MySQL и PostgreSQL

MySQL и PostgreSQL посто€нно обновл€ютс€ и улучшаютс€ активным и изобретательным сообществом. Ётот непрерывный процесс сокращает принципиальные отличи€ между двум€ решени€ми.

“ем не менее, в них есть существенные различи€, которые про€вл€ютс€ при развертывании с большой рабочей нагрузкой. ѕрежде, чем перейти к подробному анализу каждого решени€, предлагаем ознакомитьс€ с кратким сравнением систем.

MySQL PostgreSQL
ѕредлагают как открытые, так и платные коммерческие версии. Ѕесплатна€, полностью с открытым кодом.
ќчень быстрые и надежные. јдаптивна€ и многофункциональна€.
ƒелают акцент на скорости, а не следовании ключевым принципам SQL ѕридерживаетс€ 160 из 179 об€зательных пунктов ключевых принципов и стандартов SQL.
»деальна дл€ рабочих процессов в веб-решени€х с интенсивным чтением данных. »деальна дл€ сложных запросов и больших баз данных.
“емп разработки замедлилс€ после того, как система стала частично проприетарным решением. јктивное и многочисленное сообщество посто€нно разрабатывает новые функции.
MySQL возлагает функции безопасности на списки управлени€ доступом (ACL). ¬ PostgreSQL есть встроенна€ поддержка SSL и возможность шифровани€ св€зи между клиентом и сервером.
ѕоддерживает управление параллельным доступом посредством многоверсионности (MVCC), но при условии, что оно поддерживаетс€ подсистемой хранени€ InnoDB ¬строенна€ реализаци€ MVCC.
—тандартна€ репликаци€ master-standby Ќесколько вариантов репликации
Ќебольша€ поддержка нерел€ционных функций ѕоддержка нескольких нерел€ционных функций
¬ерси€ InnoDB совместима с ACID (атомарность, согласованность, изолированность, прочность) ѕолна€ совместимость с ACID
ќграниченна€ поддержка расшир€емости ¬озможность добавлени€ новых функций, типов, индексных типов и т.д.
ѕо умолчанию добавлены геопространственные данные ¬озможность реализации геопространственных данных через расширени€
ќграниченна€ поддержка серверного программировани€ на нерасшир€емом €зыке PostgreSQL поддерживает самые попул€рные €зыки программировани€
ѕоддерживает развертывание в контейнерах Docker ѕоддерживает развертывание в контейнерах Docker

—равнение производительности MySQL и PostgreSQL

»змерение производительности –—”Ѕƒ во многом зависит от требований, предъ€вл€емых к базе данных. ¬ базовых примерах обе системы управлени€ Ѕƒ работают одинаково хорошо.

ѕроизводительность и скорость:

PostgreSQL создавалс€ дл€ выполнени€ сложных операций; он совместим с множеством платформ и €зыков MQL не стремилс€ следовать всем стандартам SQL, поэтому основной упор делаетс€ на скорость

ќсновной упор в PostgreSQL сделан на совместимости; система показала превосходные результаты при использовании в сложных запросах, анализе чтени€/записи, а также управлени€ большими базами данных. ¬ажно помнить, что PostgreSQL может серьезно повли€ть на производительность пам€ти, поскольку каждое новое клиентское подключение создает отдельные ветку процесса весом в 10 ћЅ.

PostgreSQL vs MySQL

MySQL ставил перед собой цель достичь максимальной скорости и простоты развертывани€. Ёта характеристика MySQL особенно полезна при простом обмене информации и рабочих процессах в веб-решени€х с интенсивным чтением данных. ѕростота развертывани€ Ѕƒ означает, что вы можете пользоватьс€ MySQL дл€ быстрого и горизонтального масштабировани€ данных.


Ћицензи€ и поддержка сообщества

PostgreSQL Ц это бесплатное решение с полностью открытым исходным кодом. Ћицензи€ Open Source означает, что исходный код находитс€ в открытом доступе; кто угодно может его копировать, измен€ть и распростран€ть.

“ака€ схема создала активное сообщество разработчиков, которое посто€нно анализирует текущее состо€ние системы и разрабатывает новые, улучшенные решени€.

MySQL доступна в бесплатном доступе с открытым кодом, а также в нескольких платных коммерческих верси€х с проприетарной лицензией. Ќекоторые элементы и плагины доступны только в проприетарных верси€х, что в итоге может приводить к дополнительным затратам.

 роме того, люди жалуютс€, что процесс разработки слегка замедлилс€, поскольку после покупки компанией Oracle, MySQL перестал быть системой с полностью открытым кодом.


—оответствие SQL

—овременные приложени€ и базы данных часто имеют распределенную архитектуру. —ледование официальным стандартам и руководствам SQL упрощает обмен данными между различными Ѕƒ и помогает им соответствовать строгим регул€торным требовани€м (например, GDPR, PCI и ISO).

—оответствие SQL-стандартам:

MySQL сосредоточена на увеличении скорости и надежности. ¬ итоге MySQL не до конца соответствует стандартам ISO PostgreSQL придерживаетс€ большей части основных принципов и стандартов SQL; это портативна€ система, с которой легко интегрируютс€ различные инструменты
—оответствие SQL

PostgreSQL и MySQL: синтаксические отличи€

MySQL и PostgreSQL основаны на одних и тех же стандартах SQL и активно пытаютс€ следовать максимально возможному количеству требований. “ак что синтаксис и команды в двух –—”Ѕƒ практически одинаковы. ƒавайте рассмотрим несколько основных отличий, которые могут сказатьс€ на управлении данными.

—интаксис PostgreSQL —интаксис MySQL
ƒанные из таблицы чувствительны к регистру. WHERE Company = СMerionТ это не то же самое, что WHERE Company = СmerionТ ƒанные не чувствительны к регистру. WHERE Company = СMerionТ Ц это то же самое, что и WHERE Company = СmerionТ
PostgreSQL допускает использование только одиночных кавычек: Company = СmerionТ ѕоддерживает одиночные и двойные кавычки: Company = СmerionТ, равно как и Company = УmerionФ
 оманды дл€ даты и времени: CURDATE(), CURTIME(), EXTRACT()  оманды дл€ даты и времени: CURRENT_DATE(), CURRENT_TIME(), EXTRACT()

ќтличи€ в безопасности PostgreSQL и MySQL

Ќеобходимость защиты баз данных в –—”Ѕƒ от вредоносной активности привела к созданию множества инструментов, протоколов безопасности и процедур.

√лавную функцию безопасности в MySQL выполн€ют списки управлени€ доступом (ACL). ¬ PostgreSQL встроена поддержка SSL, а дл€ настройки разрешений пользователей используетс€ функци€ ROLE.

MySQL возлагает функцию безопасности на списки управлени€ доступом (Access Control Lists - ACL), которые след€т за всеми подключени€ми, запросами и другими операци€ми.  роме того, предоставл€етс€ ограниченна€ поддержка подключений между MySQL-клиентами и серверами с SSL-шифрованием.

Ќапример, в MySQL есть сценарий, который повышает безопасность вашей Ѕƒ за счет настройки парол€ дл€ пользовател€ root. Ётот же сценарий автоматически удал€ет все стандартные тестовые базы данных из вашей системы.  роме того, MySQL поддерживает управление пользовател€ми и позвол€ет настраивать уровни доступа дл€ каждого пользовател€.

ƒл€ настройки разрешений пользователей PostgreSQL использует функцию ROLE. ¬ ней есть встроенна€ поддержка SSL и шифрование обмена данными между клиентом и сервером. PostgreSQL также предлагает встроенное расширение под названием SE-PostgreSQL дл€ настройки дополнительных элементов контрол€ доступа в соответствии с политикой безопасности SELinux.


”добство дл€ пользователей и универсальность интерфейса

ѕользовательский интерфейс в PostgreSQL называетс€ pgAdmin4. ќн помогает начинающим пользовател€м выполн€ть сложные задачи и управл€ть базами данных. ќсновной акцент в PostgreSQL сделан на расшир€емости, поэтому вы можете использовать pgAdmin4 дл€ добавлени€ новых типов данных, функций и типов индексов.

pgAdmin4

√рафический пользовательский интерфейс в MySQL называетс€ Workbench. Ётот инструмент объедин€ет в себе разработку, управление, проектирование, создание и поддержание базы данных в единую интегрированную среду —”Ѕƒ MySQL.

MySQL Workbench

языки программировани€

ќдин из важнейших аспектов, которые необходимо учитывать при переходе на новую среду, заключаетс€ в том, как это повли€ет на сотрудников из отдела разработки и эксплуатации. „ем больше €зыков программировани€ поддерживает сервер базы данных, тем легче разработчикам добавл€ть новые функции и улучшать уже существующие.

¬ этом плане PostgreSQL и MySQL поддерживает большое количество €зыков программировани€.

PostgreSQL MySQL
C++, .NET, Java, Delphi, Perl, Lua, Node.js, Python, PHP, R, D, Erlang, Go, Lisp C, C++, Java, Perl, Delphi, Lua, Go, R, .NET, Node.js, Python, PHP, Erlang, Lisp, D

ѕараллельна€ обработка данных

’орошо реализованный параллелизм позвол€ет многим люд€м из разных мест одновременно обращатьс€ к Ѕƒ и работать с ней без ограничений и угрозы противоречивости данных.

 огда базе данных с управлением параллельным доступом посредством многоверсионности (MVCC - multi-versioning concurrency control) необходимо обновить данные, она не перезаписывает оригинальную информацию. ¬место этого она создает более свежую версию файла и сохран€ет ее предыдущую копию.

Ёто принципиально важный момент, если к вашим наборам данных одновременно должны обращатьс€ многие подписчики. ≈сли в системе отсутствует контроль параллельной обработки данных, то чтение из Ѕƒ, пока другой процесс записывает в нее данные, приводит к несогласованности данных.

¬строенна€ реализаци€ MVCC позвол€ет достичь высочайшего уровн€ параллелизма в PostgreSQ MySQL тоже предлагает поддержку MVCC, но только если она поддерживаетс€ подсистемой хранилища InnoDB.

–епликаци€ базы данных

 опирование данных из одного сервера Ѕƒ в другую базу на другом сервере называетс€ репликацией. ѕри таком распределении информации группа пользователей сможет обращатьс€ к новым данным, и это никак помешает работе других пользователей.

ќдной из самых сложных задач в репликации Ѕƒ €вл€етс€ поддержание согласованности данных внутри распределенной системы. MySQL и PostgreSQL предлагают различные возможности дл€ репликации Ѕƒ.

PostgreSQL и MySQL поддерживают репликацию в виде master Ц standby (основной источник Ц резервна€ Ѕƒ) и нескольких standby, а также предлагают р€д возможностей:

PostgreSQL:

  • логическа€ репликаци€;
  • потокова€ репликаци€;
  • двунаправленна€ репликаци€.

MySQL:

  • репликаци€ master Ц master;
  • master Ц standby, перенаправленна€ на один или несколько резервных серверов;
  • кругова€ репликаци€.

«аключение

PostgreSQL Ц это многофункциональна€ Ѕƒ дл€ обработки сложных запросов и больших баз данных. MySQL Ц это быстрое, надежное и попул€рное решение. MySQL относительно прост в установке и обслуживании. ‘ункциональные возможности PostgreSQL и MySQL во многом схожи.

PostgreSQL отличаетс€ от MySQL по определенным рабочим нагрузкам. ƒанна€ стать€ поможет вам прин€ть осмысленное решение с учетом всех достоинств той или иной –—”Ѕƒ.


—кидки 50% в Merion Academy

¬ыбрать курс