MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

'Transaksi' multi-koleksi, multi-dokumen di MongoDB

Sebagai respons generik, komit multi-dokumen pada MongoDB dapat dilakukan sebagai komit dua fase, yang telah didokumentasikan secara luas dalam manual (Lihat:http://docs.mongodb.org/manual/tutorial/perform-two-phase- commit/).

Pola yang disarankan oleh manual secara singkat adalah sebagai berikut:

  • Siapkan transactions terpisah koleksi, yang mencakup dokumen target , dokumen sumber , nilai dan status (dari transaksi)
  • Buat objek transaksi baru dengan initial sebagai state
  • Mulai melakukan transaksi dan perbarui state ke pending
  • Terapkan transaksi ke kedua dokumen (target, sumber)
  • Perbarui status transaksi menjadi committed
  • Gunakan find untuk menentukan apakah dokumen mencerminkan status transaksi, jika ok, perbarui status transaksi menjadi done

Selain itu:

  • Anda perlu menangani skenario kegagalan secara manual (sesuatu tidak terjadi seperti yang dijelaskan di bawah)
  • Anda perlu mengimplementasikan rollback secara manual, pada dasarnya dengan memperkenalkan nama state nilai canceling

Beberapa catatan khusus untuk penerapan Anda:

  • Saya tidak menyarankan Anda menambahkan bidang seperti lock_status , data_old , data_new ke dalam dokumen sumber/target. Ini harus menjadi properti dari transaksi, bukan dokumen itu sendiri.
  • Untuk menggeneralisasi konsep dokumen target/sumber, saya pikir Anda bisa menggunakan DBref s:http://www.mongodb.org/display/DOCS/Database+References
  • Saya tidak suka ide untuk menghapus dokumen transaksi jika sudah selesai. Menyetel status ke done sepertinya ide yang lebih baik karena ini memungkinkan Anda untuk men-debug nanti dan mencari tahu jenis transaksi apa yang telah dilakukan. Saya yakin Anda juga tidak akan kehabisan ruang disk (dan untuk ini juga ada solusinya).
  • Dalam model Anda, bagaimana Anda menjamin bahwa semuanya telah berubah seperti yang diharapkan? Apakah Anda memeriksa perubahannya?


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mengekspor modul database luwak

  2. Menautkan &Membuat Gabungan MongoDB Menggunakan SQL:Bagian 2

  3. Sekarang Tersedia:Instans MongoDB yang Dihosting Sepenuhnya di AWS

  4. Mongo cara $lookup dengan DBRef

  5. Luwak, perbarui nilai dalam array objek