Как бы вы реализовали твиттер, используя DB типа noSQL? - PullRequest
10 голосов
/ 12 июля 2010

Похоже, что для реализации веб-приложения, такого как twitter / facebook-wall, требуется 1 огромная реляционная таблица «feeds» (+ пользовательская таблица) и потрясающий механизм кеширования.Мой главный вопрос: как бы вы реализовали такую ​​«функцию» с использованием нереляционной БД, например, типа БД с ключом / значением?

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

Спасибо

Ответы [ 6 ]

4 голосов
/ 25 июля 2010

Вы можете прочитать, как твиттер сделал это здесь: http://highscalability.com/blog/2010/2/19/twitters-plan-to-analyze-100-billion-tweets.html

Также прочитайте это: http://highscalability.com/scaling-twitter-making-twitter-10000-percent-faster

Нет моделей данных, но довольно много информации о том, как;)

2 голосов
/ 26 июля 2011

Недавно я написал минимальную реализацию слоя данных Twitter с использованием HBase.Если вы заинтересованы, вы можете взглянуть на суть: https://gist.github.com/1101316.Первый файл CreateTwitterTable.java содержит код для создания таблиц hbase и связанных с ними семейств столбцов.Второй файл TwitterClient.java содержит код для основных функций, таких как getTimeline, addTweet, deleteTweet, followUser, unfollowUser и addUser.

2 голосов
/ 02 августа 2010

Я бы использовал Redis. Очередь ключей на пользователя + набор BLOB-объектов, полученных этими ключами.

1 голос
/ 02 августа 2010

Я добавлю MongoDB в список.

Схема будет довольно простой.

TWEETS
UserName (или UserID, если хотите немного нормализовать)
TweetID (уникальный номер)
Временная метка
Tweet (текст твита)

USER
UserID (необязательно) UserName
Имя, электронная почта, личная информация (веб-адрес и т. Д.)Пароль (хеш)
Подписчики (повторяющийся пользователь ref)
Подписчик (повторяющийся пользователь ref)

0 голосов
/ 02 августа 2010

Взгляните на Kestrel, систему очереди сообщений, которую использует Twitter

http://github.com/robey/kestrel

http://www.google.com/search?q=kestrel+twitter

0 голосов
/ 31 июля 2010

Очевидно, я хотел поддержать количество пользователей, использующих твиттер одновременно и вообще.

Извините, но это требование далеко от того, чтобы быть реалистичным. В Твиттере есть огромная ферма серверов для хранения данных для поддержки их большого параллелизма. У вас есть столько же серверов, сколько в Твиттере?

Существует архитектурная идея, реализующая твиттер-клон с помощью redis: TwitterAlikeExample

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