Multi-document transactions arrived in MongoDB 4.0 in June 2018. MongoDB has always been transactional around updates to a single document. Now, with multi-document ACID transactions we can wrap a set of database operations inside a start and commit transaction call. This ensures that even with inserts and/or updates happening across multiple collections and/or databases, the external view of the data meets ACID constraints.
To demonstrate transactions in the wild we use a trivial example app that emulates a flight booking for an online airline application. In this simplified booking we need to undertake three operations:
seat_collection
payment_collection
audit_collection
For this application we will use three separate collections for these documents as detailed above. The code in transactions_main.py
updates these collections in serial unless the --usetxns argument
is used. We then wrap the complete set of operations inside an ACID transaction. The code in transactions_main.py
is built directly using the MongoDB Python driver (Pymongo 3.7.1).
The goal of this code is to demonstrate to the Python developers just how easy it is to covert existing code to transactions if required or to port older SQL based systems.
#python #sql #database #web-development