Etter et år med utvikling presenteres utgivelsen av det dokumentorienterte DBMS MongoDB 6.0, som opptar en nisje mellom raske og skalerbare systemer som opererer på data i nøkkel/verdi-formatet og relasjonell DBMS, funksjonell og praktisk i å generere spørringer. MongoDB-koden er skrevet i C++ og distribuert under SSPL-lisensen, som er basert på AGPLv3-lisensen, men er ikke åpen kildekode, da den inneholder et diskriminerende krav om å levere under SSPL-lisensen ikke bare selve applikasjonskoden, men også kildekoder for alle komponenter som er involvert i å tilby en skytjeneste.
MongoDB støtter lagring av dokumenter i et JSON-lignende format, har et ganske fleksibelt språk for å generere spørringer, kan lage indekser for ulike lagrede attributter, gir effektivt lagring av store binære objekter, støtter logging av operasjoner for å endre og legge til data til databasen, kan arbeid i samsvar med paradigmet Map/Reduce, støtter replikering og bygging av feiltolerante konfigurasjoner.
MongoDB har innebygd sharding (distribusjon av et datasett på tvers av servere basert på en spesifikk nøkkel), som, kombinert med replikering, lar deg bygge en horisontalt skalerbar lagringsklynge som ikke har noe enkelt feilpunkt (feil i en node påvirker ikke databasedriften), støtter automatisk feilgjenoppretting og overfører lasten fra en feilet node. Utvide en klynge eller konvertere en server Klyngen opprettes uten å stoppe databasen ved ganske enkelt å legge til nye maskiner.
Hovedtrekk ved den nye utgivelsen:
- Implementerte muligheten til å utføre spørringer som dekker data lagret i kryptert form (Queryable Encryption). Dataene dekrypteres på brukerens side og forblir krypterte under behandlingen av forespørselen (forespørselen utføres på krypterte data, uten å dekryptere dem først). I sin nåværende form er kun sammenligningsuttrykk tillatt i spørringer, men i fremtiden er det planlagt å legge til støtte for kontroll av områder, prefikser, suffikser, delstrenger og andre operasjoner.
- Mulighetene knyttet til lagring av data i form av en tidsserie (tidsseriesamlinger) har blitt utvidet, optimalisert for lagring av deler av parameterverdier registrert ved bestemte tidsintervaller (tid og et sett med verdier som tilsvarer denne tiden) , for eksempel oppstår behovet for å lagre slike data i overvåkingssystemer, finansielle plattformer, systemer for polling av sensorers tilstand. Den nye utgivelsen gir muligheten til å bruke sekundære og sammensatte indekser med samlinger av data i form av en tidsserie. Lagt til støtte for å legge ved tilleggsdata, for eksempel geografisk informasjon for å ta hensyn til avstand og plassering. Forbedret ytelse for lesing, spørring og sortering.
- Lagt til nye verktøy for sporing av endringer ("endringsstrømmer", API-endringsstrømmer), som du kan organisere sending av varsler til applikasjoner om dataendringer i databasen. Endringer rapporteres i sanntid og lar deg bygge applikasjoner ved å bruke reaktive og hendelsesdrevne programmeringsteknikker. Hendelser behandles ved hjelp av overvåkingsmetoden, når det er nødvendig kan hendelser filtreres ut og aggregeres ved hjelp av operatørene $match, $project og $redact. Den nye versjonen gir muligheten til å få den forrige og etterfølgende tilstanden til dokumentet (for eksempel når dokumentet slettes eller endres). I tillegg til datamanipulasjonsspråk (DML)-operasjoner, gis støtte for DDL-operasjoner (datadefinisjonsspråk) som å opprette og slette indekser og samlinger. Lagt til verktøy for filtrering av tilknyttede varsler.
- Operatorene $lookup og $graphlookup har full støtte for sharded storage. Ytelsen til $lookup-operasjonen har blitt optimalisert, for eksempel når det er en indeks på en fremmednøkkel, er matching av et lite antall dokumenter nå 5-10 ganger raskere, og et stort antall er dobbelt så raskt. For tilordninger uten bruk av indekser kan ytelsesforsterkningen være opptil 100x.
- Muligheten til å utføre komplekse analytiske spørringer på konsistente stykker (øyeblikksbilde) av status for produksjonsdata er gitt. Analytiske spørringer som dette kan spenne over flere shards i store distribuerte MongoDB-konfigurasjoner.
- Nye operatorer $maxN , $minN og $lastN er lagt til for å bestemme verdiene i et datasett, samt $sortArray-operatoren for å sortere matriseelementer.
- Effektiviteten til segmentering er betydelig forbedret. Standard blokkstørrelse for en fragmentert samling er økt til 128 MB. Lagt til kommandoen configureCollectionBalancing for å defragmentere en oppdelt samling.
- Støtte for KMIP-kompatible nøkkelleverandører er lagt til feltnivåkryptering på klientsiden (CSFLE).
- Lagt til muligheten til å komprimere og kryptere revisjonsloggen, som gjenspeiler aktiviteten til DBMS-brukere.
- En eksperimentell datasynkroniseringsmodus mellom MongoDB-klynger (Cluster-to-Cluster Sync) er implementert.
Kilde: opennet.ru
