- Fundamentos de ProgramaçãoEstruturas de DadosDefinição: Estrutura de Dados
- Fundamentos de ProgramaçãoGrafos
Uma rede social tem dezenas de milhões de usuários, onde cada usuário pode seguir outros usuários. Um desenvolvedor quer implementar a funcionalidade "Pessoas que você talvez conheça" em um sistema monolítico com dados armazenados em memória RAM que precisa:
- Encontrar usuários com muitos amigos em comum com o usuário atual;
- Iterar pelos relacionamentos de amizade/seguidores com rapidez;
- Suportar atualizações constantes (novas amizades, remoções etc);
- Escalar bem em memória, já que a maioria dos usuários não está conectada à maioria dos outros.
A estrutura de dados principal mais adequada para modelar esses relacionamentos em memória, de forma a permitir algoritmos eficientes de análise de conexões (como descobrir amigos em comum, caminhos curtos etc) é: