MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Práticas recomendadas para atualizar dados duplicados de forma assíncrona no mongodb


Basicamente você tem 3 opções:

  1. Basta armazenar o userId 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.

  2. 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)

  3. 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 é:
  1. Gravações rápidas, dados consistentes, leituras lentas
  2. Gravações rápidas, dados inconsistentes, leituras rápidas
  3. 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.