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

Komit dan persistensi disk dalam NoSQL (MongoDB)

Saya bertanya-tanya dari mana meme ini berasal. Pertama, tidak ada benar-benar menjamin bahwa apa pun ditulis ke HDD yang sebenarnya karena semua lapisan caching, dan bahkan RDBMS tradisional tidak berusaha menulis ke file sepanjang waktu, jika tidak mereka tidak akan begitu cepat, tetapi detailnya sangat bervariasi (lihat untuk contoh pembilasan adaptif di InnoDB ).

Anda hanya perlu memperhatikan lapisan pertama yang pada dasarnya adalah pertanyaan ketika database mencoba menulis ke disk. Sekarang ada lapisan caching pertama:Alih-alih menulis ke dalam tabel/koleksi yang sebenarnya, banyak DB (termasuk MongoDB) menggunakan penjurnalan:Menulis ke file append-only yang akan secara teratur digabungkan kembali ke file data aktual. Apa pun yang terjadi dan ada di jurnal, Anda baik-baik saja.

Sekarang pertanyaannya adalah apakah Anda ingin menulis ke jurnal dan bagaimana melakukannya. Di MongoDB, Anda dapat mengontrol ini menggunakan tulis masalah , yaitu Anda dapat meminta kode aplikasi Anda menunggu hingga MongoDB menulis ke jurnal untuk penulisan tertentu (atau untuk semua penulisan). Di MongoDB, menunggu komit jurnal membutuhkan waktu paling banyak 10 md dengan konfigurasi default jika jurnal dan file data berada di perangkat blok yang berbeda, 33 md jika berada di perangkat blok yang sama. journalCommitInternval juga dapat dimodifikasi jika diperlukan.

Saya mengumpulkan beberapa detail tentang jurnal MongoDB dalam jawaban lain .

Sebagai catatan, daya tahan tidak terlalu berkaitan dengan transaksi. Transaksi memberikan isolasi dan konsistensi, mis. Anda dapat mengubah banyak hal dalam sekali jalan dan pembaca dijamin mendapatkan yang baru atau yang lama, tetapi tidak beberapa keadaan di antaranya. Dengan kata lain, database yang aman untuk transaksi dapat berupa database dalam memori yang tidak menulis ke disk sama sekali.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kesalahan batas waktu saat menghubungkan ke CosmosDB dengan MongoDB API

  2. MongoDB $kurangi

  3. Gunakan kasus untuk NoSQL

  4. Membaca koleksi MongoDB besar dari Spark dengan bantuan Worker

  5. Objek #<MongoClient> tidak memiliki metode 'terbuka'