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

StackOverflow https://stackoverflow.com/questions/27435

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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


Лучше?

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

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

Там есть это обсуждение посвящено вашему "лучшему" вопросу

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

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

Когда это имеет значение.

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


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

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

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

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

Другие советы

Некоторые говорят, что MySQL прост и быстр.

Быстро - Ну, если вы используете механизм хранения MyISAM по умолчанию, это быстро.У него почти нет серьезных функций с базой данных, но он быстр.Если бы я был саркастичен, я бы сказал, что grep в плоском файле тоже работает быстро.Как ни странно, это не так уж далеко от того, как MyISAM хранит данные.Так что не ожидайте там каких-либо функций реляционной базы данных.Даже ограничений ссылочной целостности нет.

Просто - Теперь предположим, что вам нужно достаточное подмножество реальных функций базы данных.Может быть, какие-то вещи вроде ограничений целостности, триггеров, изоляции транзакций, функциональных индексов?Таким образом, очевидно, что вы должны отказаться от движка MyISAM и выбрать один из 3 основных других движков хранения.Которые были разработаны разными поставщиками, каждый из которых имеет определенную конфигурацию / поведение.

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

Исходя из этих фактов, я позволю вам составить свое мнение о тех, кто говорит, что MySQL быстр и прост.

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

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

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

Просто звонок прозвучал много месяцев спустя.

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

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

Хотя она немного устарела, стоило бы ознакомиться с Ошибки в MySQL Страница.Насколько мне известно, многие из перечисленных там пунктов по-прежнему актуальны.

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

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

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

Автор: особый соус Мне нравятся такие вещи, как:

  • простая / дешевая репликация = MySQL
  • Огромные проблемы с набором данных при небольших результатах = PostgreSQL.Используйте языковые расширения и выполняйте очень эффективные операции с данными.(PL/ Python, PL/TCL, PL/ Perl и т.д.)
  • Интерфейс с R Статистическими библиотеками = PostgreSQL PL/R доступно в debian / ubuntu

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

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

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

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

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

@WolfmanDragon

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top