Я думаю о перемещении от MySQL до Пост-ГРЭС для разработки направляющих, и я просто хочу услышать то, что другие разработчики, которые сделали перемещение, должны сказать об этом.
Я ищу личный опыт, не Mysql v перестрелка Пост-ГРЭС, просто за и против, в которые Вы сами прибыли. Наполните это, люди не могли бы обязательно думать.
Не стесняйтесь объяснять, почему Вы переместились во-первых также.
Я перешел на Postgres и, честно говоря, не могу быть счастливее. Хотя Postgres не хватает некоторых возможностей MySQL (Insert Ignore, Replace, Upsert stuff, и Load Data Infile для меня в основном), те возможности, которые у него есть, с лихвой их восполняют. Его хранимые процедуры намного мощнее, и в Postgres намного проще писать сложные функции и агрегаты.
С точки зрения производительности, если вы сравниваете с InnoDB (что справедливо из-за MVCC), то она кажется как минимум такой же быстрой, возможно, даже быстрее - мы не смогли провести реальные измерения из-за некоторых ограничений, но проблем с производительностью точно не было. Сложные запросы с несколькими соединениями, безусловно, быстрее, намного быстрее.
Я считаю, что вы с большей вероятностью получите правильный ответ на свой вопрос от сообщества Postgres. У всех и их бабушек есть 50 различных способов сделать что-то в MySQL. В случае с Postgres зайдите в список рассылки, и вы, скорее всего, получите много очень хорошей помощи.
Любые различия в синтаксисе и тому подобное немного тривиальны.
В целом, Postgres кажется мне более "взрослым". Я использовал MySQL в течение многих лет и теперь стараюсь избегать его.
Сам не переключался, но меня несколько раз укусило отсутствие изменений схемы транзакций в MySQL, которые, по-видимому, поддерживает Postgre.
Это решит те неприятные проблемы, которые возникают, когда вы переходите из среды разработки с sqlite на свой сервер MySQL и понимаете, что ваши миграции были неудачными и остались незавершенными! (Нет, я не делал этого на производственном сервере, но это испортило наш общий тестовый сервер!)
Ой, это могло закончиться слезами.
Исходя только из личного опыта, мы перешли с 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:
Синтаксис LIKE
похож на этот email ~ 'hotmail | gmail'
, НЕ НРАВИТСЯ
- это как электронная почта! ~ 'Hotmail | gmail'
. |
обозначает или. В итоге: PostgreSQL похож на кирпичи и строительный раствор, где MySQL - это Lego. Делайте то, что вам нравится. Это только моё личное мнение.
Мы перешли на PostgreSQL по нескольким причинам в начале 2007 года (или годом ранее?). Основными причинами были:
// Джон