Здравствуйте
Меня интересует теоретический вопрос по строению и выбору баз данных для крупных проектов.
Для примера возьмем такие проекты как социальные сети, сайты по изучению иностранных языков, глобальные чат системы, например twitter.
Возьмем сайт по изучению иностранных языков например LinguaLeo число пользователей 16 миллионов, там есть вкладка словарик, в которой добавляются выбранные тобой слова, меня интересует как это происходит и как это реализуется.
Как я понял 1 таблицы для данных пользователей 1на со словами и 1на для избранных слов всех пользователей, пользователь заходит на сайт под своей сессией, заходит в свой словарик и ему по его id пользователя вытаскиваются слова из общей таблицы избранных слов. И вот тут мне не понятно, там в таблице миллиарды слов, каким образом за секунду будет обработан запрос найти среди этих слов избранные слова пользователя.
Или используются другие способы и специальные базы данных при такой нагрузке для реализации этого?
Ответ
Допустим, LinguaLeo использует MySQL. Нужно сказать, что LinguaLeo это 36,300 посещений в день. И если разделим на 24 и допустим, что со всего мира на сайте сидит 1.5к постоянно в онлайне (очень приблизительно). Или в пиках даже пусть 5к одновременно и 95% всех запросов к таблице MySQL это запросы типа SELECT, то с такой задачей справится без проблем обычный сервер на два ксеона и 4 диска в раиде 0. Поверьте.
Правильно настореная MySQL БД может просто очень-очень быстро работать. И такого стака как PHP и MySQL может быть очень предостаточно. У MySQL очень быстро работают SELECT запросы. У noSQL быстрее работают INSERT-подобные запросы. Twitter скорее использует noSQL, потому что у них нужно много записывать одновременно. Хотя вот я нашел стак технологии твиттера:
2006 Ruby on Rails MySQL
2008+ Ruby on RailsMySQL (TweetStore, Flock) Redis, Memcache
2010+ Netty (reverse proxy) JVM (java, scala) MySQL (TweetStore, Flock, etc) Redis, Memcache
Как ни странно, но Twitter использует MySQL. Хотя вполне логично, что небольшие INSERT-подобные запросы для сохранения твитов в MySQL проходят тоже довольно-таки быстро. И тоже видно, что они с Ruby (который был как back-end в начале) перешли на Java в 2010м году.
К вопросу как это происходит (со словарем). Стак технологий js, jquery, mysql. Insert data through ajax into mysql database описание как записать данные в MySQL.
Комментариев нет:
Отправить комментарий