LINUX.ORG.RU

Переход с MySQL на PostgreSQL

 , , , с чего начать


2

2

Решил перейти с MySQL на PostgreSQL. Соответственно, возник вопрос: с чего начать? Последние много лет работал только с MySQL и хочется начать работать с PostgreSQL без говнокода.

Заодно спрошу - есть ли аналог или альтернатива MySQL Workbench? В плане моделирование и в плане подключения к БД и выполнения запросов. Пока рассматриваю 0xDBE.

★★

Последнее исправление: VeroLom (всего исправлений: 2)

с чего начать?

с миграции данных

umren ★★★★★
()

Я с pgsql не много работал, но отличия есть:
1. Нет AUTOINCREMENT полей, есть лучше: последовательности (sequences). Специальный счетчик, а в атрибут значением по умолчанию ставится функция инкремента счетчика.
2. Есть дополнительные типы полей: JSON, массивы и пр.
3. Делая UPDATE или INSERT можно в конце написать RETURNING * и тебе вернутся вставленные данные. 4. Есть функциональные индексы. Если используются запросы, в которых, например объединяются фамилия имя и отчество, то можно построить индекс по этой функции.
5. Не помню как в MySQL, LIKE вроде ищет регистронезависимо. В PostgreSQL LIKE регистрозависимый, а ILIKE регистронезависимый.
6. Даты как-то иначе хранятся, ни плохо ни хорошо.

Это то с чем я столкнуся. А вообще отличий не сильно много. Если используешь ORM, то отличий можешь даже не заметить :)

Black_Roland ★★★★
()
Последнее исправление: Black_Roland (всего исправлений: 1)
5 февраля 2015 г.
Ответ на: комментарий от blackst0ne

Пока нет, хранимки не использую.

VeroLom ★★
() автор топика
Ответ на: комментарий от Black_Roland

Я с pgsql не много работал, но отличия есть: 1. Нет AUTOINCREMENT полей, есть лучше: последовательности (sequences). Специальный счетчик, а в атрибут значением по умолчанию ставится функция инкремента счетчика.

Спасибо, буду заранее знать об этом :)

2. Есть дополнительные типы полей: JSON, массивы и пр.

Читал, но пока не принципиально.

3. Делая UPDATE или INSERT можно в конце написать RETURNING * и тебе вернутся вставленные данные.

Можно написать что-то типа INSERT ... RETURNING id, чтобы вернулся id вставленной записи? Чтобы не как в MySQL - после запроса ещё запрашивать LAST_INSERT_ID()?

4. Есть функциональные индексы. Если используются запросы, в которых, например объединяются фамилия имя и отчество, то можно построить индекс по этой функции.

Вот это большой плюс, из-за которого я хочу попробовать перейти на pg.

5. Не помню как в MySQL, LIKE вроде ищет регистронезависимо. В PostgreSQL LIKE регистрозависимый, а ILIKE регистронезависимый.

Спасибо, тоже буду знать.

6. Даты как-то иначе хранятся, ни плохо ни хорошо.

Для меня это не особо принципиально.

Это то с чем я столкнуся. А вообще отличий не сильно много. Если используешь ORM, то отличий можешь даже не заметить :)

Спасибо за более-менее развёрнутый ответ. Как появится время - разберусь с установкой (почему-то с первого раза не удалось всё сделать, а разбираться некогда было) и попробую перекинуть хотя бы ядро нашей системы на pg.

VeroLom ★★
() автор топика
Ответ на: комментарий от Deleted

База большая

Не особо.Чуть больше, чем в какой-нибудь CMS + пара таблиц с ~15000 записями.

VeroLom ★★
() автор топика
Ответ на: комментарий от VeroLom

Можно написать что-то типа INSERT ... RETURNING id, чтобы вернулся id вставленной записи? Чтобы не как в MySQL - после запроса ещё запрашивать LAST_INSERT_ID()?

Можно и просто ID. Но вообще можно любые поля вернуть, можно все.

Спасибо за более-менее развёрнутый ответ. Как появится время - разберусь с установкой (почему-то с первого раза не удалось всё сделать, а разбираться некогда было)

Да установка тут запутанная. Я сам до конца не осилил — разрешаю авторизацию с любым паролем :)

Black_Roland ★★★★
()
Ответ на: комментарий от anonymous

зачем Workbench ?

Как минимум, гуй для запросов.

VeroLom ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.