Сколько из вас перешли с MySQL на Postgresql? Стоило ли? - PullRequest
11 голосов
/ 03 июня 2010

Я думаю о переходе с MySQL на разработку Postgres для Rails, и я просто хочу услышать, что другие разработчики, которые сделали этот шаг, должны сказать об этом.

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

Не стесняйтесь объяснить, почему вы переехали в первую очередь.

Ответы [ 4 ]

8 голосов
/ 03 июня 2010

Я переключился и, честно говоря, не мог быть счастливее. В то время как Postgres не хватает некоторых вещей из MySQL (в основном для меня вставляют Ignore, Replace, Upsert и Load Data Infile), его функциональных возможностей БОЛЬШЕ, чем составляют. Его хранимые процедуры намного мощнее, и гораздо проще писать сложные функции и агрегаты в Postgres.

С точки зрения производительности, если вы сравниваете с InnoDB (что справедливо только из-за MVCC), то он чувствует себя по крайней мере так же быстро, возможно, быстрее - мы не смогли провести некоторые реальные измерения здесь из-за некоторых ограничений , но, конечно, не было проблемы с производительностью. Сложные запросы с несколькими объединениями, безусловно, быстрее, НАМНОГО быстрее.

Я считаю, что вы, скорее всего, получите правильный ответ на свой вопрос от сообщества Postgres. У каждого и их бабушки есть 50 различных способов сделать что-то в MySQL. С Postgres откройте список рассылки, и вы, вероятно, получите очень и очень хорошую помощь.

Любой синтаксис и подобные различия немного тривиальны.

В целом, Postgres чувствует себя намного более "взрослым" для меня. Я годами пользовался MySQL и теперь стараюсь избегать его.

5 голосов
/ 03 июня 2010

О боже, это может закончиться слезами.

Если говорить только из личного опыта, мы перешли с MySQL исключительно потому, что наша производственная система (Heroku) работает на PostgreSQL. У нас были нестандартные запросы для MySQL, которые ломались в PostgreSQL. Поэтому я думаю, что мораль этой истории заключается в том, что она работает на одной и той же СУБД, в противном случае вы можете столкнуться с проблемами.

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

query = "COPY users(email) FROM STDIN WITH CSV"
values = users.map! do |user|
  # Be wary of the types of the objects here, they matter.
  # For instance if you set the id to a string it will error.

  %Q{#{user["email"]}}
end.join("\n")

raw_connection.exec(query)
raw_connection.put_copy_data(values)
raw_connection.put_copy_end

Это вставит ~ 500 000 записей в базу данных менее чем за две минуты. Примерно в то же время, если мы добавим больше полей.

Еще одна приятная особенность PostgreSQL над MySQL:

  • Полнотекстовый поиск
  • Географические запросы (PostGIS)
  • LIKE такой: email ~ 'hotmail|gmail', NOT LIKE - email !~ 'hotmail|gmail'. | обозначает или.

В итоге: PostgreSQL похож на кирпичи и строительный раствор, где MySQL - это Lego. Иди с тем, что "чувствует" право на вас. Это только мое личное мнение.

1 голос
/ 21 июня 2010

Мы перешли на PostgreSQL по нескольким причинам в начале 2007 года (или это было годом ранее?). Основными причинами были:

  • Поддержка SQL - PostgreSQL намного лучше для сложных SQL-запросов, например, с большим количеством объединений и агрегатов
  • Хранимые процедуры MySQL не выглядят очень зрелыми
  • Изменения в лицензии на MySQL - с двойной лицензией, с открытым исходным кодом и в коммерческих целях, что заставило меня задуматься о будущем. С лицензией PG BSD вы можете делать все, что захотите.
  • Неправильное поведение - когда MySQL считал строки, иногда он просто возвращал приблизительное значение, а не фактические подсчитанные строки.
  • Ограничения вели себя немного странно, вставляя усеченные / адаптированные значения. Смотри http://use.perl.org/~Smylers/journal/34246
  • Административный интерфейс PgAdminIII чувствовал себя более стабильным и зрелым, чем аналог MySQL
  • PostgreSQL очень надежный и устойчивый к сбоям в случае сбоя

// Джон

0 голосов
/ 03 июня 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...