Задать вопрос
@shmelfrol
Системный администратор, веб-программист junior

На чем строить социальную сеть и что использовать для построения новостной ленты?

Подскажите, пожалуйста, на чем построить социальную сеть и что использовать в качестве базы данных, и есть ли готовые решения - которые бы помогли с построением новостной ленты. Социальная сеть не большая - 5000 человек.
Но в процессе изучения имеющихся технологий поняли, что самое сложное - это новостная лента, так как если, например, в соц. сети 500 пользователей и они друг на друга подписаны - то количество запросов получается 500*500=250 000 - и с ростом сети данная цифра будет расти. А во всех бесплатных движках (humhub, joomla, wp и др) используется Mysql - и большое сомнение что мускл это все потянет, нужен или posgresql или mongodb. Мы новички в этом деле - есть знания php, javascript, yii2 ну и sql-запросы. Куда копать и как облегчить это все дело?
  • Вопрос задан
  • 146 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Веб-разработка
Если вы криво спроектируете БД, то не справится любая СУБД. Вам надо на этом сконцентироваться, а не на выборе между Mysql, Postrgres и, почему-то, Mongo. Mysql прекрасно справляется с большими объёмами данных и большим количеством запросов, если они делаются адекватно и на адекватном железе.

Что за математика такая с 500 * 500 в контексте соц. сети я не понимаю.

Найдите любой курс или книгу про создание соц. сетей, там будет пример корректной схемы БД.
Упрощённо - у вас будет две таблицы:
posts
  id
  author_id
  content

friendships
  user_id
  friend_id

И чтобы построить ленту достаточно одного запроса:
SELECT * from posts where author_id IN (
  SELECT friend_id FROM friendships WHERE user_id = ?
) ORDER BY id DESC

При большом количестве постов тут могут быть заморочки с оптимизацией пагинации, но это отдельная, тоже хорошо уже разобранная в обучающих материалах, тема.

Некоторые аспекты соц. сетей лучше делать на базе графовых БД, но, судя по вопросу, вам пока туда рано.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
opium
@opium
Просто люблю качественно работать
на чем умеешь программировать на 5000 человек она будет летать
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы