Переход на PostgreSQL

Alien85

I like my cat
Прошу помощи.

Сейчас провожу полный рефакторинг web проекта.
База MySQL в innodb (очень много внешних ключей), размер 200 МБ. Нагрузка пока - 5 запросов в секунду (среднее за 30 дней).
В течении года планируется увеличение посещаемости примерно в 10 раз.

Так вот, стоит ли заморачиваться с PostgreSQL (перевести всю базу туда)?
Я его ни разу не использовал, только сейчас книжки про него читаю.

При рефакторинге целостность БД будет полностью возложена на БД (процедурками и триггерами).
 

Alien85

I like my cat
.. а какие улучшения ты себе обещаешь от такого перехода?
стабильность работы, увеличение быстродействия и создание более целостной структуры хранения данных.

Второе и третье можно и на MySQL сделать, но в интернете вроде как все отдают предпочтение PostgreSQL.
Стоит ли заморачиваться переходом?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
как бы я ни любил postgres, должен уточнить, что:
mysql вполне стабилен, на это нареканий ни у кого еще не было вроде, при соблюдении правил эксплуатации,
в инете большинство сайтов на mysql

pg более продвинутый в плане функционала общего назначения, более "правильный", предсказуемый,
а mysql больше заточен на хаки под большие нагрузки
 

Alien85

I like my cat
pg более продвинутый в плане функционала общего назначения, более "правильный", предсказуемый,
а mysql больше заточен на хаки под большие нагрузки
У меня огромное количество внешних ключей, поэтому я и подумал, что может postgesql будет лучше работать.
Сейчас на mysql приходится делать довольно большую денормализацию для получения хорошего быстродействия.
Да и будет создано много процедур для целостности данных.
В данный момент с mysql есть одна проблема - это при вставке большого количества строк (10000-20000) с ON DUPLICATE UPDATE пропадают первичные ключи.
Если делать предварительную проверку это сильно нагружает БД, решения пока нет, но что-нибудь все равно придумаю.

По нагрузке, 80% селекты (иногда очень сложной структуры). В пик посещаемости до 50-100 запросов в сек, но они не очень сложные, т.к. есть кеширование.
 

~WR~

Новичок
На мой взгляд, 200 Мб - это крошечная база. Все должно летать и на MySQL.

PostgreSQL сильно поможет со сложными выборками - денормализацию можно будет сократить до минимума.
Если хватит сил разобраться во всех тонкостях инструмента - сможешь выбрать за один SELECT что угодно.

В postgresql все еще нет MERGE (аналог ON DUPLICATE UPDATE)
Видимо, и не будет. Зато есть столько всего остального.
 

Alien85

I like my cat
Наверное останусь на mysql, т.к. уже все отлажено. А база и вправду маленькая, особых тормозов нет.
Спасибо за советы, а postgres потихоньку изучать буду, так сказать, на будущее.
 

Alien85

I like my cat
Перешел на постгрес (чего только стоят хранимые процедуры с возвратом данных и курсоров), появился вопрос. Стоит ли использовать схемы?

Т.е. есть таблицы: users, users_messages, users_fiends, users_recovery и т.п.
Может быть стоит объединить их в одну схему users?

Или схемы стоит использовать только для разных пользователей с сопоставлением по имени (хотя мне это не нужно, т.к. пользователь один и база так же одна)?
 

~WR~

Новичок
Если таблиц меньше 200, то я бы оставил всё в public.
Когда схем больше одной, нужно всегда помнить, что объект с одним и тем же именем может появиться в нескольких схемах. Что увеличивают вероятность совершить ошибку по невнимательности.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
а я люблю схемы, они для меня как каталоги для файлов
 
Сверху