SQL Server: класс друзей "facebook like" - PullRequest
0 голосов
/ 21 августа 2011

Мне нужно, чтобы 1 пользователь мог быть другом другого пользователя.Поэтому я думаю, что я могу использовать 2 таблицы:

  • таблица User (Id, Name, Date, Etc.)
  • таблица Friends (UserId, Friend_UserId)

С этими таблицами я могу сопоставить, что 1 пользователь является другом другого пользователя.Проблема в том, что для 1000 пользователей существует 1000 * 1000 = 1,000000 или строк.

Я не знаю, сколько строк может храниться в SQL Server, но мой вопрос заключается в том, что произошло с 1 миллионом пользователей?SQL Server выходит из строя?

Кто-нибудь может поделиться опытом о Friends-Class (в концепции ООП я помню, что это было имя)!

Ответы [ 4 ]

1 голос
/ 22 августа 2011

Вы можете хранить 1000 пользователей и друзей на сервере, вы можете хранить 10000 пользователей и друзей на сервере, вы можете хранить, возможно, 1M пользователей и друзей на сервере, но наверняка вы не сможете хранить 100M пользователей и друзья и имеют приличную задержку для ответов, которые пишут / читают БД. С социальными веб-приложениями просто нет единого окна, способного справиться с успешным приложением. Вот почему название игры масштабируется и шардируется. Вы можете выбрать и получить реальный и пока игнорировать проблему. Или вы можете выбрать дизайн для него . Также см. Sharding With SQL Azure , и его стоит прочитать в других альтернативах .

1 голос
/ 21 августа 2011

в вашем примере 1000 * 1000 означает, что каждый пользователь дружит со всеми. Зачем вообще хранить ассоциации?

Это действительно будет так? Или вы просто проверяете теоретический предел?

И вы собираетесь хранить две копии каждой ассоциации? Скажем, пользователь 1 и пользователь 2 - друзья. Вы собираетесь иметь таблицу с этими двумя строками:

UserId, Friend_UserId
1           2
2           1

Это удвоит объем необходимых данных. Вы должны установить правило, согласно которому нижний из двух идентификаторов всегда находится в одном столбце.

И, конечно же, убедитесь, что вы индексировали оба столбца.

0 голосов
/ 21 августа 2011

но мой вопрос: что случилось с 1 миллионом пользователей?SQL Server выходит из строя?

Да, если вы запускаете его на своем мобильном телефоне.

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

0 голосов
/ 21 августа 2011

Одна из многих причин хорошего SQL-сервера заключается в том, чтобы специально хранить и запрашивать много строк. Нет проблем (помимо, возможно, физических ресурсов сервера, таких как пространство на жестком диске), которые не позволят 1 000 000 строк в таблице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...