Я использую MongoDB, Riak и некоторые другие решения NoSQL в производстве уже некоторое время.
Я думаю, что самым большим преимуществом использования NoSQL-решения с самого начала является мыслительный процесс, когда вы не ограничены моделью реляционных данных, которую они преподают в университете, это делает вас более склонным к адаптации данных к вашим потребностям, а не к настройке приложение, чтобы соответствовать представлению ваших данных.
Тем не менее, я думаю, что преждевременное масштабирование, вероятно, не очень хорошая вещь, если вы создаете новое веб-приложение (или какое-либо приложение с большими данными), обычно требуется некоторое время, пока вы не достигнете предела для всего, что требует NoSQL (пропускная способность) , память, производительность ...)
Лучший совет, который я могу вам дать, - это построить ваше приложение с абстракциями к модели данных (не ORM), поэтому, например, если вы хотите получить список друзей из user_id, я бы создал интерфейс для «хранилища друзей». который будет иметь метод fetch_friends(user_id):friend_ids
, сохраняя хорошую абстракцию, вы можете поменять базовую реализацию, когда возникнет такая необходимость.
Я сам использовал этот метод для каких-то аналогичных целей при хранении пользовательских данных. Начал с MongoDB (мои данные были без схемы), когда нагрузка стала слишком большой для одного сервера (до того, как MongoDB получил надлежащее разделение), перешла на Riak и когда требовались лучшие SLA для клиентов (Riak не так уж надежен) перешел на какое-то правильное решение.
Каждый шаг требовал больших затрат времени на разработку и интеграцию, но к тому времени у нас уже были ресурсы, чтобы сделать такой шаг.
ИМХО, если бы я был тобой, я бы начал с MySQL, чтобы мне не нужно было думать о долговечности, постоянстве или постоянстве, и менял их, когда я сталкивался с какой-то ударой.