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

Какво е новото в MongoDB 4.4

MongoDB 4.4 (понастоящем в бета версия) се въвежда с основния дневен ред за адресиране на предложенията на разработчиците от общността на MongoDB. Тази версия е пусната, за да увеличи способността на базата данни да работи в удобен и надежден мащаб, следователно разработена по принципа на „управлявано от потребителя инженерство“, за да даде възможност да предоставя множество подобрени функции.

Подобрени функции в MongoDB 4.4

Хеджирани четения

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

Дефинируеми споделени ключове

Добавяне на суфикси към ключ на шард след промяна на разпределението на данни по време на процеса на мащабиране.

Огледално четене

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

Подобрения на агрегирането

Подобрението на агрегирането има различни подобрения, включително дефиниране и костюмиране на Aggregation Expressions, комбиниране на данни от множество колекции mongo в един набор от резултати, манипулиране на низове и нови оператори в обработката на масиви. Следват някои от подобренията:

$out

Операцията $out е подобрена за извеждане на резултатите от събирането в различни бази данни, за разлика от по-ранна версия, която може да извежда само в колекция в същата база данни, в която е била агресията.

$indexStats

$indexStats има нови изходни полета в MongoDB 4.4, които включват полета:

сграда

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

спец.

Документ със спецификация за всеки индекс

шард

Специфичното име на фрагмент, ако е необходимо

$merge

В MongoDB 4.4 $merge е подобрено за извеждане в същата колекция, която се надгражда. Освен това може да се изведе и в колекция, която се появява в конвейера като $lookup.

$planCacheStats Промени

Състоянието на $planCacheStats е подобрено за стартиране както на mongod, така и на mongos инстанции в MongoDB 4.4. Освен това, $planCacheSTats има ново поле, известно като хост поле, когато се изпълнява mongo. PlanCache.list() е обвивка за етап на агрегиране на $planCacheStats.

$collStats Промени

$collStats е направено да приема статистиката на заявката exec по време на документацията за разширяване. Освен това Колекция сканира като полета със следното описание;

Име на поле

Описание

nonTailble

Това е 64-битово цяло число, което извършва колекция сканиране на няколко заявки, които не използват tailable курсор.

общо

Total е колекция от заявки, извършено сканиране на колекцията, която не използва курсор за опашване.

$unionWith Aggregation

MongoDB добави $unionWith, функция, която обединява набори от колекции, тоест обединява резултати от конвейер от няколко колекции в един набор.

$unionWith Syntax

$unionWith има следния общ синтаксис:

cd{ $unionWith: { coll: "<collection>", pipeline: [ <stage1>, ... ] } }

$unionWith има опростена версия на синтаксиса, който се използва за включване на всички документи от колекция:

{ $unionWith: "<collection>" }  // include all documents from the specified collection

$accumulator агрегиране

$accumulator е друга нова функция в MongoDB 4.4, която определя персонализиран акумулаторен оператор. Акумулаторите са оператори, които не променят състоянието си, докато документите напредват по тръбопровода. Можете да използвате оператор $accumulator за изпълнение на функции на JavaScript, които не се поддържат от MongoDB. $accumulator се намира в следните три етапа на конвейера:

  1. $bucket етап:Извежда само документи, съдържащи не по-малко от един въведен документ.
  2. Етап на $group:Въвежда документи чрез определен _id и извежда документ за всяка конкретна група
  3. Етап $bucketAuto:Сортира записите в документи в конкретни номера на групи, известни като кофи.

Синтаксис

Синтаксисът за $accumulator е както следва:

{ $accumulator:{

init: <code>,

initArgs: <array expression>,    // Optional

accumulate: <code>,

accumulateArgs: <array expression>,

merge: <code>,

finalize: <code>, // Optional

lang: <string>

  }}

$function Aggregation

$function агрегирането дефинира функция за агрегиране в JavaScript.

$function операторът може да се използва за дефиниране на функции за използване на поведение, което не се поддържа от MongoDB

Синтаксисът за функцията $ е както следва:

{

  $function: {

body: <code>,

args: <array expression>,

lang: "js"

  }

}

Други функции, включени в най-новата версия на MongoDB 4.4, са:проблеми при запис, глобални четения, репликация на поток, възобновяема първоначална синхронизация и съставен хеширан фрагмент.

Какво е новото с комплектите реплики на MongoDB?

Първоначално синхронизиране с възможност за възобновяване

MongoDB 4.4 има функция, която се опитва да възобнови прекъснат процес на синхронизиране.

Поточно репликации

В предишните версии на MongoDB второстепенните събираха партиди от oplog по заявка, издадена за синхронизиране от източника. С MongoDB 4.4, синхронизиращите процеси от източниците ще изпращат непрекъснати потоци от записи в oplog към вторичните синхронизиращи процеси.

Директория за връщане назад

От MongoDB 4.4 при връщане назад, на директорията на колекцията се дава името според UUID на колекцията и пространството от имена на колекцията.

Минимален период на задържане на Oplog

От MongoDB 4.4 нататък е възможно да посочите най-малкия брой часове, които искате да запазите запис в oplog.

Промени в преконфигурирането на набора от реплики

