MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Разликата между мажоритарния и линеаризиращия се

Подлежащи на линеаризация " загрижеността за четене беше въведена в MongoDb 3.4 за разрешаване на възможен проблем с "мнозинството „Прочетете загриженост.

Нека се опитаме да разберем проблема с „мнозинството " прочетете загриженост, за да усетите какво е "Linearizable “ ни носи.

Да предположим, че имаме набор от реплики от 3 възела, който изглежда по следния начин:

Къде,А е Основен,Б е ВторСт е вторичен

Нека имаме и двама потребители Alice и Боб , който ще извършва някои операции върху следния документ, който се намира в „потребители " колекция.

{
 "_id": 100234,
 "name": "Katelyn"
}

В момента T0:

се случва следното,

  1. Алис се свързва с A (основен) и издава следната команда.

Изход:

  1. Б иC осъзнава, чеА спря да отговаря и започва процедура за избор. (Може да се дължи на разделяне на мрежата ).

В момент T1:

се случва следното,

  1. Поради изборния процес B е нов първичен избор .

Въпреки това до моментА не е съобщено или сат осъзнава, че трябва да се понижи до второстепенно, което продължава да служи като основно (това обикновено е за много кратък период от време).

В момент T2:

  1. Боб се свързва с B (нов първичен) и издава следната команда.
  1. Боб е признат за писане.

В момент T3:

  1. Алис се свързва с A (стар основен) и издава следната команда.

Изход:

Алис тук получава остарелите данни дори след издаване на проблема с мнозинството четене, т.е. записът, направен от Боб, не е видим за Алис. По този начин свойството „Линеаризация " се компенсира в този случай.

Следователно идва решението, т.е. „линеаризирано " загриженост за четене. С това свойство mongod проверява своя първичен и може да види мнозинството от възли, преди да издаде резултатите от операцията за четене. Въпреки това, има неустойка за производителност при използване на тази загриженост за четене над "мнозинство", следователно това не е заместител на "мнозинство" прочетете загриженост.

Относно writeConcernMajorityJournalDefault свойство, това е просто опция за конфигуриране на набор от реплики. Приема булева стойност .

Вярно означава, че MongoDB потвърждава операцията за запис, след като мнозинството от членовете с право на глас са записали в дневника на диска.

Невярно означава, че MongoDB потвърждава операцията за запис, след като мнозинството от членовете с право на глас са приложили операцията в паметта.

Свойството по-горе е приложимо само когато се използва "мнозинство" при писане и флагът за журналиране не е посочен.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb получава последния вмъкнат документ

  2. Връщане на елементи от вътрешен масив от множество документи в сортирана форма

  3. Получаване на необходимите документи от двете колекции в една заявка в MongoDB-3.2.7

  4. Грешка при показване на php

  5. MongoDB $trim