sql >> Base de Datos >  >> NoSQL >> MongoDB

Novedades en MongoDB 4.4

MongoDB 4.4 (actualmente en versión beta) se está implementando con la agenda principal de abordar las sugerencias de los desarrolladores de la comunidad de MongoDB. Esta versión se lanzó para aumentar la capacidad de la base de datos para operar a una escala conveniente y confiable, por lo tanto, se desarrolló bajo el principio de "ingeniería impulsada por el usuario" para permitirle ofrecer numerosas funciones mejoradas.

Características mejoradas en MongoDB 4.4

Lecturas cubiertas

El enrutador de consultas MongoDB emite solicitudes de lectura en paralelo a varios conjuntos de réplicas y se devuelven los resultados de los datos del nodo más eficiente, lo que reduce la latencia de la aplicación.

Claves compartidas definibles

Agregar sufijos a una clave fragmentada después de modificar la distribución de datos durante el proceso de escalado.

Lecturas reflejadas

Esta es una característica que precalienta cachés de réplicas secundarias para reducir las consecuencias de las elecciones primarias que pueden resultar del mantenimiento planificado o interrupciones.

Mejoras de agregación

La mejora de agregación tiene varias mejoras, incluida la definición y el vestuario de expresiones de agregación, la combinación de datos de varias colecciones de mongo en un solo conjunto de resultados, la manipulación de cadenas y nuevos operadores en el manejo de matrices. Las siguientes son algunas de las mejoras:

$fuera

La operación $out se ha mejorado para enviar los resultados de la colección a diferentes bases de datos, a diferencia de una versión anterior que solo podía enviar a una colección en la misma base de datos que la agresión.

$indexStats

$indexStats tiene nuevos resultados de campo en MongoDB 4.4 que incluye campos:

edificio

Es una bandera booleana, que indica el índice que se está construyendo.

especificación

Documento de especificaciones para cada índice

fragmento

El nombre específico de un fragmento si es necesario

$combinar

En MongoDB 4.4, $merge se ha mejorado para mostrar en la misma colección que se está actualizando. Además, también se puede generar una colección que aparece en la canalización como $búsqueda.

Cambios en $planCacheStats

El estado de $planCacheStats se ha mejorado para ejecutar instancias de mongod y mongos en MongoDB 4.4. Además, $planCacheSTats tiene un nuevo campo conocido como campo de host cuando se ejecuta mongo. PlanCache.list() es un contenedor para la etapa de agregación $planCacheStats.

Cambios de $collStats

$collStats se ha hecho para aceptar las estadísticas ejecutivas de consulta durante la documentación de aumento. Además, Exploraciones de colección como campos con la siguiente descripción;

Nombre de campo

Descripción

no extensible

Este es un número entero de 64 bits que realiza un escaneo de colección en varias consultas que no usan un cursor rastreable.

total

Total es una colección de consultas realizadas con un escaneo de colección que no usa un cursor rastreable.

$uniónCon Agregación

MongoDB ha agregado $unionWith, una función que unifica los conjuntos de colecciones, es decir, une los resultados de una canalización de varias colecciones en un solo conjunto.

$unionCon sintaxis

$unionWith tiene la siguiente sintaxis general:

cd{ $unionWith: { coll: "<collection>", pipeline: [ <stage1>, ... ] } }

$unionWith tiene una versión simplificada de la sintaxis que se usa para incluir todos los documentos de una colección:

{ $unionWith: "<collection>" }  // include all documents from the specified collection

$agregación de acumuladores

$acumulador es otra característica nueva en MongoDB 4.4 que especifica un operador acumulador personalizado. Los acumuladores son operadores que no cambian de estado a medida que los documentos avanzan a lo largo de la canalización. Puede usar un operador $accumulator para ejecutar funciones de JavaScript que no son compatibles con MongoDB. $acumulador se encuentra en las siguientes tres etapas de canalización:

  1. Etapa de $bucket:solo genera documentos que contienen no menos de una entrada de documento.
  2. $group stage:Ingresa documentos por _id especificado y genera un documento para cada grupo en particular
  3. Etapa $bucketAuto:ordena las entradas de documentos en números de grupos específicos conocidos como cubos.

Sintaxis

La sintaxis de $acumulador es la siguiente:

{ $accumulator:{

init: <code>,

initArgs: <array expression>,    // Optional

accumulate: <code>,

accumulateArgs: <array expression>,

merge: <code>,

finalize: <code>, // Optional

lang: <string>

  }}

$función Agregación

$function aggregation define una función de agregación en JavaScript.

El operador de función $ se puede usar para definir funciones para usar comportamientos que no son compatibles con MongoDB

La sintaxis de $función es la siguiente:

{

  $function: {

body: <code>,

args: <array expression>,

lang: "js"

  }

}

Otras características incluidas en la última versión de MongoDB 4.4 son:problemas de escritura, lecturas globales, replicación de secuencias, sincronización inicial reanudable y fragmento hash compuesto.

¿Qué hay de nuevo en los conjuntos de réplicas de MongoDB?

Sincronización inicial reanudable

MongoDB 4.4 tiene una función que intenta reanudar un proceso de sincronización interrumpido.

Replicaciones de transmisión

En las versiones anteriores de MongoDB, los secundarios recopilaban lotes de oplog mediante una solicitud emitida para sincronizar desde la fuente. Con MongoDB 4.4, los procesos de sincronización desde las fuentes enviarán flujos continuos de entradas de registro de operaciones a los procesos de sincronización secundarios.

Directorio de reversión

Desde MongoDB 4.4 en la reversión, el directorio de la colección recibe el nombre según el UUID de la colección y el espacio de nombres de la colección.

Periodo mínimo de retención de Oplog

A partir de MongoDB 4.4, es posible especificar el número mínimo de horas que desea conservar una entrada de registro de operaciones.

Cambios en la reconfiguración del conjunto de réplicas

MongoDB 4.4 tiene un comando llamado replSetReconfig que permite agregar o eliminar no más de un votante a la vez. Otra característica nueva en MongoDB 4.4 son los cambios en replSetGetConfig. MongoDB 4.4 replSetConfig puede estipular una nueva opción compromisoEstado.

Claves fragmentadas hash compuestas

A partir de MongoDB 4.4, puede fragmentar una colección utilizando una clave de fragmento compuesta con un solo campo con hash. Antes de 4.4, MongoDB no admitía claves de fragmentos compuestos con un campo hash. La fragmentación hash compuesta admite características como la fragmentación de zona, donde el prefijo (es decir, el primero) campo o campos sin hash admiten rangos de zona, mientras que el campo hash admite una mayor distribución de los datos fragmentados. Por ejemplo, la siguiente operación fragmenta una colección en una clave de fragmento hash compuesta que admite la fragmentación por zonas:

sh.shardCollection(

  "examples.compoundHashedCollection",

  { "fieldA" : 1, "fieldB" : 1, "fieldC" : "hashed" }

)

Mejoras generales en clústeres fragmentados

Comprobaciones de coherencia de índice

En MongoDB 4.4, el servidor de configuración esencialmente, de forma predeterminada, verifica las irregularidades de los archivos en los fragmentos para las colecciones fragmentadas. El comando serverStatus devuelve el campo shardedIndexConsistency para informar sobre las irregularidades del archivo cuando se ejecuta en el servidor de configuración esencial. En MongoDB 4.4, tendrá más de una operación removeShard por adelantado. En adaptaciones anteriores, removeShard devuelve un error en caso de que haya otra operación removeShard por adelantado.

Límite de clave fragmentada

A partir del formulario 4.4, MongoDB elimina la restricción de 512 bytes en la estimación de clave de fragmento. Para MongoDB 4.2 y versiones anteriores, una clave de fragmento no puede superar los 512 bytes.

Actualización de caché de catálogo mejorada

En MongoDB 4.4, en caso de que haya un fragmento antiguo, la memoria caché del catálogo lo reactiva para obtener un fragmento que tenga el fragmento.

MongoDB 4.4 tiene enableFinerGrainedCatalogCacheRefresh, que es un parámetro para impedir la reactivación de la memoria caché del catálogo. enableFinerGrainedCatalogCacheRefresh se centra en el fragmento y utiliza el comportamiento de reactivación de caché de catálogo más experimentado.

El parámetro enableFinerGrainedCatalogCacheRefresh por defecto es verdadero.

Mejoras en consultas y fragmentación en MongoDB 4.4

MongoDB tiene la tradición de escalar continuamente a través de la distribución de datos en múltiples nodos o mediante fragmentación. Una clave fragmentada contiene un documento porque la clave fragmentada de un documento determinado solo se puede cambiar antes de una asignación y no después de una asignación.

La evolución de MongoDB ha dificultado la recalibración de fragmentos de un contenido proporcionado en MongoDB. Para permitir el reequilibrio, la versión MongoDB 4.4 ha introducido claves fragmentadas refinables que permiten modificar las claves fragmentadas de los documentos.

Las claves de fragmentos refinables permiten cambiar un cambio en las claves de fragmentos de documentos al permitir que los documentos que pertenecen juntos en un fragmento cambien sus requisitos y, por lo tanto, se reequilibran dinámicamente.

El reequilibrio puede realizarse mediante programación o de forma agresiva, según cómo lo vea el usuario a lo largo del tiempo.

Otras mejoras

Agregación de la colección MongoDB cuando diferentes conjuntos de datos permiten consultas a través de uniones. Tal capacidad permite el tratamiento de datos de manera diferente y no como un ETL separado.

Los datos se pueden mover y consolidar en el servidor y pasar al cliente, y el proceso no requiere múltiples viajes para administrar un resultado completo.

$function es una agregación personalizada que permite la ejecución de agregaciones más complejas en el lado del servidor y mejora el proceso de procesamiento de datos.

Varias versiones de procedimientos disfrazados aparecen en el MongoDB 4.4 publicado. Las funciones disfrazadas se han relacionado con el mayor rendimiento de la versión beta. No obstante, la función $ solo se invoca cuando otras funciones disfrazadas e integradas no son suficientes en el proceso en curso.

Lenguaje de consulta y controladores de MongoDB

  1. Las apariencias de agregación personalizada tienen una función de propietario que amplía MongoDB como parte de la tubería de ejecución de agregación.
  2. Union Aggregation tiene un análisis y una exploración más profundos a través de la combinación de datos de varias colecciones en la canalización de Union Aggregation.
  3. Inquietudes de escritura y lectura global para escribir la durabilidad y configurar el aislamiento de lectura del clúster.
  4. Controladores Swift y New Rust
  5. Flexibilidad y rendimiento escalados hacia fuera
  6. Streaming Replication and Simultaneous Indexing reduce el retraso de la réplica para entregar datos a los usuarios en MongoDB 4.4.
  7. Los resultados se devuelven lo antes posible debido a que las lecturas cubiertas minimizan las latencias p65 y p99 al enviar una solicitud de lectura a varias réplicas de datos en MongoDB.
  8. La retención de la localidad de los datos, ya que las claves hash compuestas se distribuyen uniformemente en varios fragmentos con su clave de fragmento.
  9. No hay sistema en el centro al definir y refinar la clave de fragmento en un momento dado.

Resiliencia y Seguridad

  1. La autenticación en MongoDB 4.4 beta es un 50 % más rápida y es TLS 1.3.
  2. La conexión a MongoDB Atlas requiere la autenticación AWS IASM, que simplifica la seguridad nativa de la nube al reutilizar la credencial temporal de Amazon IAM y la regular existente.
  3.  Recupera nodos mediante la sincronización inicial reanudable que facilita el proceso de escalamiento horizontal al agregar nuevas réplicas. Impacto reducido de las elecciones primarias por Mirrored Reads calentando los cachés de la secundaria después de un mantenimiento planificado o una interrupción.

Conclusión

MongoDB 4.4 ha desatado una mejor experiencia en una base de datos basada en documentos no relacionales al mejorar las funciones de rendimiento en su sistema. Las mejoras han permitido aplicaciones analíticas, operativas y transaccionales más rápidas con MongoDB 4.4.

MongoDB 4.4 también ha permitido flexibilidad al definir la distribución de datos a medida que cambian los requisitos de operación. La mejora realizada en MongoDB 4.4 lo ha hecho más confiable en términos de latencia, sofisticación y control de seguridad al usar Mongo Atlas, que es la nube.