Какие типы транзакций реализованы в MongoDB
Python
Senior
Без компании
Какие типы транзакций реализованы в MongoDB
Ответы
В MongoDB поддерживаются два типа транзакций:
- **Односегментные (single-document) транзакции**
Встроенная атомарность на уровне одного документа. Операции внутри документа выполняются атомарно.
```
db.products.update_one(
{"_id": 1},
{"$inc": {"stock": -1}, "$set": {"last_modified": datetime.now()}}
)
```
- **Многосегментные (multi-document) транзакции**
Поддерживаются с версии 4.0. Требуют реплика-сет или шардированного кластера.
```
with client.start_session() as session:
with session.start_transaction():
db.orders.insert_one({"item": "book", "qty": 1}, session=session)
db.inventory.update_one(
{"item": "book"},
{"$inc": {"qty": -1}},
session=session
)
```
Ключевые особенности:
- Транзакции в MongoDB ACID-совместимы (с версии 4.0)
- Многосегментные транзакции имеют ограничения по времени (по умолчанию 60 сек)
- Влияют на производительность, рекомендуются для критически важных операций