Firebase Foto do usuário

Estou tentando entender o que eu pensava ser um conceito simples.

Eu tenho um aplicativo no qual inscrevo um usuário, permitindo que ele defina um 'photoURL' para suas informações de 'usuário' no sistema de autenticação do Firebase. Isso funciona. Quando o usuário cria uma postagem no meu aplicativo, desejo exibir o título, a imagem e a 'photoURL' do criador.

Atualmente, eu salvo a postagem:

-Post {
 -id
 -title
 -image
 -photoURL <- from current logged in user }

Também permito que os usuários visitem a página de pôsteres via routing / poster / 'displayName'

Mais tarde, quando um usuário atualiza as informações de seu perfil como displayName ou photoURL, preciso encontrar todas as postagens, comentários, mensagens, respostas e qualquer outro local em que esse usuário tenha um registro e atualizar o photoURL?

O que eu pensei que seria capaz de fazer é dizer: (pseudo código)

get all posts =>
 foreach(post)
   post = {
          title: post.title.val()
          image: post.image.val()
          avatar: firebase.database().ref().child('users' + post.key)
          }

Tudo o que leio diz que preciso armazenar essa photoURL na minha própria tabela 'Usuários'. Se eu fizer isso, nenhuma das postagens será atualizada, a menos que eu escreva uma chamada de servidor para fazer isso toda vez que houver uma alteração. O problema é que, se eu tenho 100 mil usuários e 10% deles alteram seu photoURL, preciso alterá-lo em postagens, comentários, respostas e mensagens por usuário. Se o usuário médio tiver 100 postagens, 4000 comentários, 6000 respostas, veremos cerca de 10 mil lugares * 10 mil usuários que precisam ser atualizados e se a chamada média do servidor for 137 ms, meus custos serão de aproximadamente US $ 175 (custos)

A outra opção é extrair informações de duas tabelas e criar um novo objeto sempre. Isso levaria a dobrar as chamadas e o tempo do servidor, dobrando meus custos.

Essa é a melhor abordagem para isso? Eu pensei que seria muito mais fácil obter a foto do usuário e o nome de exibição.

Desculpe pelo longo post épico, mas estou tentando aprender. Obrigado a todos!

questionAnswers(1)

yourAnswerToTheQuestion