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

Apa masalah penulisan mongod default di versi mana?

Masalah penulisan default di MongoDB adalah w:1 dari MongoDB 2.2 pada tahun 2012.

Ada tiga pengaturan berbeda yang dapat Anda gunakan untuk menyiapkan masalah penulisan di versi MongoDB saat ini (versi 3.2.6 dan yang lebih baru):

  • w pengaturan :berapa banyak node yang harus mengakui penulisan sebelum menyatakannya berhasil. Defaultnya adalah 1, artinya pengakuan node utama sudah cukup.
  • j pengaturan :apakah tulisan harus dijurnal sebelum diakui? Default tergantung pada writeConcernMajorityJournalDefault .
  • writeConcernMajorityJournalDefault :jika Anda menentukan w:majority tulis pengaturan perhatian untuk tulisan Anda tanpa mengatur j , apa yang tersirat j nilai? Standarnya adalah true (penulisan harus dijurnal di sebagian besar simpul pemungutan suara sebelum diakui).

Ada juga wtimeout pengaturan untuk mengonfigurasi berapa lama MongoDB harus menunggu hingga masalah penulisan dipenuhi sebelum memberi tahu klien bahwa penulisan belum diakui. Jika tidak, menulis menunggu kekhawatiran menulis puas bisa menunggu selamanya alih-alih gagal.

Pengaturan khusus di sini adalah w:majority . Ini berarti bahwa penulisan harus menyebar ke mayoritas node pemungutan suara (dan juga jurnal mereka) dalam set replika untuk diakui. Ini bisa dibilang setting paling aman sekaligus memberikan performa yang baik, karena:

  • Ini mencegah penulisan yang diakui untuk dibatalkan jika terjadi kegagalan.
  • Ini mengatur throughput aplikasi sehingga tidak akan mengirim penulisan lebih cepat daripada yang dapat ditangani oleh set replika (karena kendala perangkat keras, situasi jaringan, dll.).

Seperti yang Anda bayangkan, node pemungutan suara menyertakan arbiter . Jadi, dalam set replika dengan pengaturan arbiter primer-sekunder, w:majority bisa gagal dalam skenario di mana:

  • Salah satu node pembawa data sedang offline karena beberapa alasan.
  • Set replika masih online dengan primer yang dapat ditulis, karena topologinya sekarang menjadi arbiter-utama-offline.
  • Menulis dengan w:1 akan berhasil seperti biasa, tetapi penulisan tersebut dapat dibatalkan (karena tidak ditulis ke sebagian besar node yang memuat data voting).
  • Karena arbiter tidak membawa data, w:majority penulisan akan gagal (atau menunggu tanpa batas waktu) karena arbiter dihitung sebagai simpul pemungutan suara.

Karena alasan ini, tidak disarankan menggunakan arbiter jika Anda berencana menggunakan w:majority dalam aplikasi Anda.

Harap dicatat bahwa menggunakan arbiter dalam set replika 3-simpul yang membentuk pecahan dalam kluster pecahan juga tidak disarankan, karena perpindahan potongan memerlukan w:majority . Kegagalan node pembawa data dalam satu pecahan akan merusak operasi migrasi chunk.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara menemukan koleksi kode dengan regex dan kriteria kompleks menggunakan driver Java MongoDB?

  2. mongodb geoNear vs near

  3. Baca dari replika sekunder yang diatur di mongodb melalui javascript

  4. dapatkan nilai dengan nama kunci driver mongodb node.js

  5. Membuat file di GridFs (MongoDb)