Basicamente você tem 3 opções:
-
Basta armazenar ouserId
e, em seguida, buscar o usuário separadamente. Dessa forma, você sempre obtém os melhores resultados em termos de dados atualizados. Mas é claro que é mais lento. Isso é basicamente o que um banco de dados relacional faz. Um banco de dados SQL apenas dará uma olhada na chave estrangeira e buscará os dados por id.
-
Viva com dados desatualizados. Armazene uma duplicata do nome de usuário dentro dos comentários. Às vezes, esse é o comportamento desejado, porque dessa forma você pode representar os dados exatamente como eram quando foram armazenados. Isso significa:Se John criar um comentário e, posteriormente, seu nome de usuário for atualizado para Paul, você ainda poderá ver que foi criado como John. (Isso é especialmente útil para, por exemplo, faturas, quando você faz referência a uma pessoa e o endereço muda, do que você não deseja atualizar o endereço de uma fatura antiga)
-
Atualize tudo o que contém um nome de usuário, quando o nome de usuário for atualizado. Isso também não é ruim, porque um nome de usuário normalmente nunca deve mudar. Assim as leituras serão sempre rápidas, pois o nome fica armazenado dentro do comentário. E se o nome mudar, você precisa atualizar tudo onde o usuário estiver envolvido. Esta é uma tarefa lenta, claro, mas porque não deve acontecer a cada minuto, é tolerável.
3.1 Você pode otimizar as coisas:se o nome de usuário mudar, isso será armazenado em algum lugar e aplicado à meia-noite. Dessa forma, você pode coletar várias alterações de nome e atualizar tudo ao mesmo tempo.
Como você pode ver:NoSQL é uma questão de escolha . Você pode fazer as coisas que melhor se adaptam aos seus dados. Claro que é sempre uma troca:mais lento/mais rápido, mais/menos código para escrever, mais fácil/difícil de manter.
Resumido é:
- Gravações rápidas, dados consistentes, leituras lentas
- Gravações rápidas, dados inconsistentes, leituras rápidas
- Gravações rápidas, leituras rápidas, os dados ficam consistentes após o processo de atualização, o que pode levar algum tempo. E o processo de atualização, é claro, é lento.