Я создаю веб-приложение, которое требует масштабируемости. В двух словах:
У нас есть пользователи, у них есть друзья, поэтому у них есть список друзей. Пользователи могут создавать сообщения, и сообщения от ваших друзей отображаются на главной странице, каждое сообщение связано с определенным местоположением, и эти сообщения могут быть отфильтрованы по дате, например, я хочу отобразить все сообщения от моих друзей, которые были опубликованы вчера, или показать мне все сообщения из местоположения X.
Сейчас я полностью собираю приложение в MongoDb, но у меня возникли проблемы. Например:
- На главной странице мы получили список сообщений друзей пользователей, без проблем мы используем:
$ db-> messages-> find (array ('users._id' => array ('$ in' => $ userFriendListGoesHere)));
Итак, мы получили наши сообщения, однако после этого у каждого сообщения есть местоположение, поэтому я должен сделать цикл по всем сообщениям и получить местоположение из другой коллекции, а также несколько пользователей могут быть связаны с одним сообщением. Таким образом, мы также должны получить все пользовательские данные из другой коллекции, в MySql просто запрос соединения, в циклах MongoDb 2, и это мой первый вопрос: это проблема? Требуется ли для этого много ресурсов, циклы?
Так что моя идея состоит в том, чтобы разделиться с MySql и MongoDb, я использую MongoDb для хранения всех местоположений (так как это более 350 000+ местоположений и использую вычисления длиной в широту) и MySql для сообщения, пользователей и друзей пользователей, Итак, второй вопрос, можете ли вы помочь мне с моим решением, я должен продолжать использовать MongoDb с циклами? Или использовать комбинацию?
Спасибо за чтение и ваше время.