Я не эксперт по базам данных и не имею официального образования в области компьютерных наук, так что терпите меня.Я хочу знать, какие виды реального мира могут произойти, если вы используете старую версию MongoDB до v4 , которая не была совместима с ACID .Это относится к любой базе данных, несовместимой с ACID.
Я понимаю, что MongoDB может выполнять атомарные операции , но они не "поддерживают традиционную блокировку и сложные транзакции", в основном из соображений производительности.Я также понимаю важность транзакций базы данных и пример, когда ваша база данных предназначена для банка, и вы обновляете несколько записей, которые должны быть синхронизированы, вы хотите, чтобы транзакция вернулась в исходное состояние, если естьперебои в подаче электроэнергии, поэтому кредит равняется покупке и т. д.
Но когда я захожу в разговоры о MongoDB, те из нас, кто не знает технических деталей о том, как на самом деле реализуются базы данных, начинают разбрасываться такими заявлениями:
MongoDB намного быстрее, чем MySQL и Postgres, но есть небольшой шанс, например, 1 на миллион, что он "не сохранится правильно".
Это "победило"«Правильное сохранение» - это относится к следующему пониманию: если в момент записи в MongoDB происходит сбой питания, есть шанс для конкретной записи (скажем, вы отслеживаете просмотры страниц в документах с 10 атрибутами каждый), чтоодин из документов сохранил только 5 атрибутов ... что означает, что со временем ваша страницаСчетчики ew будут «слегка» выключены.Вы никогда не узнаете, насколько, вы знаете, что они будут правильными на 99,999%, но не на 100%.Это потому, что, если вы специально не сделали эту атомарную операцию mongodb , эта операция не гарантированно была атомарной.
Поэтому мой вопрос заключается в том, как правильно интерпретировать, когда и почемуMongoDB не может "сохранить правильно"?Каким частям ACID он не соответствует, и при каких обстоятельствах, и как вы узнаете, что эти 0,001% ваших данных не соответствуют?Разве это не может быть исправлено как-то?Если нет, то это означает, что вы не должны хранить такие вещи, как ваша таблица users
в MongoDB, потому что запись может не сохраниться.Но опять же, этому 1/1 000 000 пользователей, возможно, просто нужно «попробовать зарегистрироваться заново», не так ли?
Я просто ищу, может быть, список того, когда / почему происходят негативные события с несовместимой с ACID базой данных, такой как MongoDBи в идеале, если есть стандартный обходной путь (например, запустить фоновое задание для очистки данных или использовать только SQL для этого и т. д.).