Исках да дам този отговор, тъй като се появи във въпрос за изпит за mongodb за безплатния онлайн университет mongodb. Той е изчерпателен и предоставя документация.
Разбрах го и ще изчистя известно объркване, причинено главно от липсата на обяснение в уроците. Не съм критичен, но е необходимо допълнително обяснение, за да отговоря правилно на този въпрос.
Първо, когато се свързвате към mongodb чрез приложение, ще използвате драйвер. Този драйвер има бариери, през които трябва да премине, за да направи нещо със сървъра mongodb. Когато разберете тази концепция за бариерите, ще разберете и този въпрос.
Всяка връзка, която в крайна сметка се прави списък от неща, трябва да се случи, за да премине през бариерите и в крайна сметка да извърши операция за запис или четене.
Визуално можете да си представите това по следния начин:
*****Забележка**:Навсякъде по този конвейер възникне грешка въз основа на вашата логика, успешна операция за запис/четене може да не се случи.
Можем да мислим за бариери 1 - 3 като мрежови бариери за свързаност. Ако мрежата не работи или има проблеми, това са проблемите, които човек би забелязал чрез изчакване и обработка на изключения за тези изчаквания. Това, което човек трябва да разбере, е, че не можете да извършите операция за запис с опасения за запис, ако не можете да се свържете със сървъра на първо място. Урокът можеше да илюстрира тези точки.
Първият набор от бариери пред операция за запис или четене е да имате установена връзка със сървъра... Това е илюстрирано по-горе с бариери 1 - 3.
След това, след като имате връзка със сървъра чрез клъстер и/или набор от реплики на клъстери, тогава можете да дефинирате опасения за запис.
След като имаме установена връзка, записът може да не се случи по причини, различни от мрежовата свързаност. Това може да са сблъсъци на данни или прекомерно разпределение на записи поради DDOS или хакване или като цяло недостатъчно сървърно пространство за записване на данните на сървъра. Въпросът е, че нещо друго може да предизвика реакция на загрижеността за запис и следователно контрола чрез опции за обработка на грешките за загриженост за запис.
Надявам се това да помогне, защото ме накара да разбера въпроса и съответно правилния отговор. Най-вече не ни учеха на това, така че се надявам това да помогне на другите да научат и разберат тази верига за обратна връзка.
Ето някои статии, които прочетох, за да ми помогнат да стигна до този отговор/заключение. Ако някой има по-добро или подобрение на моето обяснение, моля, не се колебайте да предостави обратна връзка.
https://scalegrid.io/blog/understanding-mongodb-client- timeout-options/
https://scalegrid.io/blog/mongodb- write-concern-3-must-know-caveats/
https://docs.mongodb.com/manual/reference/write-concern/
https://www.mongodb.com/blog /post/server-selection-next-generation-mongodb-drivers