Je ne suis pas un expert en bases de données et je n'ai pas d'expérience en informatique, alors soyez indulgent avec moi. Je veux connaître les types de choses négatives du monde réel qui peuvent se produire si vous utilisez une ancienne version de MongoDB avant la v4 , qui n'était pas conforme à ACID . Cela s'applique à toute base de données non conforme ACID.
Je comprends que MongoDB peut effectuer des opérations atomiques , mais qu'il ne "prend pas en charge le verrouillage traditionnel et les transactions complexes", principalement pour des raisons de performances. Je comprends également l'importance des transactions de base de données, et l'exemple lorsque votre base de données est pour une banque, et que vous mettez à jour plusieurs enregistrements qui doivent tous être synchronisés, vous voulez que la transaction revienne à l'état initial s'il y a un panne de courant, donc le crédit est égal à l'achat, etc.
Mais quand j'entre dans des conversations sur MongoDB, ceux d'entre nous qui ne connaissent pas les détails techniques de la façon dont les bases de données sont réellement implémentées commencent à lancer des déclarations comme:
MongoDB est bien plus rapide que MySQL et Postgres, mais il y a une toute petite chance, comme 1 sur un million, qu'il "ne sauvegarde pas correctement".
Cette partie "ne sauvegardera pas correctement" fait référence à cette compréhension: s'il y a une coupure de courant juste au moment où vous écrivez sur MongoDB, il y a une chance pour un enregistrement particulier (disons que vous suivez les pages vues dans les documents avec 10 attributs chacun), que l'un des documents n'a enregistré que 5 des attributs ... ce qui signifie qu'avec le temps, vos compteurs de pages vues seront "légèrement" éteints. Vous ne saurez jamais de combien, vous savez qu'ils seront corrects à 99,999%, mais pas à 100%. En effet, à moins que vous n'en ayez spécifiquement fait une opération atomique mongodb , l'opération n'est pas garantie d'avoir été atomique.
Donc ma question est, quelle est la bonne interprétation de quand et pourquoi MongoDB peut ne pas "enregistrer correctement"? Quelles parties d'ACID ne satisfont-elles pas, et dans quelles circonstances, et comment savoir quand ces 0,001% de vos données sont désactivées? Cela ne peut-il pas être résolu d'une manière ou d'une autre? Sinon, cela semble signifier que vous ne devriez pas stocker des choses comme votre users
table dans MongoDB, car un enregistrement pourrait ne pas être sauvegardé. Mais là encore, cet utilisateur au 1/1 000 000 pourrait simplement avoir besoin de "réessayer de s'inscrire", non?
Je cherche juste peut-être une liste de quand / pourquoi des choses négatives se produisent avec une base de données non conforme ACID comme MongoDB, et idéalement s'il y a une solution de contournement standard (comme exécuter un travail en arrière-plan pour nettoyer les données, ou utiliser uniquement SQL pour cela, etc.) .