Não sou especialista em banco de dados e não tenho formação formal em ciência da computação, então tenha paciência comigo. Quero conhecer os tipos de coisas negativas do mundo real que podem acontecer se você usar uma versão antiga do MongoDB anterior à v4 , que não era compatível com ACID . Isso se aplica a qualquer banco de dados não compatível com ACID.
Eu entendo que o MongoDB pode executar Operações Atômicas , mas que eles "não suportam o bloqueio tradicional e transações complexas", principalmente por razões de desempenho. Também entendo a importância das transações do banco de dados, e o exemplo de quando o banco de dados é para um banco, e você está atualizando vários registros que precisam estar sincronizados. Você deseja que a transação volte ao estado inicial, se houver um falta de energia elétrica para que o crédito seja igual à compra etc.
Mas quando converso sobre o MongoDB, aqueles que não conhecem os detalhes técnicos de como os bancos de dados são realmente implementados começam a usar declarações como:
O MongoDB é muito mais rápido que o MySQL e o Postgres, mas há uma pequena chance, como 1 em um milhão, de que "não seja salvo corretamente".
Essa parte "não salva corretamente" está se referindo a este entendimento: se houver uma queda de energia no momento em que você estiver gravando no MongoDB, há uma chance de um registro específico (digamos que você esteja acompanhando visualizações de página em documentos com 10 atributos cada), que um dos documentos salvou apenas cinco dos atributos ... o que significa que, com o tempo, seus contadores de visualizações de página ficarão "ligeiramente" desligados. Você nunca saberá quanto, você saberá que eles estarão 99,999% corretos, mas não 100%. Isso ocorre porque, a menos que você tenha feito especificamente dessa operação atômica o mongodb , não é garantido que a operação seja atômica.
Portanto, minha pergunta é: qual é a interpretação correta de quando e por que o MongoDB pode não "salvar corretamente"? Que partes do ACID ele não atende e em que circunstâncias, e como você sabe quando esses 0,001% dos seus dados estão desativados? Isso não pode ser corrigido de alguma forma? Caso contrário, isso parece significar que você não deve armazenar coisas como sua users
tabela no MongoDB, porque um registro pode não ser salvo. Mas, novamente, esse 1 / 1.000.000 de usuário pode precisar "tentar se inscrever novamente", não?
Estou apenas procurando talvez uma lista de quando / por que coisas negativas acontecem com um banco de dados não compatível com ACID como o MongoDB e, idealmente, se houver uma solução padrão (como executar um trabalho em segundo plano para limpar dados ou usar SQL apenas para isso, etc.) .