Задать вопрос
littleguga
@littleguga
Не стыдно не знать, а стыдно не интересоваться.

Как устроено хранение данных?

Доброго времени суток.
Где и что можно почитать, чтобы ответить на вопрос: "Как устроена база данных вк, а конкретно интересует такой момент - у группы могут быть подписчики, но они могут храниться в разных базах данных(например группе 3 года и 3М участников) и даже на разных серверах, как происходит получение всего списка участников?"
Заранее благодарен за ответ!
  • Вопрос задан
  • 1101 просмотр
Подписаться 4 Оценить Комментировать
Решения вопроса 2
viktorvsk
@viktorvsk
Что бы узнать, как устроена база данных ВК - нужно почитать их документацию, спецификацию, технические задания, вики или что-то еще, где у них может храниться описание системы.

Что бы ответить на остальные вопросы в общем и в частности о том, как хранить данные на разных серверах, то ключевые слова для поиска: репликация базы данных, шардинг, distributed databases и производные.
Ответ написан
Комментировать
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Очевидно, что строится индекс идентификаторов юзеров для каждой группы.
Индекс не обязательно хранить на одном инстансе базы, он шардированый. Отдельно хранится счетчик кол-ва юзеров.
Профили тоже хранятся по шардам.
У ВК есть быстрый механизм загрузки профилей "пачкой".

Алгоритм примерно такой:
1. Не достигли конца индекса?
2. Получаем "пачку" идентификаторов.
3. Загружаем профили.
4. go to 1
5. done! Загрузили всех юзеров из группы.

Фишка в том, что в "единицу времени" не нужен доступ ко всем данным пользователей группы.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Все просто: объект-группа хранит СВОЙ список идентификаторов пользователей (подписчиков), которые в неё входят. Таким образом при оповещении о новой записи просто проверяются флаги: пользователь существует (и не заблокирован) и уведомления разрешены.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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