Группирование нескольких операций в транзакциях в Azure Cosmos DB для виртуальных ядер MongoDB
Область применения: Виртуальные ядра MongoDB
Обычно требуется сгруппировать несколько операций в одну транзакцию для фиксации или отката. В принципах базы данных транзакции обычно реализуют четыре основных принципа ACID . ACID означает:
- Атомарность: транзакции полностью или не полностью завершены.
- Согласованность: базы данных переход с одного согласованного состояния на другое.
- Изоляция: отдельные транзакции экранируются от одновременных.
- Устойчивость: завершенные транзакции являются постоянными, обеспечивая согласованность данных даже во время сбоев системы.
Принципы ACID в управлении базами данных обеспечивают надежную обработку транзакций. Azure Cosmos DB для виртуальных ядер MongoDB реализует эти принципы, что позволяет создавать транзакции для нескольких операций.
Необходимые компоненты
- Существующий кластер виртуальных ядер Azure Cosmos DB для MongoDB.
- Если у вас нет подписки Azure, создайте учетную запись бесплатно.
- Если у вас есть подписка Azure, создайте новый кластер виртуальных ядер Azure Cosmos DB для MongoDB.
Создание транзакции
Создайте новую транзакцию с помощью соответствующих методов на выбранном языке разработчика. Обычно эти методы включают в себя некоторый механизм упаковки для группировки нескольких транзакций и метода фиксации транзакции.
Примечание.
В примерах в этом разделе предполагается, что у вас есть переменная коллекции с именем collection
.
Используется
startSession()
для создания сеанса клиента для операции транзакции.const transactionSession = client.startSession();
Создайте транзакцию с помощью
withTransaction()
и поместите все соответствующие операции транзакций в обратный вызов.await transactionSession.withTransaction(async () => { await collection.insertOne({ name: "Coolarn shirt", price: 38.00 }, transactionSession); await collection.insertOne({ name: "Coolarn shirt button", price: 1.50 }, transactionSession); });
Зафиксируйте транзакцию с помощью
commitTransaction()
.transactionSession.commitTransaction();
Используется
endSession()
для завершения сеанса транзакции.transactionSession.endSession();
Откат транзакции
Иногда может потребоваться отменить транзакцию перед фиксацией.
Используя существующий сеанс транзакций, прервать транзакцию с
abortTransaction()
помощью .transactionSession.abortTransaction();
Завершите сеанс транзакции.
transactionSession.endSession();