Har du nogensinde undret dig over, hvorfor opdateringer og opgraderinger er så afgørende for ethvert system? Nå, det er ingen hemmelighed: De sikrer, at systemer forbliver relevante og effektive. Med MongoDB er det ikke anderledes. Hver gang vi tænker på opdatering, søger vi effektivitet, sikkerhed, ydeevne og andre fordele, der kommer med opdaterede systemer. Men hver opdatering introducerer ændringer, der skal håndteres omhyggeligt. Hvad er nyt i version 8.0? Den mest populære dokumentdatabase er nu hurtigere end nogensinde. er et fremragende valg for dem, der søger ydeevne, banebrydende teknologi og en intuitiv oplevelse. Det tilbyder en bemærkelsesværdig forbedring i gennemsnit og latens sammenlignet med tidligere versioner. Intern test mod 7.0 demonstrerer 32% hurtigere læsninger, 59% hurtigere opdateringer og 200%+ hurtigere tidsserieforespørgsler. Udgivelsen af denne seneste version fokuserer på flere centrale søjler: Brug af MongoDB 8.0 MongoDB 8.0 tilbyder betydelige ydeevneforbedringer, såsom hurtigere læsninger, skrivninger og bulk operationer. og Så hvis din applikation oplever høje belastninger, kan opgraderingen til 8.0 drastisk reducere responstider og forbedre gennemstrømningen, hvilket sikrer, at dit system forbliver skalerbart selv under tung brug. Performance improvement insertMany bulkInsert : I MongoDB 8.0, Indfører muligheden for at udføre rækkeforespørgsler på krypterede felter ved hjælp af $lt, $lte, $gt og $gte-operatorerne. Security Ønskelig kryptering Denne metode gør det muligt for applikationer at gå ud over grænserne for traditionelle databaser ved at sprede data på tværs af flere servere, kendt som shards, uden at skulle forberede store mængder ressourcer på forhånd. Resilience, scalability, and high availability Generelle ændringer Ønskelig kryptering Med den nye version giver Queryable Encryption dig mulighed for at søge inden for et område ved hjælp af operatorer som , der , der og , for eksempel at filtrere data efter specifikke intervaller, såsom datoer eller numeriske værdier, samtidig med at dataene er krypteret. $lt $lte gt $gte Ekspress forespørgselsfaser Express blev introduceret som et nyt eksekveringsstadium, der optimerer forespørgselsbanen til enkle brugssager. Hvis du kører en simpel forespørgsel, der bruger et enkelt _id-indeks, f.eks. db.customer.find({_id: ObjectId('670ec6b005b98857588f5b6a')}).explain() ...du vil se, at denne nye EXPRESS_IXSCAN fase er inkluderet. EXPRESS faser kan være en af følgende: EXPRESS_CLUSTERED_IXSCAN er udgivet Udtrykkeligt - Delete Ekspresset - Ekspresset Ekspress_opdatering I stedet for at udføre den klassiske plan fase, vil din forespørgsel nu bruge denne nye fase. Dette overskrider regelmæssig forespørgselsplanlægning og udførelse, hvilket giver op til 17% forbedring i ydeevne. Indstillinger for form og forespørgsel Forespørgselsformatet i MongoDB repræsenterer et sæt attributter, der grupperer lignende forespørgsler sammen, herunder filtre, sortering, projektioner, aggregeringsfaser og namespace. Dette gør det muligt for MongoDB at forbedre ydeevnen ved at genbruge forespørgselsplaner til strukturelt lignende forespørgsler, hvilket fører til mere effektiv udførelse. En sådan adfærd er den Når den anvendes, vil MongoDB automatisk afvise enhver forespørgsel, der matcher denne form, uanset dens specifikke værdier. reject: true Forestil dig, at du administrerer en database, der modtager forespørgsler fra tredjepartsapplikationer. Et program begynder at sende tunge forespørgsler, der udfører en samlingsscan (COLLSCAN), hvilket betydeligt bremser systemet - for eksempel en forespørgsel som: Use case: db.pizzaOrders.find({price: 10}) // Explain Plan "winningPlan": { "stage": "COLLSCAN", "filter": { "price": { "$eq": 20 } }, }, Vi kan indstille en forespørgselSettings til at afvise forespørgsler, der matcher denne struktur (uafhængig af værdierne): db.adminCommand( { setQuerySettings: { find: "pizzaOrders", filter: { price: 20 }, $db: "my_database" }, settings: { comment: "Will be rejected", reject: true } } ) Denne kommando angiver en forespørgselsform, hvor enhver forespørgsel, der søger efter I den vil blive afvist, uanset den faktiske værdi, der er angivet i forespørgslen. (Fokuset er helt på forespørgslens struktur.) Derfor, hvis vi udfører en forespørgsel, der matcher denne struktur... price pizzaOrders price db.pizzaOrders.find({price: 10}) ...forespørgslen vil automatisk blive afvist af MongoDB: Hvis du vil se alle forespørgselsindstillinger, kan du bruge $querySettings-fasen i et aggregeringsrør: db.aggregate( [ { $querySettings: {} } ] ) Resultatet af: [ { "queryShapeHash": "4DD2DED8A25C787DFA41325883052FABB97DDEE567B2636A3B188DDF0CCFE6F0", "settings": { "reject": true, "comment": "Will be rejected" }, "representativeQuery": { "find": "pizzaOrders", "filter": { "price": 20 }, "$db": "my_database" } } ] Men hvis du vil kontrollere forespørgselsformer – dvs. de forskellige typer af forespørgsler, der er blevet udført – har du to muligheder: Brug $QueryStats Denne aggregeringsfase giver statistikker om forespørgsler, der kører . since the last server restart use('admin'); db.aggregate( [ { $queryStats: {} } ] ) Dette hjælper med at analysere forespørgselsmønstre og optimere ydeevnen. Tjek MongoDB logs. Langsomme forespørgsler logges med deres forespørgselShapeHashes i MongoDB-logs. Dette er nyttigt til at identificere ineffektive forespørgsler, der kræver optimering. For at fjerne kan vi bruge hashformatet for forespørgsel: db.adminCommand( { removeQuerySettings: '4DD2DED8A25C787DFA41325883052FABB97DDEE567B2636A3B188DDF0CCFE6F0' } ) Denne tilgang er værdifuld, da den sikrer, at databasen ikke vil blive påvirket af tredjepartsforespørgsler, der kan forårsage højt ressourceforbrug. . without the need to make changes to the application Kompatibilitet og afskrivninger Ønsker adfærd før version 8.0, hvis du søgte efter værdier svarende til , felter med værdien vil også blive returneret. Men i denne nye version, data gemt som vil ikke længere blive returneret i forespørgsler med Ligestilling – for eksempel: null undefined undefined null // People collection [ { _id: 1, name: null }, { _id: 2, name: undefined } ] I betragtning af denne samling, hvis du kører følgende forespørgsel... db.people.find({name: null}) ... resultatet er: [ { _id: 1, name: null } ] Data med vil ikke længere blive returneret. Hvis din ansøgning indeholder data Du kan omskrive eller opgradere ubestemte data og forespørgsler for at tage hensyn til denne adfærdsmæssige ændring. undefined undefined : Den er blevet afbrudt, og i nogle tilfælde, hvis du forsøger at indsætte Det vil blive omdannet til . Note undefined undefined null Indeksfiltre Overvej at bruge , som diskuteret i afsnittet forespørgselsform i denne artikel, da indeksfiltre er deprecated i denne version. tilbyder betydeligt mere funktionalitet, hvilket gør det til det foretrukne valg. Med indeksfiltre nu nedsat, er det tilrådeligt at skifte til udnytte sine avancerede egenskaber. setQuerySettings setQuerySettings setQuerySettings Opgradering af planlægning og strategi Nu hvor du har set de nye funktioner i den nyeste version og besluttet at opgradere til den nyeste MongoDB-udgivelse, er der et par ting, du skal være opmærksom på. Husk, at hvert scenarie har sine egne karakteristika, og forståelse af, hvordan din applikation bruger MongoDB-funktioner, er afgørende for en effektiv opgradering. Forhåndsvurdering af opgraderingen Upgrade version path Alle Medlemmer skal køre version 7.0, før de opgraderer til version 8.0. Replik sæt Det er vigtigt at bemærke, at det ikke er muligt at opgradere direkte fra version 5.0-serien til 8.0, for eksempel, eller fra 6.0-serien til 8.0. For at gøre dette skal du opgradere successivt, version for version, indtil du når version 7.0. Review release notes Intet andet sted vil indeholde mere værdifulde oplysninger end Sørg altid for at være opmærksom på hver note udgivet, især for eventuelle banebrydende ændringer, nye funktioner og udtømte funktionaliteter. Release noter af versionen Release noter af versionen Check the driver compatibility Før du opgraderer noget Mongodb-relateret, er det afgørende at tjekke kompatibilitetstabellerne i dokumentationen til din driver. , skal du sørge for, at MongoDB-versionen er kompatibel med den MongoDB-driver, du planlægger at bruge. avoid breaking your application Vi kan se, at for at bruge alle funktionerne i MongoDB 8.0 skal du bruge driverversionen 5.2 til 5.3. Application drivers må muligvis opdateres for at drage fuld fordel af nyere serverfunktioner. Cluster health check Et andet afgørende punkt, før du starter opgraderingen, er at kontrollere sundheden for alle medlemmerne af dit replikasæt. **Sikre, at alle knudepunkter kører optimalt. **Du kan finde disse oplysninger ved at gå til menuen "Database Cluster" og klikke på din klynge: På denne skærm vil du bemærke, at hver node har en grøn prik ved siden af sit navn, hvilket indikerer, at sundheden er i orden. Staging cluster: your testing hub For at sikre en sikker opdatering og mindske risici er det vigtigt at arbejde med en Indstillingsmiljøet fungerer som en sikker zone for at teste nye versioner, funktioner og ændringer uden at påvirke slutbrugerne. Test af miljøet Oprettelse af et scenery cluster Dette trin indebærer oprettelse af en dedikeret klynge til testformål. Følg standardprocessen for at oprette en ny klynge, at simulere produktionsmiljøet nøjagtigt. sikrer, at den matcher den nuværende produktionsversion Opdatering af scenen med produktionsdata Gendannelse af en nylig sikkerhedskopi fra produktionsklyngen for at sikre, at produktionsmiljøet afspejler den aktuelle produktionsstatus. Du kan gøre dette via Atlas-grænsefladen ved at vælge sikkerhedskopien, vælge indstillingen gendannelse og målrette produktionsklyngen. Opgradering af scanning cluster til 8.0 Opdater klusteret til MongoDB 8.0 for at teste den nye version og dens funktioner. For at gøre dette skal du blot klikke på klusteret og vælge "Edit Configuration" og "Additional Settings": Test din ansøgning Kør test for at sikre, at alt fungerer som forventet, herunder både database- og applikationstest. Opgradering af produktionskluster Efter test i et scenemiljø skal du sørge for, at funktionskompatibilitetsversionen (FCV) er indstillet korrekt, før du opgraderer produktionsklusteren. giver et ekstra lag af sikkerhed under opgraderingsprocessen ved at kontrollere, hvilke funktioner i den nye MongoDB-version der er aktiveret i klyngen. Dette giver dig mulighed for gradvist at overgå til den nyeste version, så du sikrer, at alt fungerer korrekt, før du fuldt ud aktiverer de nye funktioner i produktionen. af FCV Selvom det ikke er obligatorisk, giver konfigurationen af FCV dig fleksibilitet. Hvis det er nødvendigt, kan du vende tilbage til den tidligere version ved at justere FCV-indstillingen. Dette sikrer, at du kan styre opgraderingen med minimal risiko og have mere kontrol over eventuelle potentielle problemer. Når du har konfigureret FCV (hvis det ønskes), kan du fortsætte med at opgradere produktionsklusteren.For at gøre dette skal du blot følge de samme trin, der er beskrevet i det foregående afsnit, men denne gang skal du anvende dem til produktionsklusteren. Overvågning Efteropgradering er lige så vigtigt som alle de foregående trin. Overvågning af driften er afgørende for at sikre succesen af processen. Nogle vigtige punkter at tjekke er: Overvåg sundheden af knudepunkterne for at sikre, at de fungerer korrekt. Node health • Hold øje med den læse- og skriveoperationer for at sikre, at der ikke er problemer med ydeevnen. Latency of operations Latens • Overvågning af sikrer, at de kører effektivt efter opgraderingen. Query performance Udførelse af forespørgsler Kontroller, at indekserne fungerer korrekt og optimer dem, hvis det er nødvendigt. Indexes Sidst men ikke mindst, tjek metrikken for hver node i din klynge. De vil give værdifuld indsigt i dit systems overordnede sundhed. Du kan finde dem i fanen "Metrikker" i din klynge: Tilbagekaldelse Sørg for at overvåge din MongoDB-klusters supportlivscyklus og holde dig opdateret om versioner, så du kan forberede dig på en problemfri og effektiv opgradering. Forstå, hvordan dit program interagerer med MongoDB-funktioner. Anerkend eventuelle nødvendige ændringer i din ansøgning. Planlæg din opgradering godt på forhånd. Glem ikke driveropdateringer. Udfør grundige tests, før du fortsætter med opgraderingen. Hvor kompleks er din opgradering? Nu hvor vi har skitseret de vigtigste trin for en vellykket opgradering – herunder præ-opgradering evaluering, staging cluster test og kontrol af driverkompatibilitet – lad os vurdere, hvor kompleks din opgradering kan være. Direkte opgraderinger Hvis du allerede er på MongoDB 7.0, har opdaterede drivere og kører på et fuldt understøttet Atlas-niveau, så er opgraderingen generelt hurtigere og enklere. Mere komplekse opgraderinger Hvis du bruger en ældre version (f.eks. 5.0 eller 6.0), skal du opgradere gradvist (f.eks. 5.0 → 6.0 → 7.0 → 8.0), som nævnt ovenfor. Da opgraderingstiden varierer væsentligt baseret på disse faktorer, bruger du en staging cluster som reference (diskuteret i det foregående afsnit) Mens denne tilgang ikke vil give en nøjagtig tid, kan det give dig en omtrentlig ide om den samlede opgraderingsvarighed, så du kan planlægge i overensstemmelse hermed. can help estimate the duration. Uanset kompleksiteten sikrer overholdelse af bedste praksis – f.eks. test af et scenemiljø og overvågning af klyngens sundhed – en glat og pålidelig overgang. Konklusionen Denne artikel fremhævede de vigtigste ændringer i den nyeste version, herunder kompatibilitetsbetragtninger, udtømte funktioner og bedste praksis for en jævn opgradering. Denne artikel er skrevet af Ricardo Mello, Senior Developer Advocate-São Paulo, Brasilien. Ricardo er fokuseret på Java og Kotlin, med certificeringer som MongoDB Associate Developer og Java SE 8 Programmer. Med 13 års erfaring som Software Engineer udnytter han sin ekspertise til at styrke udviklere og drive innovation hos MongoDB. Han er lidenskabelig om at dele viden og mener, at det er en af de bedste måder at bidrage til samfundet. Find ham på LinkedIn. Denne artikel er skrevet af Ricardo Mello, Senior Developer Advocate-São Paulo, Brasilien. Ricardo er fokuseret på Java og Kotlin, med certificeringer som MongoDB Associate Developer og Java SE 8 Programmer. Med 13 års erfaring som Software Engineer udnytter han sin ekspertise til at styrke udviklere og drive innovation hos MongoDB. Han er lidenskabelig om at dele viden og mener, at det er en af de bedste måder at bidrage til samfundet. Find ham på LinkedIn. af Ricardo Mello af Ricardo Mello af Linkedin