В чем основные отличия mySQL от Postgre?

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

А тут в чем основная разница? В чем основные преимущества постгре, перед mysql, к примеру, если у меня крупный онлайн магазин.
  • Вопрос задан
  • 23730 просмотров
Пригласить эксперта
Ответы на вопрос 7
alekciy
@alekciy
Вёбных дел мастер
Использую обе РСУБД. Предпочитаю Postgresql, хотя конечно начинал с MySQL. Из того, что на практике приводит к такому предпочтению:
1) Отсутствие проблем на по сути пустом месте. Из последнего было, в одной базе есть таблицы с большим количеством текстовых полей. При вставке в одно из них чуть меньше 200 символов он отказывался ссылаясь на то, что переводите на динамические. И я значит должен начать курить тему движков мускула и выяснять, что мне оказывается нужна Barracuda. При той же InnoDb. Хочется спросить такого черта.
Или вот еще вспомнил. При попытке записи в поле данных, больше чем это возможно для данной колонки он делает запись тупо обрезав лишнее. И проблему могут не заметить очень долго вплоть до момента когда подниматься из бэкапа поздно, там все уже битое.
Или вот взять и сменить могут дефолтные значение переменных в рамках минорной версии. База после накатки апдейтов и ребута может просто не подняться. На хабре даже была статься по этому поводу.
В общем множество подобных ситуаций после которых так и хочется воскликнуть "какого черта?!". Со слоном я не помню ни одной такой ситуации.
2) RETURN во вставках/обновлениях. Можно получить в ответе любое поле такого запроса. И ни каких тебе танцев с LastInsertId.
3) В последних версиях есть UPSERT которого очень не хватало.
4) В целом более строгий подход и нет ощущение бардака.
5) После запуска Postgres Pro появилась полностью руссифицированная документация. Помогает вкатиться в тему новичкам.

Из минусов некоторое время было отсутствие адекватного UI клиента. Но после того, как стал использовать PhpStorm эта проблема была закрыта.
Ответ написан
batyrmastyr
@batyrmastyr
Из простых преимуществ постгреса - многие запросы в нём отрабатывают шустрее, можно весьма гибко прописать ограничения на данные (если в поле "а" что-то есть, то в поле "б" может быть только "с"), даже крупному магазину может хватить настроек по-умолчанию при которых база довольствуется смешным объёмом памяти.

Из недостатков по сравнению с Mysql - нет множеств (заменяется массивом перечислений), большая строгость работы (число или перечисление нельзя взять и сравнить со строкой "5 = '5'", нужно привести их к одному типу "5 = '5'::int" или " 5::text = '5'5 ", а ваша обёртка над базой может быть не готова к такому).

В контексте nosql баз данных например вижу преимущества в быстродействии, например, причем на порядок.

Увы, это преимущество скорее всего окажется мифом - сейчас как раз потихоньку выпиливаем MongoDB.
Если говорить про MongoDB, то в моих задачах он работал либо не быстрее мускуля или постгреса при поиске, либо в разы (в 2 - 50 раз) медленнее при записи. При этом Монга жрала 1,5 гига памяти, мускуль - 300 Мб, а постгрес - меньше 15 Мб (да, меньше жалких пятнадцати мегабайт).
Ответ написан
Insolita
@Insolita
Отчаянная домохозяйка
postgres - массивы, отдельное управление последовательностями (в mysql только одно инкрементное поле на таблицу, в postgres на таблицу можно несколько последовательностей, и одну на несколько таблиц. причем с настраиваемым шагом), оконные фукнции для подсчета статистики https://habrahabr.ru/post/268983/
лёгкое создание полнотекстового поиска без доп. движков типа sphinx и elasticsearch, которого вполне хватает для многих кейсов https://eax.me/postgresql-full-text-search/ , materialized view, наследование таблиц.
Вот более полная таблица фич
https://www.postgresql.org/about/featurematrix/
Но штука в том, что фичи далеко не всегда и везде нужны, поэтому mysql хватает с головой для многих задач
Ответ написан
Комментировать
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Алгоритмом работы (lock-based/ versioning), транзакциями, хранимыми процедурами, возможностями sql. Это по крупному, в мелочах - еще больше. Собственно, эти базы данных настолько разные, что сравнивать их напрямую нельзя. Каждая хороша для своего класса задач, хотя для магазина/cms обе будут примерно одинаковы.
Ответ написан
@Fixid
Две не самые свежие, но хорошие статьи
1
2
Ответ написан
sim3x
@sim3x
мускул (и все его производные - мария и перкона) не субд - а обертка для движков
постгрес - обьектно-ориентированная субд

Для владельца магазина - разницы никакой
Если ваш разработчик хочет переходить на постгрес и он ее умеет настраивать - пусть переходит
Ответ написан
Комментировать
machetero
@machetero
gotlib.me
https://habrahabr.ru/company/southbridge/blog/322624/ там написано почему InnoDB лучше чем postgres
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы