MySQL против PostgreSQL

Меня часто спрашивают, «Что вы предпочитаете,
PostgreSQL или MySQL?» Мой ответ всегда один и тот же: «Это – вопрос
предпочтения». Вы можете задать множеству других разработчиков тот же самый
вопрос, и их ответы будут весьма различного толка. Вот – сравнение баз данных
MySQL и PostgreSQL, предлагаемое не ради высказывания моего мнения, а ради того,
чтобы помочь другим принять собственное решение.
Обеим системам есть что предложить в вопросах стабильности, гибкости и
производительности. MySQL имеет особенности, в которых PostgreSQL испытывает
недостаток, и наоборот. Моя первичная задача – помочь решить, какая из этих двух
баз данных будет использоваться в ваших собственных разработках.
Прежде, чем начать сравнение этих баз данных, я должен прояснить, что буду
придерживаться заданных по умолчанию инсталляций. MySQL имеет много различных
типов таблиц, которые поддерживают транзакации и внешние ключи. Однако,
некоторые из конфигураций этих типов таблиц весьма сложны. Не многие
разработчики сети или программисты используют дополнительные типы таблиц,
существующие в MySQL. А теперь давайте сравним эти два продукта.

Список особенностей и возможностей


В таблице А приведено сравнение наиболее употребимых особенностей и
возможностей баз данных MySQL и PostgreSQL.
Таблица А – это не исчерпывающий список особенностей, типов данных или
проблем производительности, касающийся этих двух систем баз данных – она лишь
дает некоторое представление о том, что каждая из них может предложить. Из
таблицы мы видим, что PostgreSQL предлагает полные особенности и возможности
традиционных приложений баз данных, в то время как MySQL сосредотачивается на
более быстром выполнении (работе) для веб приложений. Развитие индустрии
«открытых исходников» принесет большее количество особенностей и возможностей в
последующих версиях обеих баз данных.

Таблица A: сравнение MySQL и PostgreSQL

ОсобенностиPostgreSQLMySQL
ANSI SQL совместимостьБлизка к стандарту ANSI SQLСледует некоторым стандартам ANSI SQL
Скорость работыМедленнееБыстрее
Вложенные селектыДаНет
ТранзакацииДаДа, однако должен использоваться тип таблицы InnoDB
Ответ базы данныхДаДа
Поддержка внешних ключейДаНет
ПредставленияДаНет
Хранимые процедурыДаНет
ТриггерыДаНет
UnionsДаНет
Полные JoinsДаНет
Ограничители целостностиДаНет
Поддержка WindowsДаДа
Вакуум (очистка)ДаНет
ODBCДаДа
JDBCДаДа
Различные типы таблицНетДа

Когда использовать MySQL


Почему бы вы предпочли MySQL, нежели PostgreSQL? Сначала, мы должны
рассмотреть потребности приложений в терминах требований базы данных. Если я
хочу создать веб приложение, и главное для меня это производительность и
скорость – MySQL будет лучшим выбором, потому что она быстра и разработана для
того, чтобы хорошо работать с веб серверами. Однако, если я хочу создать другое
приложение, которое требует выполнения транзакаций и наличия внешних ключей,
лучшим выбором станет PostgreSQL.
Даже при том, что MySQL не полностью совместима с ANSI SQL стандартом, я
должен упомянуть, что, в то время как PostgreSQL ближе к ANSI SQL стандарту,
MySQL ближе к ODBC стандарту.
Позвольте мне описать некоторые плюсы использования MySQL:

  • MySQL относительно быстрее PostgreSQL.
  • Дизайн и планирование базы данных несколько проще.
  • Можно создать простой веб сайт с использованием базы.
  • Ответы на запросы MySQL были хорошо протестированны.
  • Нет нужды использовать методы очистки (вакуум).

Когда использовать PostgreSQL


Не много веб-разработчиков используют в своей работе PostgreSQL, так как
считают, что дополнительные особенности и возможности снижают производительность
и скорость работы. Однако, PostgreSQL имеет много преимуществ над MySQL.
Например, некоторые из особенностей, которые часто используются – внешние
ключи, триггеры и представления. Они позволяют скрывать сложность базы данных от
приложения, таким образом избегая создания сложных команд SQL. Cуществует немало
разработчиков, которые предпочитают богатые функциональные возможности SQL
команд PostgreSQL. Одно из наиболее ощутимых различий между MySQL и PostgreSQL –
невозможность создания вложенных подзапросов (селектов) в MySQL. PostgreSQL
соответствует многими SQL стандартам ANSI, таким образом позволяя создание
сложных команд SQL.
Несколько причин использовать PostgreSQL:

  • Сложный дизайн базы данных.
  • Переезд с Oracle, Sybase или MSSQL.
  • Сложные наборы правил.
  • Использование процедурных языков на сервере.
  • Транзакации
  • Использование хранимых процедур.
  • Использование географичеких данных.
  • R-Trees (например, использование индексов).

Заключение


Вы должны будете выбрать, взвесив все плюсы и минусы, какая база данных
является «совершенной» для вашего приложения или сайта. А может быть и такое,
что вы захотите использовать обе базы (бывают и такие случаи). Мое заключение –
одна база не обязательно лучше другой, и каждая из них занимает свою определеную
нишу в мире баз данных с открытым исходным кодом.


Автор: Denveroid