MongoDB 4.4 има команда, наречена replSetReconfig, която позволява добавяне или премахване на не повече от един гласоподавател наведнъж. Друга нова функция в MongoDB 4.4 са промените в replSetGetConfig. MongoDB 4.4 replSetConfig може да зададе нова опция commitmentStatus.

Съставни хеширани ключове на фрагменти

Започвайки от MongoDB 4.4, можете да разделите колекция, като използвате сложен ключ за сегменти с едно хеширано поле. Преди 4.4, MongoDB не поддържаше съставни ключове на сегменти с хеширано поле. Съставното хеширано разделяне поддържа функции като разделяне на зона, където префиксът (т.е. първото) нехеширано поле или полетата поддържат диапазони на зони, докато хешираното поле поддържа по-голямо разпространение на разделените данни. Например, следната операция разделя колекция на съставен хеширан ключ на фрагмент, поддържащ зонирано разделяне:

sh.shardCollection(

  "examples.compoundHashedCollection",

  { "fieldA" : 1, "fieldB" : 1, "fieldC" : "hashed" }

)

Общи подобрения на разчленени клъстери

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

В MongoDB 4.4 конфигурационният сървър по същество, по подразбиране, проверява за нередности на файловете върху фрагментите за разчленени колекции. Командата serverStatus връща полето shardedIndexConsistency, за да докладва за нередности на файловете, когато се изпълнява на конфигурационния сървър. В MongoDB 4.4 ще имате повече от една операция removeShard предварително. В предишни  адаптации removeShard връща грешка, ако е предварителна друга операция removeShard.

Ограничение на ключа на сегмента

Започвайки от формуляр 4.4, MongoDB премахва ограничението от 512 байта за оценката на ключа на сегмента. За MongoDB 4.2 и по-ранна версия, ключът на шарда не може да надхвърля 512 байта.

Подобрено опресняване на кеша на каталога

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

MongoDB 4.4 има enableFinerGrainedCatalogCacheRefresh, който  е параметър за нарушаване на съживяването на кеша на каталога. enableFinerGrainedCatalogCacheRefresh се фокусира върху шарда и използва по-опитното поведение за съживяване на кеша на каталога.

Параметърът enableFinerGrainedCatalogCacheRefresh по подразбиране е true.

Подобрения в заявките и разделянето в MongoDB 4.4

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

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

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

Ребалансирането може да бъде програмно или агресивно в зависимост от това как потребителят го гледа във времето.

Други подобрения

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

Данните могат да се преместват и консолидират на сървъра и да се предават на клиента, като процесът не изисква многократни пътувания за управление на пълен резултат.

$функцията е сред обичайното агрегиране, което позволява изпълнението на по-сложни агрегации от страна на сървъра и подобрява процеса на обработка на данни.

В пуснатата MongoDB 4.4 се появяват различни процедури с костюмирани версии. Костюмираните функции са свързани с повишената производителност на бета версията. Независимо от това, функцията $ се извиква само когато други костюмирани и вградени функции не са достатъчни в текущия процес.

Език за заявки и драйвери на MongoDB

  1. Персонализираните изяви на агрегиране имат функцията на собствениците, разширяваща MongoDB като част от тръбопровода за изпълнение на агрегиране.
  2. Union Aggregation има по-задълбочен анализ и проучване чрез смесване на данни от множество колекции в тръбопровода Union Aggregation.
  3. Притеснения за писане и глобално четене за издръжливост на запис и конфигуриране на изолация за четене на клъстер.
  4. Swift драйвери и New Rust
  5. Увеличена гъвкавост и производителност
  6. Поточното репликация и едновременното индексиране намаляват забавянето на репликата, за да обслужват данни на потребителите в MongoDB 4.4.
  7. Резултатите се връщат възможно най-скоро поради хеджираните четения, които минимизират латентностите p65 и p99 чрез подаване на заявка за четене до множество реплики на данни в MongoDB.
  8. Запазването на локалността на данните като комбинирани хеширани ключове се разпределят равномерно между различни сегменти с техния ключ за сегменти.
  9. Без система в центъра при дефиниране и прецизиране на ключа на сегмента по всяко време.

Устойчивост и сигурност

  1. Удостоверяването в MongoDB 4.4 бета е над 50% по-бързо и е TLS 1.3.
  2. Връзката с MongoDB Atlas изисква AWS IASM удостоверяване, което опростява естествената сигурност в облака чрез повторно използване на временни идентификационни данни на Amazon IAM и съществуващи редовни.
  3.  Възстановява възли чрез възобновяема първоначална синхронизация, което улеснява процеса на мащабиране чрез добавяне на нови реплики. Намалено въздействие на първичните избори от Mirrored Reads, затоплящи кешовете на вторичните след планирана поддръжка или прекъсване.

Заключение

MongoDB 4.4 даде по-добро изживяване в нерелационни документи, базирани на база данни, като подобри характеристиките за производителност в своята система. Подобренията позволиха по-бързи аналитични, оперативни и транзакционни приложения с MongoDB 4.4.

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Комбинирайте пълния текст с друг индекс

  2. MongoDB $pow

  3. MongoDB премахване()

  4. Отидете:Създайте io.Writer интерфейс за регистриране в базата данни mongodb

  5. Създайте уебсайт за онлайн магазин за хранителни стоки, използвайки Angular, NodeJS, Express и MongoDB