Efter ett Ärs utveckling har den dokumentorienterade databashanteraren MongoDB 6.0 presenterats, vilken fyller en nisch mellan snabba och skalbara system som hanterar data i formatet nyckel/vÀrde och relationsdatabaser, som Àr funktionella och lÀtta att skapa frÄgor för. Koden för MongoDB Àr skriven i C++ och distribueras under SSPL-licensen, som baseras pÄ AGPLv3-licensen, men som inte Àr öppen, eftersom den innehÄller diskriminerande krav pÄ att leverera under SSPL-licensen inte bara programkoden utan ocksÄ kÀllkoden för alla komponenter som Àr involverade i att tillhandahÄlla molntjÀnsten.
MongoDB stöder lagring av dokument i JSON-liknande format, har ett tillrÀckligt flexibelt sprÄk för att formulera frÄgor, kan skapa index för olika lagrade attribut, effektivt lagra stora binÀra objekt, stöder loggning av operationer för att Àndra och lÀgga till data i databasen, kan arbeta enligt Map/Reduce-paradigmen, stöder replikering och uppbyggnad av hög tillgÀngliga konfigurationer.
MongoDB har inbyggda medel för att sÀkerstÀlla segmentering (fördelning av dataset över servrar baserat pÄ ett visst nyckel), i kombination med replikering möjliggörs skapandet av en horisontellt skalbar lagringskluster, dÀr det inte finns nÄgon enskild felpunkt (ett fel pÄ vilken nod som helst pÄverkar inte databasen), automatiserad ÄterhÀmtning frÄn fel och lastbalansering frÄn den noder som har havererat. Utvidgning av klustret eller omvandling av en servern till ett kluster sker utan att stoppa databasen genom att helt enkelt lÀgga till nya maskiner.
Huvuddrag i den nya versionen:
- Möjlighet till att utföra frÄgor som omfattar data som lagras i krypterad form (Queryable Encryption) har implementerats. Data dekrypteras pÄ anvÀndarsidan och förblir krypterade under behandlingen av frÄgan (frÄgan utförs pÄ de krypterade data utan att först dekryptera dem). I nuvarande form Àr endast jÀmförelseuttryck tillÄtna i frÄgorna, men det planeras att i framtiden lÀgga till stöd för intervallkontroll, prefix, suffix, delstrÀngar och andra operationer.
- Möjligheterna för datalagring i form av tidsserier har utökats, optimerade för att lagra avsnitt av vÀrden för parametrar som registreras vid bestÀmda tidsintervall (tid och uppsÀttning vÀrden relaterade till denna tid), till exempel behovet av att lagra sÄdana data uppstÄr i övervakningssystem, finansplattformar och sensorspÄrningssystem. I den nya versionen har möjligheten att anvÀnda sekundÀra och sammansatta index med datakollektioner i form av tidsserier införts. Stöd för att bifoga ytterligare data, exempelvis geografisk information för att beakta avstÄnd och platser, har lagts till. Prestandan för lÀsning, frÄgeexekvering och sortering har förbÀttrats.
- Nya verktyg för att spÄra Àndringar (Àndringsströmmar, API Change Streams) har lagts till, vilket möjliggör meddelanden till applikationer om Àndringar i databasen. Information om Àndringar kommer i realtid och gör det möjligt att skapa applikationer med hjÀlp av reaktiva och hÀndelseorienterade programmeringsmetoder. HÀndelser behandlas med metoden watch, dÀr nödvÀndiga hÀndelser kan filtreras och aggregeras med hjÀlp av operatorerna $match, $project och $redact. I den nya versionen har möjligheten att fÄ föregÄende och efterföljande tillstÄnd av dokumentet införts (till exempel nÀr ett dokument har tagits bort eller Àndrats). Förutom operationer med hjÀlp av DML (data manipulation language) har stöd för DDL (data definition language) operationer, som skapande och borttagning av index och kollektioner, lagts till. Verktyg för att filtrera associerade meddelanden har ocksÄ införts.
- I operatorerna $lookup och $graphlookup har fullstÀndig support för partitionerade (sharded) lagringslösningar implementerats. Prestandan för operationen $lookup har optimerats, till exempel nÀr ett index pÄ den externa nyckeln finns, sÄ utförs matchning av ett litet antal dokument nu 5-10 gÄnger snabbare, medan ett stort antal matchningar gÄr dubbelt sÄ snabbt. För matchningar utan att anvÀnda index kan prestandaförbÀttringen nÄ upp till 100 gÄnger.
- Möjligheten att utföra komplexa analytiska förfrÄgningar pÄ konsekventa skÀrningar (snapshot) av arbetsdata har lagts till. SÄdana analytiska förfrÄgningar kan omfatta flera segment i stora distribuerade konfigurationer av MongoDB.
- Nya operatorer $maxN, $minN och $lastN har lagts till för att bestÀmma vÀrden i datamÀngden, liksom operatorn $sortArray för att sortera element i en array.
- Effektiviteten i segmenteringen har ökat avsevÀrt. Det standardblock som anvÀnds för segmenterade samlingar har ökat till 128 MB. Kommandot configureCollectionBalancing har lagts till för att defragmentera segmenterade samlingar.
- Stöd för KMIP-kompatibla nyckelprovider har lagts till i klienten för fÀlt-nivÄ datakryptering (CSFLE, client-side field-level encryption).
- Möjligheten att komprimera och kryptera auditloggen, som reflekterar aktivitet frÄn databasanvÀndare, har lagts till.
- Ett experimentellt lÀge för datasykronisering mellan MongoDB-kluster (Cluster-to-Cluster Sync) har implementerats.
KĂ€lla: opennet.ru
