Меня часто спрашивают, «Что вы предпочитаете, PostgreSQL или MySQL?» Мой ответ всегда один и тот же: «Это – вопрос предпочтения». Вы можете задать множеству других разработчиков тот же самый вопрос, и их ответы будут весьма различного толка. Вот – сравнение баз данных MySQL и PostgreSQL, предлагаемое не ради высказывания моего мнения, а ради того, чтобы помочь другим принять собственное решение. Обеим системам есть что предложить в вопросах стабильности, гибкости и производительности. MySQL имеет особенности, в которых PostgreSQL испытывает недостаток, и наоборот. Моя первичная задача – помочь решить, какая из этих двух баз данных будет использоваться в ваших собственных разработках. Прежде, чем начать сравнение этих баз данных, я должен прояснить, что буду придерживаться заданных по умолчанию инсталляций. MySQL имеет много различных типов таблиц, которые поддерживают транзакации и внешние ключи. Однако, некоторые из конфигураций этих типов таблиц весьма сложны. Не многие разработчики сети или программисты используют дополнительные типы таблиц, существующие в MySQL. А теперь давайте сравним эти два продукта. Список особенностей и возможностей В таблице А приведено сравнение наиболее употребимых особенностей и возможностей баз данных MySQL и PostgreSQL. Таблица А – это не исчерпывающий список особенностей, типов данных или проблем производительности, касающийся этих двух систем баз данных – она лишь дает некоторое представление о том, что каждая из них может предложить. Из таблицы мы видим, что PostgreSQL предлагает полные особенности и возможности традиционных приложений баз данных, в то время как MySQL сосредотачивается на более быстром выполнении (работе) для веб приложений. Развитие индустрии «открытых исходников» принесет большее количество особенностей и возможностей в последующих версиях обеих баз данных. Таблица A: сравнение MySQL и PostgreSQL Особенности | PostgreSQL | MySQL | 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 (например, использование индексов).
Заключение Вы должны будете выбрать, взвесив все плюсы и минусы, какая база данных является «совершенной» для вашего приложения или сайта. А может быть и такое, что вы захотите использовать обе базы (бывают и такие случаи). Мое заключение – одна база не обязательно лучше другой, и каждая из них занимает свою определеную нишу в мире баз данных с открытым исходным кодом. |