Я работаю над веб-приложением, использующим Python (Django), и хотел бы знать, что лучше подходит для развертывания в производственной среде - MySQL или PostgreSQL.
В одном из подкаст Джоэл сказал, что у него были проблемы с MySQL, и данные не были согласованы.
Хотелось бы узнать, были ли у кого-нибудь такие проблемы. Что касается производительности, которую можно легко настроить?






Что ж, я не думаю, что вам следует использовать другой бренд базы данных в каких-либо прошлых разработках (сборка, постановка, продвижение), поскольку это вернется, чтобы вас укусить.
Насколько я понимаю, PostgreSQL является более «правильной» реализацией базы данных, в то время как mySQl менее правильный (менее совместимый), но более быстрый.
Так что, если вы в значительной степени пишете приложение CRUD, mySQL - это то, что вам нужно. Если вам требуются определенные функции из вашей базы данных (если вы не уверены, значит, нет), вы можете изучить postgreSQL.
На заметку будущим читателям: Приведенный ниже текст последний раз редактировался в августе 2008 года. Это почти 11 лет назад на момент редактирования. Программное обеспечение может быстро меняться от версии к версии, поэтому, прежде чем выбирать СУБД на основе приведенных ниже советов, проведите небольшое исследование, чтобы убедиться, что они все еще точны. Проверьте новые ответы ниже.
Лучше?
MySQL гораздо чаще предоставляется веб-хостингами.
PostgreSQL - гораздо более зрелый продукт.
Есть это обсуждение касается вашего "лучшего" вопроса
Очевидно, согласно эта веб-страница, MySQL работает быстро, когда уровни одновременного доступа низкие, и когда операций чтения намного больше, чем записей. С другой стороны, он демонстрирует низкую масштабируемость при увеличении нагрузки и соотношения записи / чтения. PostgreSQL относительно медленен на низких уровнях параллелизма, но хорошо масштабируется при увеличении уровней нагрузки, обеспечивая при этом достаточную изоляцию между одновременными доступами, чтобы избежать замедления при высоких соотношениях записи / чтения. Далее идет ссылка на ряд сравнений производительности, потому что эти вещи очень ... чувствительны к условиям.
Итак, если ваш фактор принятия решения - "что быстрее?", тогда ответ будет "это зависит. Если это действительно важно, протестируйте свое приложение на обоих." И если вам действительно, действительно интересно, вы получите двух администраторов баз данных (один, который специализируется на каждой базе данных) и заставите их настроить дерьмо из базы данных, а затем выберите. Удивительно, насколько дороги администраторы баз данных хороший; и они стоят каждого цента.
Когда это важно.
Что, вероятно, не так, поэтому просто выберите ту базу данных, которая вам нравится, и следуйте ей; лучшую производительность можно купить за счет большего количества ОЗУ и ЦП, более подходящего дизайна базы данных, умных трюков с хранимыми процедурами и т. д. - и все это дешевле и проще для random-website-X, чем мучительные размышления о том, какой выбрать, MySQL или PostgreSQL , и специализированная настройка от дорогих администраторов баз данных.
count of rows back. The plural of anecdote is not data. Он сказал:
MySQL is the only database I've ever programmed against in my career that has had data integrity problems, where you do queries and you get nonsense answers back, that are incorrect.
и он также сказал:
It's just an anecdote. And that's one of the things that frustrates me, actually, about blogging or just the Internet in general. [...] There's just a weird tendency to make anecdotes into truths and I actually as a blogger I'm starting to feel a little bit guilty about this
"что быстрее?" . Зависит от того, что вы хотите. Если вам нужна база данных, совместимая с ACID, прочтите это: randombugs.com/linux/mysql-postgresql-benchmarks.html
Также стоит отметить. MySQL - это принадлежащий от Oracle. Следовательно, им не разрешат когда-либо конкурировать с их платными продуктами.
Если вы пишете приложение, которое может довольно часто распространяться на разных серверах, MySQL имеет больший вес по сравнению с PostgreSQL из-за переносимости. PostgreSQL трудно найти на менее чем удовлетворительных веб-хостах, хотя их немного. В большинстве случаев PostgreSQL медленнее MySQL, особенно когда дело доходит до тонкой настройки в конечном итоге. В общем, я бы посоветовал дать PostgreSQL шанс на короткое время, чтобы вы полностью не избежали этого, а затем вынести суждение.
Я согласен с вами, что более низкокачественные веб-хосты должны предлагать выбор вместо того, чтобы пихать MySQL нам в лицо. Однако, переходя на виртуальный хостинг, вы в любом случае зависите от них. Так что выбор DBM не имеет большого значения.
Я не использовал Django, но использовал MySQL и PostgreSQL. Если вы будете использовать свою базу данных только как серверную часть для Django, это не имеет большого значения, потому что это абстрагирует большинство различий. PostgreSQL немного более масштабируем, потому что он не достигает кирпичной стены так же быстро, как MySQL, когда увеличивается размер данных / количество клиентов.
Настоящая разница проявляется, если вы делаете новую систему. Тогда я бы порекомендовал PostgreSQL без рук, потому что у него гораздо больше функций, которые делают ваш уровень БД гораздо более настраиваемым, так что вы можете точно настроить его под любые ваши требования.
Спасибо. Я использовал Django с MySQL, и все в порядке. Выберите свою базу данных по нужным вам функциям. Трудно сравнивать MySQL и Postgres. Лучше сравнить Postgress с SQl Server.
Хотя он немного устарел, стоит прочитать страницу Проблемы с MySQL. Насколько мне известно, многие из перечисленных там пунктов все еще актуальны.
Я использую PostgreSQL.
Так ли это до сих пор?
MySQL - это система управления реляционной базой данных, а PostgreSQL - это объект-система управления реляционными базами данных. PostgreSQL хорошо подходит для разработчиков на C++ или Java, поскольку дает нам больше контроля над написанием запросов. ORDBMS также предоставляет нам объекты и типы, определяемые пользователем. Сами запросы SQL намного ближе к стандартам ISO, чем MySQL.
Вам нужна ORDBMS или RDBMS? Это лучше ответит на ваш вопрос.
Это своего рода упрощение; Тот факт, что вам не нужна ORDBMS, не обязательно означает, что вы должны использовать MySQL. Есть и другие более существенные отличия, не так ли?
Ты прав. Я стараюсь не походить на толкателя PostgreSQL. Я не вижу реальной причины использовать что-либо, кроме PostgreSQL, если только в проекте не требуется настоящая объектная база данных. Я не вижу в MySQL никакого смысла, кроме тех случаев, когда с ним знакомо больше людей.
@WolfmanDragon
PostgreSQL имеет (крошечную) поддержку объектов, но по своей природе это реляционная база данных. Из его о странице:
PostgreSQL is a powerful, open source relational database system.
Система управления объектно-реляционными базами данных Система управления реляционными базами данных ISA. Если вы прочтете глубже документацию PostgSQL, вы обнаружите, что PostgSql - это ORDBMS. Возможно, вы путаете ORDBMS с ODBMS, например Objectivity / DB.
Я широко использую оба. Мой выбор для конкретного проекта сводится к:
Под специальный соус я имею в виду такие вещи, как:
Postgres также имеет простую / дешевую репликацию. Это просто не встроенный, потому что есть полдюжины на выбор, каждая со своими хорошими и плохими сторонами. Таким образом, вы можете выбрать посредственную репликацию один для MySQL или одну из многих для PostgreSQL. Твой выбор.
PostgreSQL 9.0+ имеет встроенную двоичную репликацию WAL, которую очень легко настроить.
Просто звоните много месяцев спустя.
Географические возможности двух баз данных очень и очень разные. PostgreSQL имеет исключительное расширение PostGIS. По сравнению с этим географическая функциональность MySQL практически равна нулю.
Если в вашем веб-сервисе есть компонент местоположения, выберите PostgreSQL.
И еще один момент: если вы используете фреймворк, вы можете абстрагировать свой код из базы данных, чтобы вы могли легко переключаться.