В общем очень холиварный вопрос, но всё таки решил спросить.
Долгое время я работал с mysql для работы с небольшими данными. Теперь есть задача для проекта с большим количеством данных (я так думаю).
В общем предполагается 4 таблицы по ~20-30 миллионов записей. И другие таблицы с небольшим количеством данных. База данных весит 10гб. Ежегодно будет добавляться по 8-10 миллионов записей.
- 90% запрос к базе это обычные select, join будет использоваться редко (по возможности)
- Insert и update со стороны пользователей минимальное количество, все добавления и обновления осуществляют cron задачи
- Нагрузка по пользователям примерно 30тыс. в течении дня
Не знаю насколько mysql будет шустрый при работе с таким количество данных. Ну и собственно что лучше будет выбрать Mysql или Postgresql?
Александр Черных, как-то "если мы упали - нам жопа, потому уже пофиг сколько часов бекап разворачивать будем". в нашем случае таблицы по 4ТБ+ это необходимый минимум информации которая должна быть доступна в любой момент, потому вариантов особо нет (точнее есть, дорого-сложно-работаетнетрогай).
Ну и плата амазону за премиум суппорт и аврору избавляет от невероятного кол-ва головной боли. с моей стороны - есть база за которой следят чтоб она была в живом состоянии. если что-то фатально сломалось не по нашей вине (в прошлый раз это был апдейт базы до новой версии, после которого она уже и не встала) - я могу только позвонить в амазон и дальше сидеть и ждать фикса. по последнему опыту - приватный фикс прилетает быстрее чем мы успеваем развернуть с бекапа копию базы.
ну а дальше - расчет что мы сами ничего не сломаем (ну и 24/7 мониторинг, ридонли реплика для аналитики/мониторинга, минимально необходимые права для каждого пользователя/сервиса).
MySQL я бы выбрал скорее всего...раз записей/обновлений мало и по крону...
Из статьи:
Postgres создан с учетом расширяемости, соответствия стандартам, масштабируемости и целостности данных - иногда в ущерб скорости. Поэтому для простых рабочих процессов с большим количеством операций чтения Postgres может оказаться худшим выбором, чем MySQL.
20-30 миллионов - это даже не близко к тем числам, на которых будут ощущаться тормоза (разумеется, при адекватной настройке и индексах) в любой СУБД с нормальным количеством выданной памяти. Разрастание таблиц лечится партиционированием старых/больше не изменяемых данных.
Я взял МарияДБ из названия понравилось и логотипа. ну и то что вроде как усовершенствованное ответвление майскуэл.
Пару баз по 10 гб залил, главное нужные индексы сделать—тогда запросы по выборкам летают.