"Dapat dilinierkan " read concern diperkenalkan di MongoDb 3.4 untuk memecahkan kemungkinan masalah dengan "mayoritas " Baca kekhawatiran.
Mari kita coba memahami masalah dengan "mayoritas " baca perhatian untuk merasakan apa yang "Dapat dilinierkan " membawa kepada kita.
Misalkan, kita memiliki replika set dari 3 node, yang terlihat seperti ini:
Dimana,A adalah Utama,B adalah Sekunder,C adalah Sekunder
Mari kita juga memiliki dua pengguna Alice dan Bob , yang akan melakukan beberapa operasi pada dokumen berikut yang berada di "pengguna " koleksi.
{
"_id": 100234,
"name": "Katelyn"
}
Pada saat instan T0:
berikut terjadi,
- Alice terhubung dengan A (utama) dan mengeluarkan perintah berikut.
Keluaran:
- B dan C menyadari bahwa A telah berhenti merespons dan memulai prosedur pemilihan.(Mungkin karena partisi jaringan ).
Pada saat instan T1:
berikut terjadi,
- Karena proses pemilihan, B berdiri sebagai primer baru .
Namun, sampai saat A tidak dikomunikasikan atau A sendiri menyadari bahwa ia perlu menurunkan dirinya ke sekunder, ia terus berfungsi sebagai primer (ini umumnya untuk jangka waktu yang sangat kecil).
Pada saat instan T2:
- Bob terhubung ke B (utama baru) dan masalah mengikuti perintah.
- Bob diakui menulis.
Pada saat instan T3:
- Alice terhubung dengan A (utama lama) dan mengeluarkan perintah berikut.
Keluaran:
Alice di sini mendapatkan data basi bahkan setelah mengeluarkan mayoritas masalah baca, yaitu penulisan yang dibuat oleh Bob tidak terlihat oleh Alice. Jadi, properti dari "Linearizability " dikompensasikan dalam kasus ini.
Oleh karena itu, muncullah solusinya yaitu "dapat dilinierkan " read concern. Dengan properti ini, mongod memeriksa primernya dan dapat melihat sebagian besar node sebelum mengeluarkan hasil operasi baca. Namun, ada penalti biaya kinerja menggunakan Read Concern di atas "mayoritas", jadi ini bukan pengganti untuk "mayoritas" membaca perhatian.
Mengenai writeConcernMajorityJournalDefault properti, itu hanyalah opsi konfigurasi set replika. Ia menerima nilai boolean .
Benar artinya, MongoDB mengakui operasi tulis setelah mayoritas anggota voting menulis ke jurnal on-disk.
Salah artinya, MongoDB mengakui operasi tulis setelah mayoritas anggota voting telah menerapkan operasi dalam memori.
Properti di atas hanya berlaku jika, menulis kekhawatiran "mayoritas" digunakan dan bendera penjurnalan tidak ditentukan.