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

Трябва ли да активирате журналирането на MongoDB?

MongoDB използва дневник на диска, за да гарантира операции по запис и да осигури устойчивост на сривове. MongoDB също така създава дневник за всяко записване, което включва точното местоположение на диска и байтовете, които са се променили при записа. По този начин, ако имате срив в сървъра, дневникът може да се използва за възпроизвеждане на всякакви записи, които все още не са записани във файловете с данни.

MongoDB използва картографирани файлове в паметта, за да запише вашите данни на диск. По подразбиране файловете с данни на MongoDB се изхвърлят на диск на всеки 60 секунди. Те също така използват картографирани файлове в паметта за дневника и по подразбиране дневникът се изхвърля на диск на всеки 100 ms. Тъй като окончателните файлове с данни се изхвърлят на диска на всеки 60 секунди, дневникът не трябва да проследява записите за повече от една минута. За повече подробности относно механиката на воденето в дневник вижте официалната документация. За да разберете как работи картографирането на изгледите по-подробно, можете да разгледате блога на Кристина.

Притеснение при записване в дневник

>db.data.insert({"name":"testentry"});
>db.runCommand({"getLastError":1, "j":true});

Когато включите журнирането на MongoDB, вие също имате възможността да посочите проблем за запис в MongoDB на „Журналирано“ за вашите операции в MongoDB. Това означава, че MongoDB потвърждава операцията за запис само след ангажимент към дневника. Това обаче има недостатък – когато посочите „j”:true с getLastError, MongoDB ще изчака около 1/3 от вътрешното записване на дневника, преди да запише данните на журнала. Интервалът за записване на журнала по подразбиране е 100ms – така че MongoDB ще изчака 30ms и ще запише данните. Това по същество означава, че в една нишка можете да получите само около 33,3 записа/секунда и препоръчителната най-добра практика е да групирате записите си. Например, ако имате 50 записа, използвайте настройката „j”:true само при последното записване – това ще потвърди, че всички предишни 50 записа са извършени.

Резюме

Всяка производствена инстанция на MongoDB трябва да работи с активирано водене на журнал. Ако нямате активирано водене на журнал и вашият сървър или процесът на MongoDB се срине, MongoDB няма да може да гарантира целостта на данните. Ще трябва да изпълните операция за „поправяне“ на базата данни, която, в зависимост от количеството данни, може да отнеме няколко часа. Изключете го само ако наистина знаете какво правите. В ScaleGrid всички наши екземпляри следват конфигурацията на най-добрите практики на MongoDB и воденето на журнали е включено по подразбиране.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Преглед на индексирането на база данни за MongoDB

  2. Как да задам стойност по подразбиране на цяло число в mongodb?

  3. Поточно предаване от курсор на mongodb до Express отговор в node.js

  4. Най-добри практики за сигурност на MongoDB

  5. Как да сортирам в мангуста?