Mongo или postgress что выбрать для интернет магазина?
У меня стоит задача написать интернет магазин, с фасетным поиском на 2-3 млн позиций. с возможностью подставлять аналоги. и я не понимаю какое преимущество дает монга? попробую привести свою линию рассуждений:
Я хотел бы еще подключить elasticsearch для фасетного поиска и по возможности полнотектового (если понадобится).
так вот у меня получается 2 связки elastic + mongo or elastic + postgress. тут как бы 1:1
я пишу на php с большим уклоном в DDD, без использования orm при сохранении (использую только для выборки), поэтому если я выбираю реляционную бд то репозиторий у мне превращается в класс на 400 строк (при большом агрегате) т.к. нужно сохранить реляции и связи в разных таблицах это одна из причин выбора монги. 2:1
с точки зрения архитектуры прочитал что в монге гораздо проще сделать шардирование при высоких нагрузках 3:1
Знание языка sql у меня лучше чем nosql 3:2
работа с реляциями для меня представляется проще.
я понимаю что монга это документоориентированная БД следовательно там можно не заботиться о структуре документов, а также можно сделать версионность документов достаточно легко, по сравнению с постгресом, но и в реляционной бд это сделать можно добавив пару таблиц.
в итоге я пока не понимаю что лучше использовать. основная проблема которую я вижу: кол-во записей в районе 3-4 млн а может и больше на порядок. и еще одна проблема: я не совсем хорошо проектирую документы в монге это меня тоже останавливает.
Извините за сумбур.
Мне кажется, с 2-3млн позиций любая реляционная бд справится...
Вот если бы у вас каждый день прибавлялось по 2-3млн позиций - еще о чем-то можно было подумать...
vitaly_74, сложно однозначно сказать. Надо понимать, что нужно делать с этой информацией. Если все, что требуется - выбирать по id, монга вам, наверное, не нужна.
Dmitry Roo, не совсем, искать аналоги по серийным номерам и опять фасетный поиск но тут эластик должен справиться. и тогда получается что дейстивтельно только по ид дергать
Когда возникает такой вопрос, то бери Postgresql. Mongo только в том случае, если ты точно знаешь зачем оно тут тебе и умеешь им пользоваться. Ну или если есть время, то делай базовое на обоих и тестируй, хотя тут спорное, при только базовом, можешь упустить нюансы.