Je ne suis pas un expert en bases de données et je n'ai pas de formation informatique formelle, alors soyez indulgent avec moi. Je veux connaître les types de le monde réel les choses négatives qui peuvent se produire si vous utilisez un vieux Version de MongoDB antérieure à v4 qui n'étaient pas ACID compliant. Cela s'applique à toute base de données non conforme à la norme ACID.
Je comprends que MongoDB peut effectuer Opérations atomiques mais qu'ils ne "prennent 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 de votre base de données pour une banque, et vous mettez à jour plusieurs enregistrements qui doivent tous être synchronisés, vous voulez que la transaction revienne à l'état initial s'il y a une panne de courant afin que le crédit soit égal à l'achat, etc.
Mais lorsque je participe à des conversations sur MongoDB, ceux d'entre nous qui ne connaissent pas les détails techniques de la mise en œuvre des bases de données commencent à lancer des affirmations du type :
MongoDB est bien plus rapide que MySQL et Postgres, mais il y a une infime chance, de l'ordre de 1 sur 1 million, qu'il "n'enregistre pas correctement".
La partie "ne sauvegardera pas correctement" fait référence à cette compréhension : S'il y a une coupure de courant au moment où vous écrivez dans MongoDB, il y a une chance pour un enregistrement particulier (disons que vous suivez les pages vues dans des documents avec 10 attributs chacun), que l'un des documents n'ait enregistré que 5 des attributs ce qui signifie qu'au fil du temps, vos compteurs de pages vues seront "légèrement" erronés. Vous ne saurez jamais de combien, vous savez qu'ils seront corrects à 99,999 %, mais pas à 100 %. C'est parce que, à moins que vous n'ayez spécifiquement fait de cet attribut un élément de votre site Web, vous ne pouvez pas le modifier. opération atomique mongodb l'opération n'est pas garantie comme ayant été atomique.
Ma question est donc la suivante : quelle est l'interprétation correcte de quand et pourquoi MongoDB peut ne pas "enregistrer correctement" ? Quelles sont les parties de l'ACID qu'il ne satisfait pas, et dans quelles circonstances, et comment savez-vous quand ces 0,001 % de vos données sont hors service ? Cela ne peut-il pas être corrigé d'une manière ou d'une autre ? Si ce n'est pas le cas, cela semble signifier que vous ne devriez pas stocker des choses telles que votre fichier users
dans MongoDB, car un enregistrement pourrait ne pas être sauvegardé. Mais là encore, ce 1/1 000 000 d'utilisateurs pourrait simplement avoir besoin de "réessayer de s'inscrire", non ?
Je cherche juste à obtenir une liste de quand et pourquoi des choses négatives se produisent avec une base de données non conforme ACID comme MongoDB, et idéalement s'il existe une solution standard (comme exécuter un travail en arrière-plan pour nettoyer les données, ou utiliser uniquement SQL pour cela, etc.)