MySQL против PostgreSQL для веб-приложений

111

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

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

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

Теги:

11 ответов

112
Лучший ответ

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


лучше?

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

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

Там это обсуждение, затрагивающее ваш "лучший" вопрос

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

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

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

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


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

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

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

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

  • 13
    И еще один момент: если вы используете фреймворк, вы сможете абстрагировать свой код от базы данных, чтобы вы могли легко переключаться.
  • 0
    "что быстрее?" , Зависит от того, что вы хотите. Если вы хотите ACID-совместимую базу данных, прочитайте это: randombugs.com/linux/mysql-postgresql-benchmarks.html
Показать ещё 2 комментария
26

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

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

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

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

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

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

12

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

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

11

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

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

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

6

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

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

В специальном соусе мне нравится:

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

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

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

  • 1
    +1 ... должен ... не ... upvote ответы, которые просто ссылки ... но что, если ссылки действительно очень хороши? Ой, есть голосование тогда :)
1

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

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

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

0

@WolfmanDragon

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

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

  • 1
    объектно-реляционная система управления базами данных ISA реляционная система управления базами данных. Если вы прочитаете дальше в документации PostgSQL, вы обнаружите, что PostgSql является ORDBMS. Возможно, вы путаете ORDBMS с ODBMS, такими как Objectivity / DB.
0

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

0

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

  • 1
    Я согласен с вами, что более низкокачественные веб-хосты должны предлагать выбор вместо того, чтобы бросать MySQL нам в лицо. Тем не менее, когда вы пользуетесь виртуальным хостингом, вы все равно зависите от них. Поэтому выбор DBM не так важен.
-2

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню