¿Alguna vez te has preguntado por qué las actualizaciones y actualizaciones son tan esenciales para cualquier sistema? Bueno, no es ningún secreto: aseguran que los sistemas permanezcan relevantes y eficientes. Con MongoDB, no es diferente. Cuando pensamos en la actualización, buscamos la eficiencia, la seguridad, el rendimiento y otros beneficios que vienen con los sistemas actualizados. Sin embargo, cada actualización introduce cambios que necesitan ser cuidadosamente gestionados. En este artículo, cubriremos algunas de las nuevas características de la versión 8.0 de MongoDB y destacaremos las principales consideraciones que debes tener en cuenta antes de actualizar a esta nueva versión. ¿Qué hay de nuevo en la versión 8.0? La base de datos de documentos más popular ahora es más rápido que nunca. es una excelente opción para aquellos que buscan rendimiento, tecnología de vanguardia y una experiencia intuitiva. Ofrece una notable mejora en la transmisión y la latencia, en comparación con las versiones anteriores. Las pruebas internas contra 7.0 demuestran lecturas 32% más rápidas, actualizaciones 59% más rápidas y consultas de serie de tiempo 200% más rápidas. El lanzamiento de esta última versión se centra en varios pilares clave: El MongoDB 8.0 MongoDB 8.0 ofrece mejoras significativas en el rendimiento, como lecturas más rápidas, escritos y operaciones en masa. y Por lo tanto, si su aplicación experimenta cargas altas, la actualización a 8.0 puede reducir drásticamente los tiempos de respuesta y mejorar el rendimiento, asegurando que su sistema permanezca escalable incluso bajo un uso pesado. Performance improvement insertMany bulkInsert : En MongoDB 8.0, Introduce la posibilidad de realizar consultas de rango en campos cifrados utilizando los operadores $lt, $lte, $gt y $gte. Security Encrypción deseable : Con MongoDB 8.0, el escalado horizontal es ahora más rápido y más asequible. Este método permite a las aplicaciones ir más allá de los límites de las bases de datos tradicionales distribuyendo datos a través de múltiples servidores, conocidos como fragmentos, sin tener que preparar grandes cantidades de recursos de antemano. Resilience, scalability, and high availability Cambios generales Encrypción deseable Con la nueva versión, Queryable Encryption le permite buscar dentro de un rango, utilizando operadores como , de , de , y , por ejemplo, para filtrar datos por intervalos específicos, como fechas o valores numéricos, manteniendo los datos encriptados. $lt $lte gt $gte Expresar las etapas de la consulta Express se introdujo como una nueva etapa de ejecución que optimiza el camino de la consulta para casos de uso simples. Si está ejecutando una consulta simple que utiliza un único índice _id, por ejemplo... db.customer.find({_id: ObjectId('670ec6b005b98857588f5b6a')}).explain() ...verá que esta nueva etapa EXPRESS_IXSCAN ha sido incluida. Las etapas expresas pueden ser una de las siguientes: EXPRESS_CLUSTERED_IXSCAN EXPRESS_DELETE EXPRESS_IXCAN Expreso - Actualizaciones En lugar de ejecutar la etapa de plan clásico, su consulta ahora utilizará esta nueva etapa. Esto salta la planificación y ejecución regular de la consulta, lo que proporciona hasta una mejora del 17% en el rendimiento. Configuración y configuración de Query Shape La forma de consulta en MongoDB representa un conjunto de atributos que agrupa consultas similares juntas, incluyendo filtros, clasificación, proyecciones, etapas de agregación y el espacio de nombres. Esto permite a MongoDB mejorar el rendimiento al reutilizar los planes de consulta para consultas estructuralmente similares, lo que lleva a una ejecución más eficiente. A partir de MongoDB 8.0, la forma de consulta soporta la configuración de la consulta, lo que le permite definir comportamientos específicos para la combinación de consultas. Uno de estos comportamientos es el Cuando se aplica, MongoDB rechazará automáticamente cualquier consulta que coincida con esta forma, independientemente de sus valores específicos. reject: true Imaginemos que está gestionando una base de datos que recibe consultas de aplicaciones de terceros. Una aplicación comienza a enviar consultas pesadas que realizan una exploración de la colección (COLLSCAN), lo que ralentiza significativamente el sistema, por ejemplo, una consulta como: Use case: db.pizzaOrders.find({price: 10}) // Explain Plan "winningPlan": { "stage": "COLLSCAN", "filter": { "price": { "$eq": 20 } }, }, Podemos establecer una consultaConfiguración para rechazar consultas que coincidan con esta estructura (independiente de los valores): db.adminCommand( { setQuerySettings: { find: "pizzaOrders", filter: { price: 20 }, $db: "my_database" }, settings: { comment: "Will be rejected", reject: true } } ) Este comando establece una forma de consulta en la que cualquier consulta que busque En la La recopilación será rechazada, independientemente de la valor proporcionado en la consulta. (El foco está enteramente en la estructura de la consulta.) Por lo tanto, si ejecutamos una consulta que coincide con esta estructura... price pizzaOrders price db.pizzaOrders.find({price: 10}) ...la consulta será rechazada automáticamente por MongoDB: Para ver todas las configuraciones de la consulta, puede utilizar la etapa $querySettings en un tubo de agregación: db.aggregate( [ { $querySettings: {} } ] ) El resultado: [ { "queryShapeHash": "4DD2DED8A25C787DFA41325883052FABB97DDEE567B2636A3B188DDF0CCFE6F0", "settings": { "reject": true, "comment": "Will be rejected" }, "representativeQuery": { "find": "pizzaOrders", "filter": { "price": 20 }, "$db": "my_database" } } ] Sin embargo, si desea inspeccionar las formas de consulta, es decir, los diferentes tipos de consultas que se han ejecutado, tiene dos opciones: Uso de $QueryStats. Esta fase de agregación proporciona estadísticas sobre la ejecución de consultas . since the last server restart use('admin'); db.aggregate( [ { $queryStats: {} } ] ) Esto ayuda a analizar patrones de consulta y optimizar el rendimiento. Comprobar los registros de MongoDB. Las consultas lentas se registran con sus consultasShapeHashes en los registros de MongoDB. Esto es útil para identificar consultas ineficientes que necesitan optimización. Para eliminar, podemos utilizar el hash de forma de consulta: db.adminCommand( { removeQuerySettings: '4DD2DED8A25C787DFA41325883052FABB97DDEE567B2636A3B188DDF0CCFE6F0' } ) Este enfoque es valioso ya que asegura que la base de datos no sea afectada por consultas de terceros que podrían causar un alto consumo de recursos. . without the need to make changes to the application Compatibilidad y depreciaciones Querer comportamiento Antes de la versión 8.0, si buscaba valores iguales a , campos con el valor también se devolvería. Sin embargo, en esta nueva versión, los datos almacenados como ya no serán devueltos en consultas con La igualdad, por ejemplo: null undefined undefined null // People collection [ { _id: 1, name: null }, { _id: 2, name: undefined } ] Teniendo en cuenta esta colección, si ejecutas la siguiente consulta... db.people.find({name: null}) ... el resultado es: [ { _id: 1, name: null } ] Datos con ya no serán devueltos. Si su solicitud contiene datos con , puede reescribir o actualizar datos y consultas indefinidos para explicar este cambio de comportamiento. undefined undefined : El tipo ha sido depreciado, y en algunos casos, si intenta insertar Se convertirá en . Note undefined undefined null Filtros de índice Considera el uso , como se discutió en la sección de forma de consulta de este artículo, ya que los filtros de índice se deprecian en esta versión. ofrece significativamente más funcionalidad, por lo que es la opción preferida. Con los filtros de índice ahora deprecados, es aconsejable cambiar a aprovechar sus características avanzadas. setQuerySettings setQuerySettings setQuerySettings Mejorar la planificación y la estrategia Ahora que has visto las nuevas características en la última versión y has decidido actualizar a la última versión de MongoDB, hay algunas cosas que debes tener en cuenta.Este tema describirá algunas estrategias y pasos que son ideales para garantizar una actualización suave y exitosa de un conjunto de réplica en MongoDB Atlas. Tenga en cuenta que cada escenario tiene sus propias particularidades, y entender cómo su aplicación utiliza las características de MongoDB es crucial para una actualización efectiva. Evaluación previa a la actualización Upgrade version path todo Los usuarios deben estar utilizando la versión 7.0 antes de actualizar a la versión 8.0. Replica del set Es importante tener en cuenta que no es posible actualizar directamente de la versión 5.0-series a 8.0, por ejemplo, ni de la 6.0-series a 8.0. Para hacerlo, debe actualizar sucesivamente, versión por versión, hasta llegar a la versión 7.0. Review release notes Ningún otro lugar contendrá información más valiosa que la Siempre asegúrese de prestar atención a cada nota liberada, especialmente para cualquier cambio revolucionario, nuevas características y funcionalidades deprecadas. release notes of the version Publicación de notas de la versión Check the driver compatibility Antes de actualizar cualquier cosa relacionada con Mongodb, es crucial comprobar las tablas de compatibilidad en la documentación para su conductor. , debe asegurarse de que la versión de MongoDB es compatible con el controlador de MongoDB que planea usar. avoid breaking your application Podemos ver que para utilizar todas las características de MongoDB 8.0, es necesario utilizar el controlador versión 5.2 a 5.3. Los controladores de aplicaciones pueden tener que ser actualizados para aprovechar plenamente las características de los servidores más nuevos. Cluster health check Otro punto crucial antes de comenzar la actualización es comprobar la salud de todos los miembros de su conjunto de réplica. **Asegúrese de que todos los nodos estén funcionando de forma óptima. **Puede encontrar esta información accediendo al menú "Base de datos" y haciendo clic en su clúster: En esta pantalla, notará que cada nodo tiene un punto verde junto a su nombre, indicando que la salud está bien. Staging cluster: your testing hub Para garantizar una actualización segura y mitigar los riesgos, es esencial trabajar con un El entorno de escenografía actúa como una zona segura para probar nuevas versiones, características y cambios sin afectar a los usuarios finales. Probar el medio ambiente Creación de un cluster Este paso implica crear un clúster dedicado para fines de prueba. Siga el proceso estándar para configurar un nuevo clúster, para simular con precisión el entorno de producción. garantizar que coincida con la versión de producción actual Refrescar el escenario con los datos de producción Restaurar una copia de seguridad reciente del clúster de producción para asegurarse de que el entorno de escalada refleje el estado actual de la producción.Puede hacerlo a través de la interfaz Atlas seleccionando la copia de seguridad, seleccionando la opción de restauración y apuntando al clúster de escalada. Actualizar el clúster de escalas a 8.0 Actualizar el clúster de escalas a MongoDB 8.0 para probar la nueva versión y sus características. Para ello, simplemente haga clic en el clúster y seleccione “Edit Configuration” y “Additional Settings”: 4.- Pruebe su aplicación Execute pruebas para asegurarse de que todo funcione como se esperaba, incluyendo pruebas de base de datos y de aplicaciones. Actualización del Cluster de Producción Después de probar en un entorno de estadio, asegúrese de que la versión de compatibilidad de características (FCV) esté configurada adecuadamente, antes de actualizar el clúster de producción. proporciona una capa adicional de seguridad durante el proceso de actualización al controlar qué características de la nueva versión de MongoDB están habilitadas en el clúster. Esto le permite pasar gradualmente a la versión más reciente, asegurándose de que todo funciona correctamente antes de habilitar completamente las nuevas características en la producción. El FCV Aunque no es obligatorio, configurar el FCV le da flexibilidad. Si es necesario, puede volver a la versión anterior ajustando la configuración del FCV. Esto asegura que puede gestionar el proceso de actualización con un riesgo mínimo y tener más control sobre cualquier problema potencial. Una vez que haya configurado el FCV (si lo desea), puede proceder con la actualización del clúster de producción. Para ello, simplemente siga los mismos pasos que se describen en la sección anterior, pero esta vez, apliquelos al clúster de producción. Monitorización El post-upgrade es tan importante como todos los pasos anteriores.El seguimiento de la operación es crucial para garantizar el éxito del proceso. Algunos puntos importantes para comprobar son: Monitorizar la salud de los nodos para asegurarse de que estén funcionando correctamente. Node health Mantenga un ojo en la operaciones de lectura y escritura para asegurarse de que no hay problemas de rendimiento. Latency of operations La latencia Monitor de la para garantizar que funcionen de manera eficiente después de la actualización. Query performance El desempeño de las consultas Verificar que los índices estén funcionando correctamente y optimizarlos si es necesario. Indexes Por último, pero no menos importante, compruebe las métricas para cada nodo de su clúster. Ellos proporcionarán una valiosa visión de la salud general de su sistema. Puedes encontrarlas en la pestaña "Métricas" de tu clúster: Recuperación Asegúrese de monitorear el ciclo de vida del soporte de su clúster MongoDB y mantenerse actualizado sobre las versiones, para que pueda prepararse para una actualización suave y eficiente. Comprender cómo su aplicación interactúa con las funciones de MongoDB. Reconocer cualquier cambio necesario en su solicitud. Planifique su actualización con antelación. No olvide las actualizaciones de los conductores. Realizar pruebas minuciosas antes de proceder a la actualización. ¿Qué tan compleja es su actualización? Ahora que hemos descrito los pasos clave para una actualización exitosa, incluyendo la evaluación de pre-actualización, la prueba de clúster en etapa y la verificación de la compatibilidad de los controladores, evaluemos lo complejo que puede ser su actualización. Actualizaciones directas Si ya está en MongoDB 7.0, tiene controladores actualizados y está ejecutando en un nivel Atlas totalmente soportado, entonces la actualización es generalmente más rápida y más sencilla. En estos casos, la configuración de un clúster de escalada, la validación de la salud y la ejecución de la actualización se pueden completar de manera eficiente, a menudo con un mínimo o ningún tiempo de inactividad. Actualizaciones más complejas Si está en una versión anterior (por ejemplo, 5.0 o 6.0), tendrá que actualizar progresivamente (por ejemplo, 5.0 → 6.0 → 7.0 → 8.0), como se mencionó anteriormente. Además, si sus controladores están desactualizados o tiene configuraciones personalizadas, el proceso puede tardar varias horas y requerir pruebas más rigurosas para evitar problemas de compatibilidad. Dado que el tiempo de actualización varía significativamente en función de estos factores, utilizando un clúster de estacionamiento como referencia (discutido en la sección anterior) Si bien este enfoque no proporcionará un tiempo exacto, puede darle una idea aproximada de la duración total de la actualización, lo que le permite planificar en consecuencia. can help estimate the duration. Independientemente de la complejidad, seguir las mejores prácticas, como probar un entorno de escenario y monitorear la salud del clúster, garantiza una transición suave y confiable.El esfuerzo vale la pena, ya que la actualización desbloquea un mejor rendimiento, mejoras de seguridad y nuevas características. Conclusión Este artículo destacó cambios clave en la última versión, incluyendo consideraciones de compatibilidad, características deprecadas y mejores prácticas para una actualización suave.Al comprender estos aspectos, puede asegurar una transición sin problemas a MongoDB 8.0 y seguir beneficiándose de sus capacidades mejoradas. Este artículo fue escrito por Ricardo Mello, Senior Developer Advocate-São Paulo, Brasil. Ricardo se centra en Java y Kotlin, con certificaciones como MongoDB Associate Developer y Java SE 8 Programmer. Con 13 años de experiencia como ingeniero de software, aprovecha su experiencia para empoderar a los desarrolladores y impulsar la innovación en MongoDB. Es apasionado por compartir conocimiento, creyendo que es una de las mejores maneras de contribuir a la comunidad. Este artículo fue escrito por Ricardo Mello, Senior Developer Advocate-São Paulo, Brasil. Ricardo se centra en Java y Kotlin, con certificaciones como MongoDB Associate Developer y Java SE 8 Programmer. Con 13 años de experiencia como ingeniero de software, aprovecha su experiencia para empoderar a los desarrolladores y impulsar la innovación en MongoDB. Es apasionado por compartir conocimiento, creyendo que es una de las mejores maneras de contribuir a la comunidad. Ricardo Mello Ricardo Mello Linkedin