Bagaimana untuk melaksanakan pemprosesan transaksi dalam MongoDB melalui pernyataan SQL?
Abstrak: Sebagai pangkalan data bukan perhubungan, MongoDB sentiasa terkenal dengan prestasi tinggi dan kebolehskalaan. Walau bagaimanapun, untuk aplikasi yang memerlukan pemprosesan transaksi, MongoDB tidak menyokong fungsi transaksi dalam versi terdahulu. Walau bagaimanapun, bermula dari MongoDB versi 4.0, ciri yang dipanggil Multi-Document ACID Transactions telah diperkenalkan, yang boleh menggunakan pernyataan SQL untuk melaksanakan pemprosesan transaksi. Artikel ini akan memperkenalkan secara terperinci cara melaksanakan pemprosesan transaksi melalui penyata SQL dalam MongoDB dan menyediakan contoh kod khusus.
2.1 Buat transaksi
Sebelum memulakan transaksi, anda perlu membuat sesi, yang akan digunakan untuk operasi transaksi seterusnya. . Contoh kod untuk mencipta sesi adalah seperti berikut:
var session = db.getMongo().startSession();
2.2 Memulakan urus niaga
Selepas membuat sesi, kita boleh memulakan transaksi baharu dengan melaksanakan penyata BEGIN TRANSACTION. Contoh kod adalah seperti berikut:
session.startTransaction();
2.3 Lakukan operasi transaksi
Dalam transaksi, kami boleh melaksanakan berbilang penyata SQL untuk melaksanakan logik perniagaan. Sebagai contoh, jika kita perlu memasukkan dua rekod dalam transaksi, contoh kod adalah seperti berikut:
session.getDatabase('test').users.insert({name: '张三', age: 25}); session.getDatabase('test').users.insert({name: '李四', age: 30});
2.4 Komit atau tarik balik transaksi
Selepas semua operasi transaksi dilaksanakan, kita boleh memilih untuk melakukan atau tarik balik transaksi. Jika semua operasi urus niaga berjaya dilaksanakan, kami boleh menggunakan penyata COMMIT untuk melakukan transaksi. Contoh kod adalah seperti berikut:
session.commitTransaction();
Jika ralat atau pengecualian berlaku semasa pelaksanaan transaksi, kita boleh menggunakan penyata ROLLBACK untuk melancarkan transaksi. Contoh kod adalah seperti berikut:
session.abortTransaction();
2.5 Menamatkan transaksi dan sesi
Selepas melakukan atau melancarkan semula transaksi, kita boleh menggunakan penyata END TRANSACTION untuk menamatkan transaksi. Pada masa yang sama, sesi juga perlu ditamatkan. Contoh kod adalah seperti berikut:
session.endSession();
var session = db.getMongo().startSession(); session.startTransaction(); try { var fromAccount = session.getDatabase('bank').accounts.findOne({accountNumber: '123456'}); var toAccount = session.getDatabase('bank').accounts.findOne({accountNumber: '654321'}); var amount = 100; if (fromAccount.balance >= amount) { session.getDatabase('bank').accounts.updateOne({accountNumber: '123456'}, {$inc: {balance: -amount}}); session.getDatabase('bank').accounts.updateOne({accountNumber: '654321'}, {$inc: {balance: amount}}); } else { throw new Error('Insufficient balance'); } session.commitTransaction(); } catch (error) { session.abortTransaction(); print('Transaction failed: ' + error); } finally { session.endSession(); }
Dalam contoh di atas, kami mula-mula membuat sesi dan kemudian memulakan transaksi baharu. Selepas itu, maklumat akaun diperoleh berdasarkan akaun sumber dan akaun sasaran pemindahan. Jika baki akaun sumber mencukupi, operasi pemindahan dilakukan dan baki akaun dikemas kini. Akhirnya, keseluruhan proses pemindahan selesai dengan menyerahkan transaksi.
Ringkasan: Melaksanakan pemprosesan transaksi dalam MongoDB melalui pernyataan SQL boleh menjadikan operasi merentas dokumen lebih mudah. Walaupun MongoDB ialah pangkalan data bukan perhubungan, dengan memperkenalkan fungsi Multi-Document ACID Transactions, kami boleh menggunakan pernyataan SQL untuk melaksanakan pemprosesan transaksi. Dalam contoh kod, kami menggunakan pemacu rasmi MongoDB untuk melaksanakan pernyataan SQL, tetapi alatan pihak ketiga yang lain juga boleh digunakan untuk mencapai ini.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pemprosesan transaksi dalam MongoDB melalui pernyataan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!