Питер Бейлис. Они также могут быть реализованы для MongoDB на стороне клиента.

эксперт по базам данных и не имею официального опыта работы с информатикой, так что терпите меня. Я хочу знать видыреальный мир негативные вещи, которые могут произойти, если вы используете старыйВерсия MongoDB до v4которые не былиACID совместимый. Это относится к любой базе данных, несовместимой с ACID.

Я понимаю, что MongoDB может выполнятьАтомные Операции, но они не «поддерживают традиционную блокировку и сложные транзакции», в основном по соображениям производительности. Я также понимаю важность транзакций базы данных и пример, когда ваша база данных предназначена для банка, и вы обновляете несколько записей, которые должны быть синхронизированы, вы хотите, чтобы транзакция вернулась в исходное состояние, если есть перебои в подаче электроэнергии, поэтому кредит равен покупке и т. д.

Но когда я вхожу в разговоры о MongoDB, те из нас, кто не знает технических деталей о том, как на самом деле реализованы базы данных, начинают разбрасываться такими утверждениями, как:

MongoDB работает намного быстрее, чем MySQL и Postgres, но есть небольшой шанс, например, 1 на миллион, что он «не сохранит правильно».

Эта часть «не сохранит правильно» относится к следующему пониманию: если в момент записи в MongoDB происходит сбой питания, есть шанс для конкретной записи (скажем, вы отслеживаете просмотры страниц в документах с 10 атрибутами). каждый), что один из документов сохранил только 5 атрибутов… что означает, что со временем ваши счетчики просмотров будут «слегка» выключены. Вы никогда не узнаете, насколько, вы знаете, что они будут правильными на 99,999%, но не на 100%. Это потому, что, если вы специально не сделали этоMongodb атомная операцияэта операция не гарантируется как атомарная.

Итак, мой вопрос: какова правильная интерпретация того, когда и почему MongoDB может «не сохранять правильно»? Каким частям ACID он не соответствует, и при каких обстоятельствах, и как вы узнаете, что эти 0,001% ваших данных не соответствуют? Разве это не может быть исправлено как-то? Если нет, то это означает, что вы не должны хранить такие вещи, какusers таблица в MongoDB, потому что запись не может быть сохранена. Но опять же, этому 1/1 000 000 пользователей может просто понадобиться «попробовать зарегистрироваться снова», нет?

Я просто ищу, может быть, список, когда / почему негативные вещи случаются с несовместимой с ACID базой данных, такой как MongoDB, и в идеале, если есть стандартный обходной путь (например, запустить фоновое задание для очистки данных или использовать только SQL для этого и т. Д.) ,

Ответы на вопрос(10)

Ваш ответ на вопрос