Согласно документации MongoDB, транзакции работают только для наборов реплик, а не для одного узла. Почему такое требование? Разве не легче выполнять транзакции на одном узле, чем в распределенной системе?

3
Rajat Goel 23 Сен 2020 в 08:45

1 ответ

Лучший ответ

Реализация транзакций использует сеансы, которые, в свою очередь, требуют журнала операций. Oplog предоставляется наборами реплик для синхронизации данных между узлами.

Разве не легче выполнять транзакции на одном узле, чем в распределенной системе?

Это правда, но на практике MongoDB позиционирует себя как базу данных с высокой доступностью, поэтому существует довольно мало производственных развертываний с использованием автономного сервера (насколько я знаю, это даже не вариант в Atlas, например). Следовательно, отсутствие поддержки транзакций на автономных серверах обычно ни на что не влияет.

И наоборот, реализация транзакций только на автономных серверах не удовлетворит потребности подавляющего большинства развертываний / клиентов MongoDB, которые используют наборы реплик и сегментированные кластеры.

В целях разработки вы можете запустить набор реплик с одним узлом, который дает вам журнал операций, необходимый для сеансов и транзакций, но при этом только один процесс mongod.

2
D. SM 23 Сен 2020 в 13:15