MySQL против PostgreSQL для веб-приложений [закрыто]

123

Я работаю над веб-приложением, использующим Python (Django), и хотел бы знать, что будет лучше: MySQL или PostgreSQL при развертывании в производственной среде.

В одном подкасте Джоэл сказал, что у него были проблемы с MySQL, и данные не согласовывались.

Хотелось бы узнать, были ли у кого-нибудь такие проблемы. Что касается производительности, которую можно легко настроить?

CNU
источник

Ответы:

128

Примечание для будущих читателей: текст ниже последний раз редактировался в августе 2008 года. Это почти 11 лет назад на момент редактирования. Программное обеспечение может быстро меняться от версии к версии, поэтому, прежде чем выбирать СУБД на основе приведенного ниже совета, проведите небольшое исследование, чтобы убедиться, что он по-прежнему точен. Проверьте новые ответы ниже.


Лучше?

MySQL гораздо чаще предоставляется веб-хостами.

PostgreSQL - гораздо более зрелый продукт.

Это обсуждение касается вашего «лучшего» вопроса

Очевидно, согласно этой веб-странице , MySQL работает быстро, когда уровни одновременного доступа низкие, и когда операций чтения гораздо больше, чем записи. С другой стороны, он демонстрирует низкую масштабируемость при увеличении нагрузок и соотношений записи / чтения. PostgreSQL относительно медленен на низких уровнях параллелизма, но хорошо масштабируется при увеличении уровней нагрузки, обеспечивая при этом достаточную изоляцию между одновременным доступом, чтобы избежать замедления при высоких соотношениях записи / чтения. Далее идет ссылка на ряд сравнений производительности, потому что эти вещи очень ... чувствительны к условиям.

Итак, если ваш фактор принятия решения - « что быстрее? », То ответ будет «это зависит от обстоятельств . Если это действительно важно, протестируйте свое приложение с обоими». И если вам действительно интересно, вы получите двух администраторов баз данных (один из которых специализируется в каждой базе данных) и попросите их настроить дерьмо из баз данных, а затем выберите. Удивительно, насколько дороги хорошие администраторы баз данных; и они стоят каждого цента .

Когда это важно.

Что, вероятно, не так, поэтому просто выберите ту базу данных, которая вам нравится, и следуйте ей; лучшую производительность можно купить за счет большего количества ОЗУ и ЦП, а также более подходящего дизайна базы данных, умных уловок с хранимыми процедурами и т. д. - и все это дешевле и проще для random-website-X, чем мучения по поводу выбора, MySQL или PostgreSQL , и специализированная настройка от дорогих администраторов баз данных.


Джоэл также сказал в этом подкасте, что комментарий вернется, чтобы укусить его, потому что люди будут говорить, что MySQL - это кусок дерьма - Джоэл не мог получить countназад ни одной строки. Множественное число анекдота - это не данные. Он сказал :

MySQL - единственная база данных, с которой я когда-либо программировал за свою карьеру, у которой были проблемы с целостностью данных, когда вы выполняете запросы и получаете обратно бессмысленные ответы, которые неверны.

и он также сказал:

Это просто анекдот. И это одна из вещей, которые меня расстраивают в блогах или просто в Интернете в целом. [...] Есть просто странная тенденция превращать анекдоты в правду, и на самом деле я, как блоггер, начинаю чувствовать себя немного виноватым по этому поводу

мистифицировать
источник
15
И еще один момент: если вы используете фреймворк, вы можете абстрагировать свой код из базы данных, чтобы вы могли легко переключаться.
Дон Джонс
"что быстрее?" , Зависит от того, что вы хотите. Если вам нужна база данных, совместимая с ACID, прочтите это: randombugs.com/linux/mysql-postgresql-benchmarks.html
Sacx
47
Также заслуживает внимания. MySQL принадлежит Oracle. Следовательно, им не разрешат когда-либо конкурировать с их платными продуктами.
unixman83
15

Просто звоните много месяцев спустя.

Географические возможности двух баз данных очень и очень разные. PostgreSQL имеет исключительное расширение PostGIS. По сравнению с этим географическая функциональность MySQL практически равна нулю.

Если в вашем веб-сервисе есть компонент местоположения, выберите PostgreSQL.

Лето
источник
14

Я не использовал Django, но использовал как MySQL, так и PostgreSQL. Если вы будете использовать свою базу данных только как серверную часть для Django, это не имеет большого значения, потому что это абстрагирует большинство различий. PostgreSQL немного более масштабируем, потому что он не достигает кирпичной стены так же быстро, как MySQL, когда увеличивается размер данных / количество клиентов.

Настоящая разница проявляется, если вы делаете новую систему. Тогда я бы порекомендовал PostgreSQL без рук, потому что у него намного больше функций, которые делают ваш уровень БД гораздо более настраиваемым, так что вы можете точно настроить его под любые ваши требования.

