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

Преглед на WiredTiger Storage Engine за MongoDB

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

По-долу е илюстриран прост цикъл на приложение към db система...

Пример за обща архитектура на приложението

WiredTiger Storage Engine

MongoDB поддържа основно 3 механизма за съхранение, чиято производителност се различава в зависимост от някои специфични натоварвания. Механизмите за съхранение са:

  1. WiredTiger Storage Engine
  2. Механизъм за съхранение в паметта
  3. MMAPv1 Storage Engine

Машината за съхранение на WiredTiger има и двете конфигурации на B-Tree Based Engine и Log Structured Merge Tree Based Engine.

Базиран двигател на B-Tree

Това е един от древните двигатели за съхранение, от които са получени други сложни настройки. Това е самобалансираща се дървовидна структура от данни, която осигурява сортиране на данните и позволява търсене, последователен достъп, вмъкване и изтриване по логаритмичен начин. Това е базирано на редове съхранение, така че всеки ред се счита за единичен запис в базата данни

Предимства на B-Tree Storage Engine

  • Висока пропускателна способност и ниска латентност при четене. B-Trees има тенденция да нарастват широки и плитки, така че се преминават много малко възли.
  • Поддържа ключовете в сортиран ред за последователно преминаване, а индексите са балансирани с рекурсивен алгоритъм.
  • Вътрешните възли за съхранение винаги се поддържат поне наполовина пълни, което като цяло намалява загубата.
  • Лесен за обработка на голям брой вмъквания и изтривания за кратък период от време.
  • Йерархичното индексиране се използва с цел намаляване на четенията на диска.
  • Ускорява вмъкванията и изтриванията чрез използване на частично пълни блокове.

Ограничения на механизма за съхранение на B-Tree

  • Слаба производителност на запис поради необходимостта от осигуряване на добре подредена структура от данни с произволно записване. Случайното записване е по-скъпо от последователното записване в паметта.
  • Наказание за готовност за промяна и запис на цял блок дори за незначителна актуализация на ред в блок.

Двигател, базиран на структурирано дърво за сливане

Поради лошата производителност на запис на B-Tree Based Engine, разработчиците трябваше да измислят начин да се справят с по-големи набори от данни към СУБД. По този начин е създадена Log Structured Merge Tree Based Engine (LSM Tree) за подобряване на производителността за индексиран достъп до файлове с голям обем на запис за продължителен период от време. В този случай произволните записи на първия етап на каскадна памет се превръщат в последователни записи в първия компонент, базиран на диск.

Предимства на LSM Tree Storage Engine

  • Възможността за бързо последователно записване подобрява бързото обработване на големи бързоразрастващи се данни.
  • Добре подходящ за многостепенно съхранение, което дава на организациите по-добър избор по отношение на разходите и производителността. В този случай базираните на Flash SSD осигуряват страхотна производителност.
  • По-добра компресия и ефективност на съхранение, следователно спестяване на място за съхранение и подобряване на почти пълното съхранение
  • Данните винаги са налични за заявка незабавно.
  • Вмъкванията са много бързи.

Ограничения на механизма за съхранение на B-Tree

Консумирайте повече памет в сравнение с B-Tree по време на операции за четене поради усилване на четене и пространство. Въпреки това, някои подходи като филтри за разцвет са смекчили този ефект на практика, така че броят на файловете, които трябва да се проверяват по време на точкова заявка, е намален.

Технологията WiredTiger е проектирана по начин да използва предимствата както на B-Tree, така и на LSM, което я прави усъвършенствана и най-добрата машина за съхранение за MongoDB. IT всъщност е машината за съхранение по подразбиране на MongoDB.

Severalnines Станете DBA на MongoDB – Пренасяне на MongoDB в Производството Научете какво трябва да знаете, за да внедрите, наблюдавате, управлявате и мащабирате MongoDB Изтеглете безплатно

Архитектура на WiredTiger Storage Engine

Както бе споменато по-горе, той включва концепцията за два основни механизма за съхранение, които са B-Tree и LSM Tree двигателите, следователно това е мултиверсионна машина за едновременно управление (MVCC). Предимствата на двете комбинирани позволяват на системата да види моментна снимка на базата данни в момента, в който тя осъществява достъп до колекция. Контролните точки се установяват така, че последователен изглед на данните се записва на диск между контролните точки. В случай на срив между контролните точки е лесно да се възстанови с тези контролни точки или по-скоро, дори и да няма контролни точки за данни, човек може да ги възстанови от файлове на дневника на диска.

Широко използване на кеша вместо диск за подобряване на ниската латентност. Двигателят за съхранение на WiredTiger разчита до голяма степен на кеша на страниците на операционната система, така че компресираните данни се извличат, без да се включва дискът. Освен това най-малко използваните данни се изчистват от RAM паметта, като се запазва повече място за кеша.

Концепцията за съхранение на B-Tree предлага високоефективно четене и добра производителност при запис с ниско използване на процесора. Той също така има реализация на заключване на ниво документ, която позволява много едновременни работни натоварвания и това паралелност следователно улеснява сървъра да се възползва от много основни процесори. Като цяло, всички тези подобряват високата мащабируемост на базата данни.

Корпоративното издание поддържа криптиране на диска за механизма за съхранение на WiredTiger, което е функция, която значително подобрява сигурността на данните.

Двигателят за съхранение на WiredTiger дава възможност за записване напред, което гарантира автоматично възстановяване при срив и прави записите трайни.

Предимства на WiredTiger Storage Engine

  • Ефективно съхранение благодарение на множество технологии за компресиране, като компресия на Snapp, gzip и префикс.
  • Той е силно мащабируем с едновременно четене и запис. Това в крайна сметка подобрява пропускателната способност и общата производителност на базата данни.
  • Осигурете трайност на данните с дневник за запис напред и използване на контролни точки.
  • Оптимално използване на паметта. WiredTiger използва както вътрешния кеш, така и кеша на файловата система.
  • С кеша на файловата система MongoDB може лесно да използва свободната памет, която не се използва от кеша на WiredTiger.

Неуспехи на WiredTiger Storage Engine

Трудности при актуализиране на данните. Схемата за паралелност предотвратява актуализации на място, така че актуализирането на стойност на поле в документ пренаписва целия документ.

Заключение

Двигателят за съхранение на WiredTiger интегрира концепции от два основни двигателя за съхранение, B-Tree и LSM дърво за съхранение, за да постигне максимална и оптимална производителност. Претеглянето на предимствата от двата случая и колективното им използване прави WiredTiger двигател за съхранение с общо предназначение. Поради тази причина в текущите версии на MongoDB това е машината за съхранение по подразбиране. Това означава, че ако наистина нямате сериозна причина да го мразите, тогава това е най-доброто за вашите данни. Изборът на механизма за съхранение обаче до голяма степен разчита на вашия случай на използване на данни или по-скоро там, където WiredTiger не може да отговори на вашите очаквания. Като цяло, това е най-добрият механизъм за съхранение по подразбиране.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Попълване на мангуста след запазване

  2. MongoDB $atanh

  3. Как да стартирате js файл в mongo с помощта на spring data

  4. MongoDB сортиране

  5. MongoDB $ конвертиране