Alguna vegada t'has preguntat per què les actualitzacions i les actualitzacions són tan essencials per a qualsevol sistema? Bé, no és cap secret: asseguren que els sistemes segueixen sent rellevants i eficients. Amb MongoDB, no és diferent. Cada vegada que pensem en l'actualització, busquem l'eficiència, la seguretat, el rendiment i altres beneficis que vénen amb els sistemes actualitzats. Tanmateix, cada actualització introdueix canvis que han de ser gestionats amb cura. En aquest article, cobrirem algunes de les noves característiques de la versió 8.0 de MongoDB i destaquem les consideracions clau que haureu de tenir en compte abans d'actualitzar a aquesta nova versió. Què hi ha de nou a la versió 8.0? La base de dades de documents més popular és ara més ràpid que mai. és una excel·lent opció per a aquells que busquen rendiment, tecnologia d'avantguarda i una experiència intuïtiva. Ofereix una notable millora en la transmissió i la latència, en comparació amb versions anteriors. Les proves internes contra 7.0 demostren un 32% de lectures més ràpides, un 59% d'actualitzacions més ràpides i un 200% de consultes de sèrie de temps més ràpides. MongoDB 8.0 i més MongoDB 8.0 ofereix millores significatives en el rendiment, com ara lectures més ràpides, escriptures i operacions de volum. i Per tant, si la vostra aplicació experimenta càrregues altes, l'actualització a 8.0 pot reduir dràsticament els temps de resposta i millorar el rendiment, assegurant que el vostre sistema es mantingui escalable fins i tot sota un ús pesat. Performance improvement insertMany bulkInsert En el MongoDB 8.0, Introdueix la possibilitat d'executar consultes de rang en camps xifrats utilitzant els operadors $lt, $lte, $gt i $gte. Security Encriptació desitjable : Amb MongoDB 8.0, l'escalada horitzontal és ara més ràpida i més assequible. Aquest mètode permet a les aplicacions anar més enllà dels límits de les bases de dades tradicionals mitjançant la distribució de dades a través de múltiples servidors, coneguts com a fragments, sense necessitat de preparar grans quantitats de recursos per endavant. Resilience, scalability, and high availability Canvis generals Encriptació desitjable Amb la nova versió, Queryable Encryption permet cercar dins d'un rang, utilitzant operadors com , , , i , per exemple, per filtrar les dades per intervals específics, com ara dates o valors numèrics, mantenint les dades encriptades. $lt $lte gt $gte Expressa les etapes de la consulta Express va ser introduït com una nova etapa d'execució que optimitza el camí de consulta per a casos d'ús simples. db.customer.find({_id: ObjectId('670ec6b005b98857588f5b6a')}).explain() ... veureu que s'ha inclòs aquesta nova etapa EXPRESS_IXSCAN. Les etapes express poden ser una de les següents: EXPRESS_CLUSTERED_XIXCAN Expressió / Delete EXPRESS_IXCAN Expressió - Actualització En lloc d'executar l'etapa de pla clàssic, la consulta utilitzarà ara aquesta nova etapa. Això supera la planificació i l'execució regular de la consulta, proporcionant fins a una millora del 17% en el rendiment. Configuració i configuració de Query La forma de consulta en MongoDB representa un conjunt d'atributs que agrupen consultes similars juntament, incloent filtres, classificació, projeccions, fases d'agregació i l'espai de noms. Això permet a MongoDB millorar el rendiment mitjançant la reutilització dels plans de consulta per a consultes estructuralment similars, el que condueix a una execució més eficient. A partir de MongoDB 8.0, la forma de consulta dóna suport a la configuració de la consulta, permetent definir comportaments específics per a la correspondència de consultes. Un d’aquests comportaments és el Quan s'aplica, MongoDB rebutjarà automàticament qualsevol consulta que coincideixi amb aquesta forma, independentment dels seus valors específics. reject: true Imagineu que esteu gestionant una base de dades que rep consultes d'aplicacions de tercers. Una aplicació comença a enviar consultes pesades que realitzen una revisió de la col·lecció (COLLSCAN), que ralenti significativament el sistema, per exemple, una consulta com: Use case: db.pizzaOrders.find({price: 10}) // Explain Plan "winningPlan": { "stage": "COLLSCAN", "filter": { "price": { "$eq": 20 } }, }, Podem configurar una consultaSettings per rebutjar les consultes que coincideixin amb aquesta estructura (independentment dels valors): db.adminCommand( { setQuerySettings: { find: "pizzaOrders", filter: { price: 20 }, $db: "my_database" }, settings: { comment: "Will be rejected", reject: true } } ) Aquesta comanda estableix una forma de consulta on qualsevol consulta que busqui En la La convocatòria serà rebutjada, independentment de la situació actual. valor proporcionat en la consulta. (El focus es troba íntegrament en l'estructura de la consulta.) Per tant, si executem una consulta que coincideixi amb aquesta estructura... price pizzaOrders price db.pizzaOrders.find({price: 10}) ...la consulta serà rebutjada automàticament per MongoDB: Per veure totes les configuracions de la consulta, podeu utilitzar l'etapa $querySettings en una canonada d'agregació: db.aggregate( [ { $querySettings: {} } ] ) El resultat: [ { "queryShapeHash": "4DD2DED8A25C787DFA41325883052FABB97DDEE567B2636A3B188DDF0CCFE6F0", "settings": { "reject": true, "comment": "Will be rejected" }, "representativeQuery": { "find": "pizzaOrders", "filter": { "price": 20 }, "$db": "my_database" } } ] No obstant això, si voleu revisar les formes de consulta, és a dir, els diferents tipus de consultes que s'han executat, teniu dues opcions: Utilitza $QueryStats. Aquesta fase d'agregació proporciona estadístiques sobre l'execució de consultes . since the last server restart use('admin'); db.aggregate( [ { $queryStats: {} } ] ) Això ajuda a analitzar patrons de consulta i optimitzar el rendiment. Comproveu els registres de MongoDB. Les consultes lentes es registren amb la seva consultaShapeHashes als registres de MongoDB. Això és útil per identificar consultes ineficients que necessiten optimització. Per eliminar, podem utilitzar la forma de consulta hash: db.adminCommand( { removeQuerySettings: '4DD2DED8A25C787DFA41325883052FABB97DDEE567B2636A3B188DDF0CCFE6F0' } ) Aquest enfocament és valuós perquè assegura que la base de dades no es veurà afectada per consultes de tercers que puguin causar un alt consum de recursos. . without the need to make changes to the application Compatibilitat i depreciacions Comportament desitjat Abans de la versió 8.0, si heu buscat valors iguals a , camps amb el valor En aquesta nova versió, però, les dades emmagatzemades com ja no es retornarà en consultes amb Igualtat de gènere, per exemple: null undefined undefined null // People collection [ { _id: 1, name: null }, { _id: 2, name: undefined } ] Tenint en compte aquesta col·lecció, si executeu la següent consulta... db.people.find({name: null}) El resultat és: [ { _id: 1, name: null } ] Dades amb ja no es retornaran. Si la vostra sol·licitud conté dades amb Podeu reescriure o actualitzar dades i consultes no definides per explicar aquest canvi de comportament. undefined undefined : El ha estat depreciat, i en alguns casos, si intenteu inserir Es convertirà en . Note undefined undefined null Filtres d'Índex Considera utilitzar , tal com es va discutir en la secció de forma de consulta d'aquest article, ja que els filtres d'índex estan deprecats en aquesta versió. ofereix significativament més funcionalitat, fet que és l'elecció preferida. Amb els filtres d'índex ara deprecats, és aconsellable canviar a Aprofitar les seves característiques avançades. setQuerySettings setQuerySettings setQuerySettings Millora de la planificació i estratègia Ara que heu vist les noves característiques en l'última versió i heu decidit actualitzar a l'última versió de MongoDB, hi ha algunes coses que heu de tenir en compte. Tingueu en compte que cada escenari té les seves pròpies particularitats, i entendre com la vostra aplicació utilitza les característiques de MongoDB és crucial per a una actualització eficaç. Avaluació Pre-Upgrade Upgrade version path Totes Els membres han d'executar la versió 7.0 abans d'actualitzar a la versió 8.0. Replica del set És important tenir en compte que no és possible actualitzar directament de la versió 5.0 a la sèrie 8.0, per exemple, ni de la sèrie 6.0 a la sèrie 8.0. Review release notes Cap altre lloc contindrà informació més valuosa que la Sempre assegureu-vos de prestar atenció a cada nota alliberada, especialment per a qualsevol canvi de ruptura, noves característiques i funcionalitats deprecades. Notes de publicació de la versió Notes de publicació de la versió Check the driver compatibility Abans d'actualitzar qualsevol cosa relacionada amb Mongodb, és crucial comprovar les taules de compatibilitat en la documentació per al seu conductor. , haureu d'assegurar-vos que la versió de MongoDB és compatible amb el controlador de MongoDB que voleu utilitzar. avoid breaking your application Podem veure que per utilitzar totes les característiques de MongoDB 8.0, cal utilitzar el controlador versió 5.2 a 5.3. els controladors d'aplicacions poden necessitar ser actualitzats per aprofitar plenament les característiques del servidor més recent. Cluster health check Un altre punt crucial abans de començar la actualització és comprovar l'estat de salut de tots els membres del vostre conjunt de rèplica. **Assegureu-vos que tots els nodes funcionen de manera òptima. **Podeu trobar aquesta informació accedint al menú "Base de dades" i fent clic al vostre clúster: En aquesta pantalla, es notarà que cada node té un punt verd al costat del seu nom, indicant que la salut està bé. Staging cluster: your testing hub Per garantir una actualització segura i mitigar els riscos, és essencial treballar amb una L'entorn d'escenari actua com una zona segura per provar noves versions, característiques i canvis sense afectar els usuaris finals. Proves ambientals Creació d'un clúster Aquest pas implica la creació d'un clúster dedicat per a fins de prova. Seguiu el procés estàndard per configurar un nou clúster, Simular amb precisió l’entorn de producció. Assegureu-vos que coincideix amb la versió de producció actual Refrescar l'etapa amb dades de producció Restaureu una còpia de seguretat recent del clúster de producció per assegurar-vos que l'entorn d'etapa reflecteix l'estat actual de la producció.Podeu fer-ho a través de la interfície d'Atlas seleccionant la còpia de seguretat, seleccionant l'opció de restauració i apuntant el clúster d'etapa. Actualitzar el clúster d'etapa a 8.0 Actualitzeu el clúster d'etapa a MongoDB 8.0 per provar la nova versió i les seves característiques. Per fer-ho, feu clic al clúster i seleccioneu "Edit Configuration" i "Additional Settings": Test de la teva aplicació Executar proves per assegurar-se que tot funciona com s'esperava, incloent-hi proves de base de dades i aplicacions. Actualització del clúster de producció Després de provar-ho en un entorn d'establiment, assegureu-vos que la versió de compatibilitat de característiques (FCV) està configurada adequadament, abans d'actualitzar el clúster de producció. proporciona una capa addicional de seguretat durant el procés d'actualització controlant quines característiques de la nova versió de MongoDB estan habilitades en el clúster. Això li permet passar gradualment a l'última versió, assegurant-se que tot funciona correctament abans d'activar completament les noves característiques en la producció. FCV Tot i que no és obligatori, configurar el FCV li dóna flexibilitat. Si cal, pot tornar a la versió anterior ajustant la configuració del FCV. Això assegura que pot gestionar el procés d'actualització amb un risc mínim i tenir més control sobre qualsevol problema potencial. Un cop configurat el FCV (si es desitja), es pot actualitzar el clúster de producció. Per fer-ho, només cal seguir els mateixos passos descrits a la secció anterior, però aquesta vegada, aplicar-los al clúster de producció. Monitorització La post-actualització és tan important com tots els passos anteriors.El seguiment de l'operació és crucial per assegurar l'èxit del procés. Alguns punts importants per comprovar són: : Monitoritzar la salut dels nodes per assegurar-se que funcionen correctament. Node health Mantenir un ull sobre la Operacions de lectura i escriptura per assegurar que no hi hagi problemes de rendiment. Latency of operations La latència Monitorització de la per assegurar-se que funcionen de forma eficient després de l'actualització. Query performance Execució de peticions Verificar que els índexs funcionen correctament i optimitzar-los si cal. Indexes Finalment, però no menys important, comproveu les mètriques per a cada node del vostre clúster. Ells proporcionaran una visió valuosa de la salut general del vostre sistema. Els podeu trobar a la pestanya "Mètriques" del vostre clúster: Recull Assegureu-vos de monitoritzar el cicle de vida del vostre clúster MongoDB i mantenir-vos actualitzats sobre les versions, de manera que pugueu preparar-vos per a una actualització sense problemes i eficient. Comprendre com la seva aplicació interactua amb les característiques de MongoDB. Reconeix qualsevol canvi necessari a la teva sol·licitud. Planifica la teva actualització amb antelació. No oblideu les actualitzacions dels conductors. Realitzeu proves minucioses abans de procedir a l'actualització. Quina complexitat té l’actualització? Ara que hem descrit els passos clau per a una actualització reeixida, incloent-hi l'avaluació de pre-upgrade, la prova de clúster en etapes i la comprovació de la compatibilitat dels controladors, anem a avaluar la complexitat de la seva actualització. Actualitzacions directes Si ja esteu en MongoDB 7.0, teniu els controladors actualitzats i esteu executant en un nivell d'Atlas totalment compatible, llavors l'actualització és generalment més ràpida i més senzilla. Millores més complexes Si utilitzeu una versió més antiga (per exemple, 5.0 o 6.0), haureu d'actualitzar progressivament (per exemple, 5.0 → 6.0 → 7.0 → 8.0), com es va esmentar anteriorment. Atès que el temps d'actualització varia significativament en funció d'aquests factors, utilitzant un clúster d'etapa com a referència (discutit en la secció anterior) Tot i que aquest enfocament no proporcionarà un temps exacte, us pot donar una idea aproximada de la durada total de la actualització, permetent-vos planificar en conseqüència. can help estimate the duration. Independentment de la complexitat, seguir les millors pràctiques, com ara provar un entorn d'escenari i monitoritzar la salut del clúster, garanteix una transició suau i fiable. Conclusió Aquest article va destacar els canvis clau en l'última versió, incloent consideracions de compatibilitat, característiques deprecades i millors pràctiques per a una actualització suau. Aquest article va ser escrit per Ricardo Mello, Senior Developer Advocate-São Paulo, Brasil. Ricardo es centra en Java i Kotlin, amb certificacions com a MongoDB Associate Developer i Java SE 8 Programmer. Amb 13 anys d'experiència com a enginyer de programari, aprofita la seva experiència per empoderar els desenvolupadors i impulsar la innovació a MongoDB. Està apassionat de compartir coneixement, creient que és una de les millors maneres de contribuir a la comunitat. Troba'l a LinkedIn. Aquest article va ser escrit per Ricardo Mello, Senior Developer Advocate-São Paulo, Brasil. Ricardo es centra en Java i Kotlin, amb certificacions com a MongoDB Associate Developer i Java SE 8 Programmer. Amb 13 anys d'experiència com a enginyer de programari, aprofita la seva experiència per empoderar els desenvolupadors i impulsar la innovació a MongoDB. Està apassionat de compartir coneixement, creient que és una de les millors maneres de contribuir a la comunitat. Troba'l a LinkedIn. Ricardo Mello Ricardo Mello Linkedin