Почему Heroku использует Postgresql?

Я занят переносом некоторого кода MySQL на Postgresql, чтобы использовать его с Heroku. Просто интересно, есть ли какая-то конкретная причина, почему Heroku отправился с Postgresql над MySQL? Производительность, архитектура и т.д.

ОБНОВЛЕНИЕ: из сообщения heroku в блоге:

В Heroku мы считаем, что PostgreSQL предлагает лучшее сочетание мощные функции, целостность данных, скорость, соответствие стандартам и открытый исходный код любой базы данных SQL на планете.

Ответ 1

Postgres лучше, чем mysql в много способов. Вы можете прочитать эти сообщения о приложении migils rails из mysql в postgres. Хотя mysql более популярный, чем postgres, но instagram использует postgres возможно из-за этих причин. Я чувствую, что postgres намного более зрелый и надежный, чем mysql. В то время как mysql проще и проще в использовании.

Перенос MySQL в PostgreSQL в Rails" m я n d l e v

Преобразование данных приложений Rails из MySQL в PostgreSQL

Для переноса данных удобно небольшое script: задача Rake для передачи базы данных Rails, скажем, от MySQL до Postgres и обратно

Ответ 2

Сравните длину этого списка MySQL gotchas с этим списком postgresql getchas. MySQL гораздо более вероятен, чтобы вас повредить.

Ответ 3

Вообще говоря, pgsql дает возможность работать 24/7 лучше, чем mysql. Кроме того, у него, похоже, меньше педалей. Я думаю, если вы более знакомы с тем или другим, что скорее повлияет на ваше решение, чем что-либо еще.

Ответ 4

Хорошо, производительность Postgres обычно лучше для сложных запросов, таких как тип, генерируемый ORM. Кроме того, postgres просто имеет тенденцию быть более "солидным". Это ancedotal, но серверы postgres, которыми я управлял, всегда были намного менее трудными, чем mysql, который любит случайным образом разбивать время от времени, иногда искажая таблицу по пути вниз.

Ответ 5

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

https://addons.heroku.com/cleardb

Не использовал его, поэтому я не могу ручаться за него. Heroku утверждает, что 99.95% времени безотказной работы для бесплатной версии (против 100% времени ожидания, заявленного для любой из платных версий), и они отказываются от бесплатной версии как "готовой продукции". Они утверждают, что ClearDB является "родным, немодифицированным MySQL".

Ответ 6

Я перемещаю одно из своих клиентских Rails-приложений из Heroku Postgresql в Mysql (аддон ClearDB) на данный момент. PostgreSQL является более строгим и более "правильным" службой базы данных во многих отношениях, и, похоже, Heroku одобряет его. Тем не менее, я обнаружил, что структура Rails более или менее сглаживает различия, и большинство приложений Rails не будут настолько большими, чтобы проблемы с производительностью Mysql становились компроматорами.

С другой стороны, PostgreSQL (в частности, предложение Heroku) имеет несколько недостатков для запуска приложения:

  • Цена. Чтобы предотвратить еженедельные ошибки "соединение с базой данных" при работе с Postgres Heroku, вам необходимо выложить $200/month. В ClearDB вы получаете обещание 100% времени безотказной работы (у нас еще не было возможности оценить это требование) для плана $10/месяц, который также предлагает 1 ГБ места - больше, чем мы мне когда-нибудь понадобится.
  • Порядок столбцов.. При создании Rails я ссылаюсь на файл схемы schema.rb каждые 5 минут, и чтобы этот файл был аккуратным и читаемым, я считаю, что важно определить, что должны быть добавлены столбцы заказа. MySQL поддерживает задание порядка столбцов; PostgreSQL этого не делает. Во многих случаях эта функция неважна, но из-за того, как работает Rails/ActiveRecord, моя жизнь становится намного сложнее, когда я не могу переупорядочить столбцы.