Серая пантера
источник
7

Хотя это немного устарело, стоит прочитать страницу MySQL Gotchas . Насколько мне известно, многие из перечисленных там пунктов все еще актуальны.

Я использую PostgreSQL.

Грег Хьюгилл
источник
6

Я широко использую оба. Мой выбор для конкретного проекта сводится к:

  • Лицензирование - собираетесь ли вы распространять свое приложение (IANAL)
  • Существующая инфраструктура и база знаний
  • Любой специальный соус, который у вас должен быть.

Под специальным соусом я подразумеваю такие вещи, как:

  • Простая / дешевая репликация = MySQL
  • Огромные проблемы с наборами данных с небольшими результатами = PostgreSQL. Используйте языковые расширения и получайте очень эффективные операции с данными. (PL / Python, PL / TCL, PL / Perl и т. Д.)
  • Интерфейс со статистическими библиотеками R = PostgreSQL PL / R доступен в debian / ubuntu
Лэнс Рашинг
источник
3
Postgres также имеет простую / дешевую репликацию. Это просто не встроено , потому что есть полдюжины на выбор, каждая со своими хорошими и плохими частями. Таким образом, вы можете выбрать одну посредственную репликацию для MySQL или одну из многих для PostgreSQL. Твой выбор.
Randal Schwartz
6
PostgreSQL 9.0+ имеет встроенную двоичную репликацию WAL, которую очень легко настроить.
Шон
1

Что ж, я не думаю, что вам следует использовать другой бренд базы данных в каких-либо прошлых разработках (сборка, постановка, продвижение), поскольку это вернется, чтобы вас укусить.

Насколько я понимаю, PostgreSQL - более «правильная» реализация базы данных, в то время как mySQl менее правильный (менее совместимый), но быстрее.

Так что, если вы в значительной степени пишете приложение CRUD, mySQL - это то, что вам нужно. Если вам требуются определенные функции из вашей базы данных (если вы не уверены, значит, нет), вы можете изучить postgreSQL.

SCdF
источник
1

Если вы пишете приложение, которое может довольно часто распространяться на разных серверах, MySQL имеет больший вес по сравнению с PostgreSQL из-за переносимости. PostgreSQL сложно найти на менее чем удовлетворительных веб-хостах, хотя их немного. В большинстве случаев PostgreSQL медленнее MySQL, особенно когда дело доходит до тонкой настройки в конце. В общем, я бы посоветовал дать PostgreSQL шанс на короткое время, чтобы вы не избежали этого полностью, а затем вынесите решение.

tslocum
источник
1
Я согласен с вами, что более низкокачественные веб-хосты должны предлагать выбор вместо того, чтобы пихать MySQL нам в лицо. Однако, переходя на виртуальный хостинг, вы все равно зависите от них. Так что выбор DBM не имеет большого значения.
unixman83
0

Спасибо. Я использовал Django с MySQL, и все в порядке. Выберите свою базу данных по нужным вам функциям. Трудно сравнивать MySQL и Postgres. Лучше сравнить Postgress с SQl Server.

Стивен Кокс
источник
0

@WolfmanDragon

PostgreSQL имеет (крошечную) поддержку объектов, но по своей природе это реляционная база данных. Со страницы о нем :

PostgreSQL - это мощная система реляционных баз данных с открытым исходным кодом .

marcospereira
источник
2
Система управления объектно-реляционными базами данных Система управления реляционными базами данных ISA. Если вы углубитесь в документацию PostgSQL, вы обнаружите, что PostgSql - это ORDBMS. Возможно, вы путаете ORDBMS с ODBMS, например Objectivity / DB.
WolfmanDragon
-1

MySQL - это система управления реляционными базами данных, а PostgreSQL - это система управления объектно- реляционными базами данных . PostgreSQL хорошо подходит для разработчиков на C ++ или Java, поскольку дает нам больше контроля над написанием запросов. ORDBMS также предоставляет нам объекты и типы, определяемые пользователем. Сами запросы SQL намного ближе к стандартам ISO, чем MySQL.
Вам нужна ORDBMS или RDBMS? Это лучше ответит на ваш вопрос.

WolfmanDragon
источник
Это своего рода чрезмерное упрощение; Тот факт, что вам не нужна ORDBMS, не обязательно означает, что вы должны использовать MySQL. Есть и другие более существенные отличия, не так ли?
Дон Джонс,
1
Ты прав. Я стараюсь не походить на толкателя PostgreSQL. Я не вижу реальной причины использовать что-либо, кроме PostgreSQL, если только дизайн не требует настоящей объектной базы данных. Я не вижу смысла в MySQL, кроме тех случаев, когда с ним знакомо больше людей.
WolfmanDragon